diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/alternatives/domain/MigrateUseCase.kt b/app/src/main/kotlin/io/github/landwarderer/futon/alternatives/domain/MigrateUseCase.kt index 72d253a606..c95e0fe69f 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/alternatives/domain/MigrateUseCase.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/alternatives/domain/MigrateUseCase.kt @@ -16,6 +16,7 @@ import io.github.landwarderer.futon.scrobbling.common.domain.Scrobbler import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingStatus import io.github.landwarderer.futon.tracker.data.TrackEntity import javax.inject.Inject +import javax.inject.Provider class MigrateUseCase @Inject @@ -24,8 +25,9 @@ constructor( private val mangaDataRepository: MangaDataRepository, private val database: MangaDatabase, private val progressUpdateUseCase: ProgressUpdateUseCase, - private val scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + private val scrobblersProvider: Provider>, ) { + private val scrobblers: Set<@JvmSuppressWildcards Scrobbler> by lazy { scrobblersProvider.get() } suspend operator fun invoke( oldManga: Manga, newManga: Manga, diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/details/domain/DetailsInteractor.kt b/app/src/main/kotlin/io/github/landwarderer/futon/details/domain/DetailsInteractor.kt index c62ac26dbe..076bbdd73f 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/details/domain/DetailsInteractor.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/details/domain/DetailsInteractor.kt @@ -22,6 +22,7 @@ import io.github.landwarderer.futon.scrobbling.common.domain.Scrobbler import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingInfo import io.github.landwarderer.futon.tracker.domain.TrackingRepository import javax.inject.Inject +import javax.inject.Provider /* TODO: remove */ class DetailsInteractor @Inject constructor( @@ -30,8 +31,9 @@ class DetailsInteractor @Inject constructor( private val localMangaRepository: LocalMangaRepository, private val trackingRepository: TrackingRepository, private val settings: AppSettings, - private val scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + private val scrobblersProvider: Provider>, ) { + private val scrobblers: Set<@JvmSuppressWildcards Scrobbler> by lazy { scrobblersProvider.get() } fun observeFavourite(mangaId: Long): Flow> { return favouritesRepository.observeCategories(mangaId) diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/DetailsViewModel.kt b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/DetailsViewModel.kt index 231e529435..cbb2c42f71 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/DetailsViewModel.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/details/ui/DetailsViewModel.kt @@ -55,13 +55,14 @@ import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingInf import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingStatus import io.github.landwarderer.futon.stats.data.StatsRepository import javax.inject.Inject +import javax.inject.Provider @HiltViewModel class DetailsViewModel @Inject constructor( private val historyRepository: HistoryRepository, bookmarksRepository: BookmarksRepository, settings: AppSettings, - private val scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + private val scrobblersProvider: Provider>, @LocalStorageChanges localStorageChanges: SharedFlow, downloadScheduler: DownloadWorker.Scheduler, interactor: DetailsInteractor, @@ -86,6 +87,7 @@ class DetailsViewModel @Inject constructor( private val intent = MangaIntent(savedStateHandle) private var loadingJob: Job val mangaId = intent.mangaId + private val scrobblers: Set<@JvmSuppressWildcards Scrobbler> by lazy { scrobblersProvider.get() } init { mangaDetails.value = intent.manga?.let { MangaDetails(it) } diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/history/data/HistoryRepository.kt b/app/src/main/kotlin/io/github/landwarderer/futon/history/data/HistoryRepository.kt index 9b8f98c41e..68fc42c7aa 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/history/data/HistoryRepository.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/history/data/HistoryRepository.kt @@ -40,11 +40,12 @@ import javax.inject.Provider class HistoryRepository @Inject constructor( private val db: MangaDatabase, private val settings: AppSettings, - private val scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + private val scrobblersProvider: Provider>, private val mangaRepository: MangaDataRepository, private val localObserver: HistoryLocalObserver, private val newChaptersUseCaseProvider: Provider, ) { + private val scrobblers: Set<@JvmSuppressWildcards Scrobbler> by lazy { scrobblersProvider.get() } suspend fun getList(offset: Int, limit: Int): List { val entities = db.getHistoryDao().findAll(offset, limit) diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt b/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt index 17ef5faba3..7683596c18 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt @@ -28,15 +28,16 @@ import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblerUser import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingInfo import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingStatus import javax.inject.Inject +import javax.inject.Provider @HiltViewModel class ScrobblerConfigViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + scrobblersProvider: Provider>, ) : BaseViewModel() { private val scrobblerService = getScrobblerService(savedStateHandle) - private val scrobbler = scrobblers.first { it.scrobblerService == scrobblerService } + private val scrobbler = scrobblersProvider.get().first { it.scrobblerService == scrobblerService } val titleResId = scrobbler.scrobblerService.titleResId diff --git a/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/selector/ScrobblingSelectorViewModel.kt b/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/selector/ScrobblingSelectorViewModel.kt index d38f2a4095..de3371d6c0 100644 --- a/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/selector/ScrobblingSelectorViewModel.kt +++ b/app/src/main/kotlin/io/github/landwarderer/futon/scrobbling/common/ui/selector/ScrobblingSelectorViewModel.kt @@ -34,16 +34,18 @@ import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblerMang import io.github.landwarderer.futon.scrobbling.common.domain.model.ScrobblingStatus import io.github.landwarderer.futon.scrobbling.common.ui.selector.model.ScrobblerHint import javax.inject.Inject +import javax.inject.Provider @HiltViewModel class ScrobblingSelectorViewModel @Inject constructor( savedStateHandle: SavedStateHandle, - scrobblers: Set<@JvmSuppressWildcards Scrobbler>, + scrobblersProvider: Provider>, private val historyRepository: HistoryRepository, ) : BaseViewModel() { val manga = savedStateHandle.require(AppRouter.KEY_MANGA).manga + private val scrobblers by lazy { scrobblersProvider.get() } val availableScrobblers = scrobblers.filter { it.isEnabled } val selectedScrobblerIndex = MutableStateFlow(0)