Skip to content

Commit 4cdb596

Browse files
committed
Add top level application scope, use IO dispatcher for DataStore
Change-Id: I1512b1665587c73abd5e8a78aa9abd3eed24ab79
1 parent 01e5a68 commit 4cdb596

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

core/common/src/main/java/com/google/samples/apps/nowinandroid/core/network/di/CoroutineScopesModule.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,28 @@
1717
package com.google.samples.apps.nowinandroid.core.network.di
1818

1919
import com.google.samples.apps.nowinandroid.core.network.Dispatcher
20-
import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO
20+
import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.Default
2121
import dagger.Module
2222
import dagger.Provides
2323
import dagger.hilt.InstallIn
2424
import dagger.hilt.components.SingletonComponent
2525
import kotlinx.coroutines.CoroutineDispatcher
2626
import kotlinx.coroutines.CoroutineScope
2727
import kotlinx.coroutines.SupervisorJob
28+
import javax.inject.Qualifier
2829
import javax.inject.Singleton
2930

31+
@Retention(AnnotationRetention.RUNTIME)
32+
@Qualifier
33+
annotation class ApplicationScope
34+
3035
@Module
3136
@InstallIn(SingletonComponent::class)
3237
object CoroutineScopesModule {
3338
@Provides
3439
@Singleton
35-
@Dispatcher(IO)
36-
fun providesIOCoroutineScope(
37-
@Dispatcher(IO) ioDispatcher: CoroutineDispatcher,
38-
): CoroutineScope = CoroutineScope(SupervisorJob() + ioDispatcher)
40+
@ApplicationScope
41+
fun providesCoroutineScope(
42+
@Dispatcher(Default) dispatcher: CoroutineDispatcher,
43+
): CoroutineScope = CoroutineScope(SupervisorJob() + dispatcher)
3944
}

core/datastore/src/main/java/com/google/samples/apps/nowinandroid/core/datastore/di/DataStoreModule.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ import com.google.samples.apps.nowinandroid.core.datastore.UserPreferences
2525
import com.google.samples.apps.nowinandroid.core.datastore.UserPreferencesSerializer
2626
import com.google.samples.apps.nowinandroid.core.network.Dispatcher
2727
import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO
28+
import com.google.samples.apps.nowinandroid.core.network.di.ApplicationScope
2829
import dagger.Module
2930
import dagger.Provides
3031
import dagger.hilt.InstallIn
3132
import dagger.hilt.android.qualifiers.ApplicationContext
3233
import dagger.hilt.components.SingletonComponent
34+
import kotlinx.coroutines.CoroutineDispatcher
3335
import kotlinx.coroutines.CoroutineScope
3436
import javax.inject.Singleton
3537

@@ -41,12 +43,13 @@ object DataStoreModule {
4143
@Singleton
4244
fun providesUserPreferencesDataStore(
4345
@ApplicationContext context: Context,
44-
@Dispatcher(IO) ioScope: CoroutineScope,
46+
@Dispatcher(IO) ioDispatcher: CoroutineDispatcher,
47+
@ApplicationScope scope: CoroutineScope,
4548
userPreferencesSerializer: UserPreferencesSerializer,
4649
): DataStore<UserPreferences> =
4750
DataStoreFactory.create(
4851
serializer = userPreferencesSerializer,
49-
scope = ioScope,
52+
scope = CoroutineScope(scope.coroutineContext + ioDispatcher),
5053
migrations = listOf(
5154
IntToStringIdsMigration,
5255
),

0 commit comments

Comments
 (0)