refactor: move coroutine-utils into core

This commit is contained in:
Harsh Shandilya 2023-06-05 09:50:04 +05:30
parent c50c9c8528
commit 68db3dcda6
No known key found for this signature in database
16 changed files with 30 additions and 49 deletions

View file

@ -29,7 +29,6 @@ graph LR
android --> api android --> api
android --> common android --> common
android --> core android --> core
android --> coroutine-utils
android --> database android --> database
android --> metadata-extractor android --> metadata-extractor
android --> model android --> model

View file

@ -73,7 +73,6 @@ dependencies {
implementation(projects.api) implementation(projects.api)
implementation(projects.common) implementation(projects.common)
implementation(projects.core) implementation(projects.core)
implementation(projects.coroutineUtils)
implementation(projects.database) implementation(projects.database)
implementation(projects.metadataExtractor) implementation(projects.metadataExtractor)
implementation(projects.model) implementation(projects.model)

View file

@ -16,7 +16,7 @@ import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.util.coroutines.DispatcherProvider import dev.msfjarvis.claw.core.coroutines.DispatcherProvider
import javax.inject.Singleton import javax.inject.Singleton
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.SupervisorJob

View file

@ -1,15 +0,0 @@
/*
* Copyright © 2022 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/
package dev.msfjarvis.claw.android.injection
import javax.inject.Qualifier
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class DatabaseDispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class MainDispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class IODispatcher

View file

@ -1,5 +1,5 @@
/* /*
* Copyright © 2021-2022 Harsh Shandilya. * Copyright © 2021-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style * Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at * license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT. * https://opensource.org/licenses/MIT.
@ -13,7 +13,7 @@ import com.slack.eithernet.ApiResult.Success
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject import dagger.assisted.AssistedInject
import dev.msfjarvis.claw.android.injection.IODispatcher import dev.msfjarvis.claw.core.injection.IODispatcher
import dev.msfjarvis.claw.model.LobstersPost import dev.msfjarvis.claw.model.LobstersPost
import java.io.IOException import java.io.IOException
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher

View file

@ -6,8 +6,8 @@
*/ */
package dev.msfjarvis.claw.android.viewmodel package dev.msfjarvis.claw.android.viewmodel
import dev.msfjarvis.claw.android.injection.IODispatcher
import dev.msfjarvis.claw.api.injection.BaseUrl import dev.msfjarvis.claw.api.injection.BaseUrl
import dev.msfjarvis.claw.core.injection.IODispatcher
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext

View file

@ -13,11 +13,11 @@ import androidx.paging.PagingConfig
import com.deliveryhero.whetstone.viewmodel.ContributesViewModel import com.deliveryhero.whetstone.viewmodel.ContributesViewModel
import com.slack.eithernet.ApiResult.Failure import com.slack.eithernet.ApiResult.Failure
import com.slack.eithernet.ApiResult.Success import com.slack.eithernet.ApiResult.Success
import dev.msfjarvis.claw.android.injection.IODispatcher
import dev.msfjarvis.claw.android.paging.LobstersPagingSource import dev.msfjarvis.claw.android.paging.LobstersPagingSource
import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.PAGE_SIZE import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.PAGE_SIZE
import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX import dev.msfjarvis.claw.android.paging.LobstersPagingSource.Companion.STARTING_PAGE_INDEX
import dev.msfjarvis.claw.api.LobstersApi import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.core.injection.IODispatcher
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost
import dev.msfjarvis.claw.model.Comment import dev.msfjarvis.claw.model.Comment
import java.io.IOException import java.io.IOException

View file

@ -6,7 +6,7 @@
*/ */
package dev.msfjarvis.claw.android.viewmodel package dev.msfjarvis.claw.android.viewmodel
import dev.msfjarvis.claw.android.injection.DatabaseDispatcher import dev.msfjarvis.claw.core.injection.DatabaseDispatcher
import dev.msfjarvis.claw.database.LobstersDatabase import dev.msfjarvis.claw.database.LobstersDatabase
import dev.msfjarvis.claw.database.local.PostComments import dev.msfjarvis.claw.database.local.PostComments
import dev.msfjarvis.claw.model.Comment import dev.msfjarvis.claw.model.Comment

View file

@ -6,8 +6,8 @@
*/ */
package dev.msfjarvis.claw.android.viewmodel package dev.msfjarvis.claw.android.viewmodel
import dev.msfjarvis.claw.android.injection.DatabaseDispatcher import dev.msfjarvis.claw.core.injection.DatabaseDispatcher
import dev.msfjarvis.claw.android.injection.IODispatcher import dev.msfjarvis.claw.core.injection.IODispatcher
import dev.msfjarvis.claw.database.LobstersDatabase import dev.msfjarvis.claw.database.LobstersDatabase
import dev.msfjarvis.claw.database.SavedPostSerializer import dev.msfjarvis.claw.database.SavedPostSerializer
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost

View file

@ -8,7 +8,7 @@ package dev.msfjarvis.claw.android.viewmodel
import app.cash.sqldelight.coroutines.asFlow import app.cash.sqldelight.coroutines.asFlow
import app.cash.sqldelight.coroutines.mapToList import app.cash.sqldelight.coroutines.mapToList
import dev.msfjarvis.claw.android.injection.DatabaseDispatcher import dev.msfjarvis.claw.core.injection.DatabaseDispatcher
import dev.msfjarvis.claw.database.LobstersDatabase import dev.msfjarvis.claw.database.LobstersDatabase
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost
import io.github.aakira.napier.Napier import io.github.aakira.napier.Napier

View file

@ -16,12 +16,13 @@ android { namespace = "dev.msfjarvis.claw.core" }
anvil { generateDaggerFactories.set(true) } anvil { generateDaggerFactories.set(true) }
dependencies { dependencies {
api(libs.javax.inject)
api(libs.kotlinx.coroutines.core)
api(libs.kotlinx.serialization.json) api(libs.kotlinx.serialization.json)
api(libs.okhttp.loggingInterceptor) api(libs.okhttp.loggingInterceptor)
implementation(platform(libs.okhttp.bom)) implementation(platform(libs.okhttp.bom))
implementation(libs.dagger) implementation(libs.dagger)
implementation(libs.javax.inject)
implementation(libs.napier) implementation(libs.napier)
implementation(libs.okhttp.core) implementation(libs.okhttp.core)
implementation(libs.retrofit.kotlinxSerializationConverter) implementation(libs.retrofit.kotlinxSerializationConverter)

View file

@ -6,7 +6,7 @@
*/ */
@file:Suppress("InjectDispatcher") // False-positive @file:Suppress("InjectDispatcher") // False-positive
package dev.msfjarvis.claw.util.coroutines package dev.msfjarvis.claw.core.coroutines
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher

View file

@ -1,20 +1,29 @@
/* /*
* Copyright © 2022 Harsh Shandilya. * Copyright © 2022-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style * Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at * license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT. * https://opensource.org/licenses/MIT.
*/ */
package dev.msfjarvis.claw.android.injection package dev.msfjarvis.claw.core.injection
import com.deliveryhero.whetstone.app.ApplicationScope import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.util.coroutines.DefaultDispatcherProvider import dev.msfjarvis.claw.core.coroutines.DefaultDispatcherProvider
import dev.msfjarvis.claw.util.coroutines.DispatcherProvider import dev.msfjarvis.claw.core.coroutines.DispatcherProvider
import javax.inject.Qualifier
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class DatabaseDispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class MainDispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class IODispatcher
@Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class DefaultDispatcher
@Module @Module
@ContributesTo(ApplicationScope::class) @ContributesTo(ApplicationScope::class)
interface CoroutineDispatcherModule { interface CoroutineDispatcherModule {
@ -36,5 +45,10 @@ interface CoroutineDispatcherModule {
fun provideMainDispatcher(dispatcherProvider: DispatcherProvider): CoroutineDispatcher { fun provideMainDispatcher(dispatcherProvider: DispatcherProvider): CoroutineDispatcher {
return dispatcherProvider.main() return dispatcherProvider.main()
} }
@[Provides DefaultDispatcher]
fun provideDefaultDispatcher(dispatcherProvider: DispatcherProvider): CoroutineDispatcher {
return dispatcherProvider.default()
}
} }
} }

View file

@ -1,12 +0,0 @@
/*
* Copyright © 2022-2023 Harsh Shandilya.
* Use of this source code is governed by an MIT-style
* license that can be found in the LICENSE file or at
* https://opensource.org/licenses/MIT.
*/
plugins { id("dev.msfjarvis.claw.kotlin-jvm") }
dependencies {
api(libs.javax.inject)
api(libs.kotlinx.coroutines.core)
}

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.0.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.0.1)" variant="all" version="8.0.1">
</issues>

View file

@ -149,7 +149,6 @@ include(
"benchmark", "benchmark",
"common", "common",
"core", "core",
"coroutine-utils",
"database", "database",
"metadata-extractor", "metadata-extractor",
"model", "model",