mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 01:17:05 +05:30
refactor: move coroutine-utils into core
This commit is contained in:
parent
c50c9c8528
commit
68db3dcda6
16 changed files with 30 additions and 49 deletions
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
|
@ -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()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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)
|
|
||||||
}
|
|
|
@ -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>
|
|
|
@ -149,7 +149,6 @@ include(
|
||||||
"benchmark",
|
"benchmark",
|
||||||
"common",
|
"common",
|
||||||
"core",
|
"core",
|
||||||
"coroutine-utils",
|
|
||||||
"database",
|
"database",
|
||||||
"metadata-extractor",
|
"metadata-extractor",
|
||||||
"model",
|
"model",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue