diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt index 595166f03..9ca4b3373 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt @@ -18,7 +18,7 @@ package com.google.samples.apps.nowinandroid.util import android.util.Log import androidx.profileinstaller.ProfileVerifier -import com.google.samples.apps.nowinandroid.core.network.di.ApplicationScope +import com.google.samples.apps.nowinandroid.core.di.ApplicationScope import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.guava.await import kotlinx.coroutines.launch diff --git a/core/common/build.gradle.kts b/core/common/build.gradle.kts index 14eadc703..cd2b1fbce 100644 --- a/core/common/build.gradle.kts +++ b/core/common/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Android Open Source Project + * Copyright 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ plugins { android { namespace = "com.google.samples.apps.nowinandroid.core.common" } + kotlin { sourceSets { commonMain.dependencies { diff --git a/core/common/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt b/core/common/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt new file mode 100644 index 000000000..283f06e50 --- /dev/null +++ b/core/common/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid.core.di + +import kotlinx.coroutines.Dispatchers +import me.tatarka.inject.annotations.Provides + +actual object DispatchersComponent { + @Provides + actual fun providesIODispatcher(): IODispatcher = Dispatchers.IO + + @Provides + actual fun providesDefaultDispatcher(): DefaultDispatcher = Dispatchers.Default +} diff --git a/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/CoroutineScopeComponent.kt b/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/CoroutineScopeComponent.kt similarity index 94% rename from core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/CoroutineScopeComponent.kt rename to core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/CoroutineScopeComponent.kt index 8bbab228c..c23890dd0 100644 --- a/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/CoroutineScopeComponent.kt +++ b/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/CoroutineScopeComponent.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.network.di +package com.google.samples.apps.nowinandroid.core.di import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob diff --git a/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/DispatchersComponent.kt b/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt similarity index 66% rename from core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/DispatchersComponent.kt rename to core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt index cf3b1583b..336dc2cc7 100644 --- a/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/network/di/DispatchersComponent.kt +++ b/core/common/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt @@ -1,5 +1,5 @@ /* - * Copyright 2022 The Android Open Source Project + * Copyright 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,20 +14,18 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.network.di +package com.google.samples.apps.nowinandroid.core.di import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Dispatchers -import me.tatarka.inject.annotations.Component import me.tatarka.inject.annotations.Provides typealias DefaultDispatcher = CoroutineDispatcher typealias IODispatcher = CoroutineDispatcher -@Component -abstract class DispatchersComponent { + +expect object DispatchersComponent { @Provides - fun providesIODispatcher(): IODispatcher = Dispatchers.Unconfined + fun providesIODispatcher(): IODispatcher @Provides - fun providesDefaultDispatcher(): DefaultDispatcher = Dispatchers.Default + fun providesDefaultDispatcher(): DefaultDispatcher } diff --git a/core/common/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt b/core/common/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt new file mode 100644 index 000000000..24bfee6a1 --- /dev/null +++ b/core/common/src/jsMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid.core.di + +import kotlinx.coroutines.Dispatchers +import me.tatarka.inject.annotations.Provides + +actual object DispatchersComponent { + + // TODO Provides an actual IODispatcher + @Provides + actual fun providesIODispatcher(): IODispatcher = Dispatchers.Default + + @Provides + actual fun providesDefaultDispatcher(): DefaultDispatcher = Dispatchers.Default +} diff --git a/core/common/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt b/core/common/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt new file mode 100644 index 000000000..283f06e50 --- /dev/null +++ b/core/common/src/jvmMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid.core.di + +import kotlinx.coroutines.Dispatchers +import me.tatarka.inject.annotations.Provides + +actual object DispatchersComponent { + @Provides + actual fun providesIODispatcher(): IODispatcher = Dispatchers.IO + + @Provides + actual fun providesDefaultDispatcher(): DefaultDispatcher = Dispatchers.Default +} diff --git a/core/common/src/nativeMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt b/core/common/src/nativeMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt new file mode 100644 index 000000000..24bfee6a1 --- /dev/null +++ b/core/common/src/nativeMain/kotlin/com/google/samples/apps/nowinandroid/core/di/DispatchersComponent.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid.core.di + +import kotlinx.coroutines.Dispatchers +import me.tatarka.inject.annotations.Provides + +actual object DispatchersComponent { + + // TODO Provides an actual IODispatcher + @Provides + actual fun providesIODispatcher(): IODispatcher = Dispatchers.Default + + @Provides + actual fun providesDefaultDispatcher(): DefaultDispatcher = Dispatchers.Default +} diff --git a/core/database/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt b/core/database/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt index 932de70c6..0a6a5c34b 100644 --- a/core/database/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt +++ b/core/database/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/core/database/DriverModule.kt @@ -34,14 +34,15 @@ actual class DriverModule(private val context: Context) { schema: SqlSchema>, ): SqlDriver { val synchronousSchema = schema.synchronous() - return AndroidSqliteDriver(schema = synchronousSchema, + return AndroidSqliteDriver( + schema = synchronousSchema, context = context, name = "nia-database.db", callback = object : AndroidSqliteDriver.Callback(synchronousSchema) { override fun onOpen(db: SupportSQLiteDatabase) { db.setForeignKeyConstraintsEnabled(true) } - } + }, ) } } diff --git a/core/database/src/commonTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt b/core/database/src/commonTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt index 3e09495ed..998e0d628 100644 --- a/core/database/src/commonTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt +++ b/core/database/src/commonTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt @@ -26,7 +26,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import kotlinx.datetime.Instant -import kotlin.test.BeforeTest import kotlin.test.Test import kotlin.test.assertEquals diff --git a/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt b/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt index 295b2978a..b4a5cb182 100644 --- a/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt +++ b/core/datastore-test/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/test/TestDataStoreModule.kt @@ -21,7 +21,7 @@ import androidx.datastore.core.DataStoreFactory import com.google.samples.apps.nowinandroid.core.datastore.UserPreferences import com.google.samples.apps.nowinandroid.core.datastore.UserPreferencesSerializer import com.google.samples.apps.nowinandroid.core.datastore.di.DataStoreModule -import com.google.samples.apps.nowinandroid.core.network.di.ApplicationScope +import com.google.samples.apps.nowinandroid.core.di.ApplicationScope import dagger.Module import dagger.Provides import dagger.hilt.components.SingletonComponent diff --git a/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/di/DataStoreModule.kt b/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/di/DataStoreModule.kt index 8e0d7d4d8..e54760ead 100644 --- a/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/di/DataStoreModule.kt +++ b/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/di/DataStoreModule.kt @@ -23,9 +23,9 @@ import androidx.datastore.dataStoreFile import com.google.samples.apps.nowinandroid.core.datastore.IntToStringIdsMigration import com.google.samples.apps.nowinandroid.core.datastore.UserPreferences import com.google.samples.apps.nowinandroid.core.datastore.UserPreferencesSerializer +import com.google.samples.apps.nowinandroid.core.di.ApplicationScope import com.google.samples.apps.nowinandroid.core.network.Dispatcher import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO -import com.google.samples.apps.nowinandroid.core.network.di.ApplicationScope import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/core/testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/di/TestDispatchersModule.kt b/core/testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/di/TestDispatchersModule.kt index d4f08d0a2..a664d5538 100644 --- a/core/testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/di/TestDispatchersModule.kt +++ b/core/testing/src/main/kotlin/com/google/samples/apps/nowinandroid/core/testing/di/TestDispatchersModule.kt @@ -16,10 +16,10 @@ package com.google.samples.apps.nowinandroid.core.testing.di +import com.google.samples.apps.nowinandroid.core.di.DispatchersComponent import com.google.samples.apps.nowinandroid.core.network.Dispatcher import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.Default import com.google.samples.apps.nowinandroid.core.network.NiaDispatchers.IO -import com.google.samples.apps.nowinandroid.core.network.di.DispatchersComponent import dagger.Module import dagger.Provides import dagger.hilt.components.SingletonComponent