Skip to content

Commit a03ad75

Browse files
committed
Minor changes
- add worker thread annotations - use injected defaultDispatcher
1 parent acc7004 commit a03ad75

File tree

5 files changed

+21
-5
lines changed

5 files changed

+21
-5
lines changed

app/src/main/kotlin/at/bitfire/davdroid/App.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ package at.bitfire.davdroid
77
import android.app.Application
88
import androidx.hilt.work.HiltWorkerFactory
99
import androidx.work.Configuration
10+
import at.bitfire.davdroid.di.DefaultDispatcher
1011
import at.bitfire.davdroid.log.LogManager
1112
import at.bitfire.davdroid.startup.StartupPlugin
1213
import at.bitfire.davdroid.sync.account.AccountsCleanupWorker
1314
import at.bitfire.davdroid.ui.UiUtils
1415
import dagger.hilt.android.HiltAndroidApp
16+
import kotlinx.coroutines.CoroutineDispatcher
1517
import kotlinx.coroutines.DelicateCoroutinesApi
16-
import kotlinx.coroutines.Dispatchers
1718
import kotlinx.coroutines.GlobalScope
1819
import kotlinx.coroutines.launch
1920
import java.util.logging.Logger
@@ -31,6 +32,10 @@ class App: Application(), Configuration.Provider {
3132
@Inject
3233
lateinit var logManager: LogManager
3334

35+
@Inject
36+
@DefaultDispatcher
37+
lateinit var defaultDispatcher: CoroutineDispatcher
38+
3439
@Inject
3540
lateinit var plugins: Set<@JvmSuppressWildcards StartupPlugin>
3641

@@ -60,7 +65,7 @@ class App: Application(), Configuration.Provider {
6065

6166
// don't block UI for some background checks
6267
@OptIn(DelicateCoroutinesApi::class)
63-
GlobalScope.launch(Dispatchers.Default) {
68+
GlobalScope.launch(defaultDispatcher) {
6469
// clean up orphaned accounts in DB from time to time
6570
AccountsCleanupWorker.enable(this@App)
6671

app/src/main/kotlin/at/bitfire/davdroid/sync/AutomaticSyncManager.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package at.bitfire.davdroid.sync
77
import android.accounts.Account
88
import android.provider.CalendarContract
99
import android.provider.ContactsContract
10+
import androidx.annotation.WorkerThread
1011
import at.bitfire.davdroid.db.Service
1112
import at.bitfire.davdroid.repository.DavServiceRepository
1213
import at.bitfire.davdroid.resource.LocalAddressBookStore
@@ -59,6 +60,7 @@ class AutomaticSyncManager @Inject constructor(
5960
* @param account the account to synchronize
6061
* @param dataType the data type to synchronize
6162
*/
63+
@WorkerThread
6264
private fun enableAutomaticSync(
6365
account: Account,
6466
dataType: SyncDataType
@@ -113,6 +115,7 @@ class AutomaticSyncManager @Inject constructor(
113115
*
114116
* @param account account for which automatic synchronization shall be updated
115117
*/
118+
@WorkerThread
116119
fun updateAutomaticSync(account: Account) {
117120
for (dataType in SyncDataType.entries)
118121
updateAutomaticSync(account, dataType)
@@ -128,6 +131,7 @@ class AutomaticSyncManager @Inject constructor(
128131
* @param account account for which automatic synchronization shall be updated
129132
* @param dataType sync data type for which automatic synchronization shall be updated
130133
*/
134+
@WorkerThread
131135
fun updateAutomaticSync(account: Account, dataType: SyncDataType) {
132136
val serviceType = when (dataType) {
133137
SyncDataType.CONTACTS -> Service.TYPE_CARDDAV

app/src/main/kotlin/at/bitfire/davdroid/sync/TasksAppManager.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.content.Context
99
import android.content.Intent
1010
import android.content.pm.PackageManager
1111
import android.graphics.drawable.BitmapDrawable
12+
import androidx.annotation.WorkerThread
1213
import androidx.core.app.NotificationCompat
1314
import androidx.core.app.TaskStackBuilder
1415
import androidx.core.net.toUri
@@ -77,6 +78,7 @@ class TasksAppManager @Inject constructor(
7778
/**
7879
* Sets up sync for the selected TaskProvider.
7980
*/
81+
@WorkerThread
8082
fun selectProvider(selectedProvider: ProviderName?) {
8183
logger.info("Selecting tasks app: $selectedProvider")
8284

app/src/main/kotlin/at/bitfire/davdroid/ui/TasksModel.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@ import androidx.compose.runtime.mutableStateOf
1111
import androidx.compose.runtime.setValue
1212
import androidx.lifecycle.ViewModel
1313
import androidx.lifecycle.viewModelScope
14+
import at.bitfire.davdroid.di.DefaultDispatcher
1415
import at.bitfire.davdroid.settings.SettingsManager
1516
import at.bitfire.davdroid.sync.TasksAppManager
1617
import at.bitfire.davdroid.util.packageChangedFlow
1718
import at.bitfire.ical4android.TaskProvider
1819
import dagger.hilt.android.lifecycle.HiltViewModel
1920
import dagger.hilt.android.qualifiers.ApplicationContext
20-
import kotlinx.coroutines.Dispatchers
21+
import kotlinx.coroutines.CoroutineDispatcher
2122
import kotlinx.coroutines.flow.map
2223
import kotlinx.coroutines.launch
2324
import javax.inject.Inject
2425

2526
@HiltViewModel
2627
class TasksModel @Inject constructor(
2728
@ApplicationContext val context: Context,
29+
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher,
2830
private val settings: SettingsManager,
2931
private val tasksAppManager: TasksAppManager
3032
) : ViewModel() {
@@ -75,7 +77,7 @@ class TasksModel @Inject constructor(
7577
false
7678
}
7779

78-
fun selectProvider(provider: TaskProvider.ProviderName) = viewModelScope.launch(Dispatchers.Default) {
80+
fun selectProvider(provider: TaskProvider.ProviderName) = viewModelScope.launch(defaultDispatcher) {
7981
tasksAppManager.selectProvider(provider)
8082
}
8183

app/src/main/kotlin/at/bitfire/davdroid/ui/setup/LoginScreenModel.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.compose.runtime.mutableStateOf
1111
import androidx.compose.runtime.setValue
1212
import androidx.lifecycle.ViewModel
1313
import androidx.lifecycle.viewModelScope
14+
import at.bitfire.davdroid.di.DefaultDispatcher
1415
import at.bitfire.davdroid.repository.AccountRepository
1516
import at.bitfire.davdroid.servicedetection.DavResourceFinder
1617
import at.bitfire.davdroid.settings.AccountSettings
@@ -21,6 +22,7 @@ import dagger.assisted.AssistedFactory
2122
import dagger.assisted.AssistedInject
2223
import dagger.hilt.android.lifecycle.HiltViewModel
2324
import dagger.hilt.android.qualifiers.ApplicationContext
25+
import kotlinx.coroutines.CoroutineDispatcher
2426
import kotlinx.coroutines.Dispatchers
2527
import kotlinx.coroutines.Job
2628
import kotlinx.coroutines.flow.MutableStateFlow
@@ -41,6 +43,7 @@ class LoginScreenModel @AssistedInject constructor(
4143
@Assisted val initialLoginInfo: LoginInfo,
4244
private val accountRepository: AccountRepository,
4345
@ApplicationContext val context: Context,
46+
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher,
4447
private val logger: Logger,
4548
val loginTypesProvider: LoginTypesProvider,
4649
private val resourceFinderFactory: DavResourceFinder.Factory,
@@ -299,7 +302,7 @@ class LoginScreenModel @AssistedInject constructor(
299302
}
300303

301304
viewModelScope.launch {
302-
val account = withContext(Dispatchers.Default) {
305+
val account = withContext(defaultDispatcher) {
303306
accountRepository.createBlocking(
304307
accountDetailsUiState.value.accountName,
305308
loginInfo.credentials,

0 commit comments

Comments
 (0)