Catch some exceptions

This commit is contained in:
Ricki Hirner 2021-01-11 20:04:07 +01:00
parent 51c96a50c0
commit 4a89bb762e
2 changed files with 45 additions and 36 deletions

View file

@ -128,39 +128,42 @@ class AccountSettings(
val taskAuthority = TaskUtils.currentProvider(context)?.authority
val am = AccountManager.get(context)
for (account in am.getAccountsByType(context.getString(R.string.account_type))) {
val settings = AccountSettings(context, account)
for (account in am.getAccountsByType(context.getString(R.string.account_type)))
try {
val settings = AccountSettings(context, account)
// repair address book sync
settings.getSavedAddressbooksSyncInterval()?.let { shouldBe ->
val current = settings.getSyncInterval(addressBooksAuthority)
if (current != shouldBe) {
Logger.log.warning("${account.name}: $addressBooksAuthority sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(addressBooksAuthority, shouldBe)
}
}
// repair calendar sync
settings.getSavedCalendarsSyncInterval()?.let { strInterval ->
val shouldBe = strInterval.toLong()
val current = settings.getSyncInterval(CalendarContract.AUTHORITY)
if (current != shouldBe) {
Logger.log.warning("${account.name}: ${CalendarContract.AUTHORITY} sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(CalendarContract.AUTHORITY, shouldBe)
}
}
if (taskAuthority != null)
// repair calendar sync
settings.getSavedTasksSyncInterval()?.let { strInterval ->
val shouldBe = strInterval.toLong()
val current = settings.getSyncInterval(taskAuthority)
// repair address book sync
settings.getSavedAddressbooksSyncInterval()?.let { shouldBe ->
val current = settings.getSyncInterval(addressBooksAuthority)
if (current != shouldBe) {
Logger.log.warning("${account.name}: $taskAuthority sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(taskAuthority, shouldBe)
Logger.log.warning("${account.name}: $addressBooksAuthority sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(addressBooksAuthority, shouldBe)
}
}
}
// repair calendar sync
settings.getSavedCalendarsSyncInterval()?.let { strInterval ->
val shouldBe = strInterval.toLong()
val current = settings.getSyncInterval(CalendarContract.AUTHORITY)
if (current != shouldBe) {
Logger.log.warning("${account.name}: ${CalendarContract.AUTHORITY} sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(CalendarContract.AUTHORITY, shouldBe)
}
}
if (taskAuthority != null)
// repair calendar sync
settings.getSavedTasksSyncInterval()?.let { strInterval ->
val shouldBe = strInterval.toLong()
val current = settings.getSyncInterval(taskAuthority)
if (current != shouldBe) {
Logger.log.warning("${account.name}: $taskAuthority sync interval should be $shouldBe but is $current -> setting to $current")
settings.setSyncInterval(taskAuthority, shouldBe)
}
}
} catch (ignored: InvalidAccountException) {
// account doesn't exist (anymore)
}
}
}

View file

@ -18,6 +18,8 @@ import android.os.Build
import android.widget.Toast
import androidx.core.content.getSystemService
import at.bitfire.davdroid.R
import at.bitfire.davdroid.log.Logger
import java.util.logging.Level
object UiUtils {
@ -27,13 +29,17 @@ object UiUtils {
fun updateShortcuts(context: Context) {
if (Build.VERSION.SDK_INT >= 25)
context.getSystemService<ShortcutManager>()?.let { shortcutManager ->
shortcutManager.dynamicShortcuts = listOf(
ShortcutInfo.Builder(context, SHORTCUT_SYNC_ALL)
.setIcon(Icon.createWithResource(context, R.drawable.ic_sync_shortcut))
.setShortLabel(context.getString(R.string.accounts_sync_all))
.setIntent(Intent(Intent.ACTION_SYNC, null, context, AccountsActivity::class.java))
.build()
)
try {
shortcutManager.dynamicShortcuts = listOf(
ShortcutInfo.Builder(context, SHORTCUT_SYNC_ALL)
.setIcon(Icon.createWithResource(context, R.drawable.ic_sync_shortcut))
.setShortLabel(context.getString(R.string.accounts_sync_all))
.setIntent(Intent(Intent.ACTION_SYNC, null, context, AccountsActivity::class.java))
.build()
)
} catch(e: Exception) {
Logger.log.log(Level.WARNING, "Couldn't update dynamic shortcut(s)", e)
}
}
}