diff --git a/app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt b/app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt index 296ca0b06..d150a2bc1 100644 --- a/app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt +++ b/app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt @@ -30,6 +30,10 @@ class LibraryPreferences( fun libraryUpdateDeviceRestriction() = preferenceStore.getStringSet("library_update_restriction", setOf(DEVICE_ONLY_ON_WIFI)) fun libraryUpdateMangaRestriction() = preferenceStore.getStringSet("library_update_manga_restriction", setOf(MANGA_HAS_UNREAD, MANGA_NON_COMPLETED, MANGA_NON_READ)) + fun autoUpdateMetadata() = preferenceStore.getBoolean("auto_update_metadata", false) + + fun autoUpdateTrackers() = preferenceStore.getBoolean("auto_update_trackers", false) + // region Filter fun filterDownloaded() = preferenceStore.getInt("pref_filter_library_downloaded", ExtendedNavigationView.Item.TriStateGroup.State.IGNORE.value) diff --git a/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt new file mode 100644 index 000000000..867b8c3eb --- /dev/null +++ b/app/src/main/java/eu/kanade/domain/track/service/TrackPreferences.kt @@ -0,0 +1,26 @@ +package eu.kanade.domain.track.service + +import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.data.track.TrackService +import eu.kanade.tachiyomi.data.track.anilist.Anilist + +class TrackPreferences( + private val preferenceStore: PreferenceStore, +) { + + fun trackUsername(sync: TrackService) = preferenceStore.getString(PreferenceKeys.trackUsername(sync.id), "") + + fun trackPassword(sync: TrackService) = preferenceStore.getString(PreferenceKeys.trackPassword(sync.id), "") + + fun setTrackCredentials(sync: TrackService, username: String, password: String) { + trackUsername(sync).set(username) + trackPassword(sync).set(password) + } + + fun trackToken(sync: TrackService) = preferenceStore.getString(PreferenceKeys.trackToken(sync.id), "") + + fun anilistScoreType() = preferenceStore.getString("anilist_score_type", Anilist.POINT_10) + + fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt index 6ba078869..f4a9be926 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt @@ -18,6 +18,7 @@ import eu.kanade.data.listOfStringsAdapter import eu.kanade.data.listOfStringsAndAdapter import eu.kanade.domain.library.service.LibraryPreferences import eu.kanade.domain.source.service.SourcePreferences +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.security.SecurityPreferences @@ -182,6 +183,9 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { ReaderPreferences(get()) } + addSingletonFactory { + TrackPreferences(get()) + } addSingletonFactory { PreferencesHelper( context = application, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index 09df189f4..0d5c05ff8 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -469,7 +469,7 @@ class LibraryUpdateService( failedUpdates.add(mangaWithNotif to errorMessage) } - if (preferences.autoUpdateTrackers().get()) { + if (libraryPreferences.autoUpdateTrackers().get()) { updateTrackings(mangaWithNotif, loggedServices) } } @@ -535,7 +535,7 @@ class LibraryUpdateService( val source = sourceManager.getOrStub(manga.source) // Update manga metadata if needed - if (preferences.autoUpdateMetadata().get()) { + if (libraryPreferences.autoUpdateMetadata().get()) { val networkManga = source.getMangaDetails(manga.toSManga()) updateManga.awaitUpdateFromSource(manga, networkManga, manualFetch = false, coverCache) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index af2a04ea8..111f6fd49 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -8,8 +8,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.getEnum import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.track.TrackService -import eu.kanade.tachiyomi.data.track.anilist.Anilist import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable import java.io.File @@ -41,10 +39,6 @@ class PreferencesHelper( fun sideNavIconAlignment() = preferenceStore.getInt("pref_side_nav_icon_alignment", 0) - fun autoUpdateMetadata() = preferenceStore.getBoolean("auto_update_metadata", false) - - fun autoUpdateTrackers() = preferenceStore.getBoolean("auto_update_trackers", false) - fun themeMode() = preferenceStore.getEnum( "pref_theme_mode_key", if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Values.ThemeMode.system } else { Values.ThemeMode.light }, @@ -59,19 +53,6 @@ class PreferencesHelper( fun lastVersionCode() = preferenceStore.getInt("last_version_code", 0) - fun trackUsername(sync: TrackService) = preferenceStore.getString(Keys.trackUsername(sync.id), "") - - fun trackPassword(sync: TrackService) = preferenceStore.getString(Keys.trackPassword(sync.id), "") - - fun setTrackCredentials(sync: TrackService, username: String, password: String) { - trackUsername(sync).set(username) - trackPassword(sync).set(password) - } - - fun trackToken(sync: TrackService) = preferenceStore.getString(Keys.trackToken(sync.id), "") - - fun anilistScoreType() = preferenceStore.getString("anilist_score_type", Anilist.POINT_10) - fun backupsDirectory() = preferenceStore.getString("backup_directory", defaultBackupDir.toString()) fun relativeTime() = preferenceStore.getInt("relative_time", 7) @@ -115,8 +96,6 @@ class PreferencesHelper( fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0) - fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) - fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE) fun filterChapterByRead() = preferenceStore.getInt("default_chapter_filter_by_read", DomainManga.SHOW_ALL.toInt()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackService.kt index bc918ca02..42d405d0f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackService.kt @@ -4,6 +4,7 @@ import androidx.annotation.CallSuper import androidx.annotation.ColorInt import androidx.annotation.DrawableRes import androidx.annotation.StringRes +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.model.TrackSearch @@ -14,6 +15,7 @@ import uy.kohesive.injekt.injectLazy abstract class TrackService(val id: Long) { val preferences: PreferencesHelper by injectLazy() + val trackPreferences: TrackPreferences by injectLazy() val networkService: NetworkHelper by injectLazy() open val client: OkHttpClient @@ -62,18 +64,18 @@ abstract class TrackService(val id: Long) { @CallSuper open fun logout() { - preferences.setTrackCredentials(this, "", "") + trackPreferences.setTrackCredentials(this, "", "") } open val isLogged: Boolean get() = getUsername().isNotEmpty() && getPassword().isNotEmpty() - fun getUsername() = preferences.trackUsername(this).get() + fun getUsername() = trackPreferences.trackUsername(this).get() - fun getPassword() = preferences.trackPassword(this).get() + fun getPassword() = trackPreferences.trackPassword(this).get() fun saveCredentials(username: String, password: String) { - preferences.setTrackCredentials(this, username, password) + trackPreferences.setTrackCredentials(this, username, password) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt index 7e8c39101..f7ebb9a19 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/Anilist.kt @@ -37,7 +37,7 @@ class Anilist(private val context: Context, id: Long) : TrackService(id) { override val supportsReadingDates: Boolean = true - private val scorePreference = preferences.anilistScoreType() + private val scorePreference = trackPreferences.anilistScoreType() init { // If the preference is an int from APIv1, logout user to force using APIv2 @@ -211,17 +211,17 @@ class Anilist(private val context: Context, id: Long) : TrackService(id) { override fun logout() { super.logout() - preferences.trackToken(this).delete() + trackPreferences.trackToken(this).delete() interceptor.setAuth(null) } fun saveOAuth(oAuth: OAuth?) { - preferences.trackToken(this).set(json.encodeToString(oAuth)) + trackPreferences.trackToken(this).set(json.encodeToString(oAuth)) } fun loadOAuth(): OAuth? { return try { - json.decodeFromString(preferences.trackToken(this).get()) + json.decodeFromString(trackPreferences.trackToken(this).get()) } catch (e: Exception) { null } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt index 120cdc027..95c1c876c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.data.track.anilist +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.database.models.Track -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.model.TrackSearch import uy.kohesive.injekt.injectLazy @@ -82,7 +82,7 @@ fun Track.toAnilistStatus() = when (status) { else -> throw NotImplementedError("Unknown status: $status") } -private val preferences: PreferencesHelper by injectLazy() +private val preferences: TrackPreferences by injectLazy() fun Track.toAnilistScore(): String = when (preferences.anilistScoreType().get()) { // 10 point diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt index 59e6fd241..b43cea74c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/Bangumi.kt @@ -124,12 +124,12 @@ class Bangumi(private val context: Context, id: Long) : TrackService(id) { } fun saveToken(oauth: OAuth?) { - preferences.trackToken(this).set(json.encodeToString(oauth)) + trackPreferences.trackToken(this).set(json.encodeToString(oauth)) } fun restoreToken(): OAuth? { return try { - json.decodeFromString(preferences.trackToken(this).get()) + json.decodeFromString(trackPreferences.trackToken(this).get()) } catch (e: Exception) { null } @@ -137,7 +137,7 @@ class Bangumi(private val context: Context, id: Long) : TrackService(id) { override fun logout() { super.logout() - preferences.trackToken(this).delete() + trackPreferences.trackToken(this).delete() interceptor.newAuth(null) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt index fc4f4e57f..0799229e5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt @@ -141,12 +141,12 @@ class Kitsu(private val context: Context, id: Long) : TrackService(id) { } fun saveToken(oauth: OAuth?) { - preferences.trackToken(this).set(json.encodeToString(oauth)) + trackPreferences.trackToken(this).set(json.encodeToString(oauth)) } fun restoreToken(): OAuth? { return try { - json.decodeFromString(preferences.trackToken(this).get()) + json.decodeFromString(trackPreferences.trackToken(this).get()) } catch (e: Exception) { null } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt index f64b90088..17c6c0ae9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt @@ -99,6 +99,6 @@ class MangaUpdates(private val context: Context, id: Long) : TrackService(id) { } fun restoreSession(): String? { - return preferences.trackPassword(this).get() + return trackPreferences.trackPassword(this).get() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt index e67ae1a60..1d395befa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mdlist/MdList.kt @@ -154,7 +154,7 @@ class MdList(private val context: Context, id: Long) : TrackService(id) { override fun logout() { super.logout() - preferences.trackToken(this).delete() + trackPreferences.trackToken(this).delete() } class MangaDexNotFoundException : Exception("Mangadex not enabled") diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt index 0db5d8546..d3e85a63f 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeList.kt @@ -147,17 +147,17 @@ class MyAnimeList(private val context: Context, id: Long) : TrackService(id) { override fun logout() { super.logout() - preferences.trackToken(this).delete() + trackPreferences.trackToken(this).delete() interceptor.setAuth(null) } fun saveOAuth(oAuth: OAuth?) { - preferences.trackToken(this).set(json.encodeToString(oAuth)) + trackPreferences.trackToken(this).set(json.encodeToString(oAuth)) } fun loadOAuth(): OAuth? { return try { - json.decodeFromString(preferences.trackToken(this).get()) + json.decodeFromString(trackPreferences.trackToken(this).get()) } catch (e: Exception) { null } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt index 8c5b757e5..33c04e044 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/Shikimori.kt @@ -130,12 +130,12 @@ class Shikimori(private val context: Context, id: Long) : TrackService(id) { } fun saveToken(oauth: OAuth?) { - preferences.trackToken(this).set(json.encodeToString(oauth)) + trackPreferences.trackToken(this).set(json.encodeToString(oauth)) } fun restoreToken(): OAuth? { return try { - json.decodeFromString(preferences.trackToken(this).get()) + json.decodeFromString(trackPreferences.trackToken(this).get()) } catch (e: Exception) { null } @@ -143,7 +143,7 @@ class Shikimori(private val context: Context, id: Long) : TrackService(id) { override fun logout() { super.logout() - preferences.trackToken(this).delete() + trackPreferences.trackToken(this).delete() interceptor.newAuth(null) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index 1252a02cb..8d6605399 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.source.online.all import android.content.Context import android.content.SharedPreferences import android.net.Uri +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.database.models.Track -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.network.asObservableSuccess @@ -49,6 +49,7 @@ import okhttp3.Response import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy import kotlin.reflect.KClass @Suppress("OverridingDeprecatedMember") @@ -68,16 +69,16 @@ class MangaDex(delegate: HttpSource, val context: Context) : override val matchingHosts: List = listOf("mangadex.org", "www.mangadex.org") - val preferences = Injekt.get() - val mdList: MdList = Injekt.get().mdList + val trackPreferences: TrackPreferences by injectLazy() + val mdList: MdList by lazy { Injekt.get().mdList } private val sourcePreferences: SharedPreferences by lazy { context.getSharedPreferences("source_$id", 0x0000) } - private val mangadexAuthServiceLazy = lazy { MangaDexAuthService(baseHttpClient, headers, preferences, mdList) } + private val mangadexAuthServiceLazy = lazy { MangaDexAuthService(baseHttpClient, headers, trackPreferences, mdList) } - private val loginHelper = MangaDexLoginHelper(mangadexAuthServiceLazy, preferences, mdList) + private val loginHelper = MangaDexLoginHelper(mangadexAuthServiceLazy, trackPreferences, mdList) override val baseHttpClient: OkHttpClient = delegate.client.newBuilder() .authenticator( @@ -133,7 +134,7 @@ class MangaDex(delegate: HttpSource, val context: Context) : bilibiliHandler, azukHandler, mangaHotHandler, - preferences, + trackPreferences, mdList, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index f53c8992f..60eab9ae5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -22,6 +22,7 @@ import eu.kanade.domain.manga.model.toDbManga import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.domain.track.interactor.InsertTrack import eu.kanade.domain.track.model.toDbTrack +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.database.models.toDomainManga @@ -100,6 +101,7 @@ class ReaderPresenter( private val downloadManager: DownloadManager = Injekt.get(), private val preferences: PreferencesHelper = Injekt.get(), private val readerPreferences: ReaderPreferences = Injekt.get(), + private val trackPreferences: TrackPreferences = Injekt.get(), private val delayedTrackingStore: DelayedTrackingStore = Injekt.get(), private val getManga: GetManga = Injekt.get(), private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(), @@ -1041,7 +1043,7 @@ class ReaderPresenter( * will run in a background thread and errors are ignored. */ private fun updateTrackChapterRead(readerChapter: ReaderChapter) { - if (!preferences.autoUpdateTrack().get()) return + if (!trackPreferences.autoUpdateTrack().get()) return val manga = manga ?: return val chapterRead = readerChapter.chapter.chapter_number.toDouble() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index aa364045b..7f23e2d15 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -297,13 +297,13 @@ class SettingsLibraryController : SettingsController() { } // SY <-- switchPreference { - bindTo(preferences.autoUpdateMetadata()) + bindTo(libraryPreferences.autoUpdateMetadata()) titleRes = R.string.pref_library_update_refresh_metadata summaryRes = R.string.pref_library_update_refresh_metadata_summary } if (trackManager.hasLoggedServices()) { switchPreference { - bindTo(preferences.autoUpdateTrackers()) + bindTo(libraryPreferences.autoUpdateTrackers()) titleRes = R.string.pref_library_update_refresh_trackers summaryRes = R.string.pref_library_update_refresh_trackers_summary } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt index 5cc83f923..69f7e129f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt @@ -7,6 +7,7 @@ import android.view.MenuItem import android.widget.Toast import androidx.preference.PreferenceGroup import androidx.preference.PreferenceScreen +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.track.NoLoginTrackService import eu.kanade.tachiyomi.data.track.TrackManager @@ -38,13 +39,14 @@ class SettingsTrackingController : TrackLogoutDialog.Listener { private val trackManager: TrackManager by injectLazy() + private val trackPreferences: TrackPreferences by injectLazy() private val sourceManager: SourceManager by injectLazy() override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { titleRes = R.string.pref_category_tracking switchPreference { - bindTo(preferences.autoUpdateTrack()) + bindTo(trackPreferences.autoUpdateTrack()) titleRes = R.string.pref_auto_update_manga_sync } diff --git a/app/src/main/java/exh/md/handlers/PageHandler.kt b/app/src/main/java/exh/md/handlers/PageHandler.kt index b873b78fa..1ece5daca 100644 --- a/app/src/main/java/exh/md/handlers/PageHandler.kt +++ b/app/src/main/java/exh/md/handlers/PageHandler.kt @@ -1,6 +1,6 @@ package exh.md.handlers -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess @@ -27,7 +27,7 @@ class PageHandler( private val bilibiliHandler: BilibiliHandler, private val azukiHandler: AzukiHandler, private val mangaHotHandler: MangaHotHandler, - private val preferences: PreferencesHelper, + private val preferences: TrackPreferences, private val mdList: MdList, ) { diff --git a/app/src/main/java/exh/md/network/MangaDexLoginHelper.kt b/app/src/main/java/exh/md/network/MangaDexLoginHelper.kt index caa8b4a21..ff9e3e524 100644 --- a/app/src/main/java/exh/md/network/MangaDexLoginHelper.kt +++ b/app/src/main/java/exh/md/network/MangaDexLoginHelper.kt @@ -1,6 +1,6 @@ package exh.md.network -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.util.lang.withIOContext import exh.log.xLogE @@ -13,7 +13,7 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.withTimeoutOrNull import kotlin.time.Duration.Companion.seconds -class MangaDexLoginHelper(authServiceLazy: Lazy, val preferences: PreferencesHelper, val mdList: MdList) { +class MangaDexLoginHelper(authServiceLazy: Lazy, val preferences: TrackPreferences, val mdList: MdList) { private val authService by authServiceLazy suspend fun isAuthenticated(): Boolean { return runCatching { authService.checkToken().isAuthenticated } diff --git a/app/src/main/java/exh/md/service/MangaDexAuthService.kt b/app/src/main/java/exh/md/service/MangaDexAuthService.kt index 8ac0e3427..1447fbdff 100644 --- a/app/src/main/java/exh/md/service/MangaDexAuthService.kt +++ b/app/src/main/java/exh/md/service/MangaDexAuthService.kt @@ -1,6 +1,6 @@ package exh.md.service -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST @@ -31,7 +31,7 @@ import okhttp3.Request class MangaDexAuthService( private val client: OkHttpClient, private val headers: Headers, - private val preferences: PreferencesHelper, + private val preferences: TrackPreferences, private val mdList: MdList, ) { private val noAuthenticatorClient = client.newBuilder() diff --git a/app/src/main/java/exh/md/utils/MdUtil.kt b/app/src/main/java/exh/md/utils/MdUtil.kt index 57f7e1359..cbd1c7212 100644 --- a/app/src/main/java/exh/md/utils/MdUtil.kt +++ b/app/src/main/java/exh/md/utils/MdUtil.kt @@ -1,6 +1,7 @@ package exh.md.utils import eu.kanade.domain.source.service.SourcePreferences +import eu.kanade.domain.track.service.TrackPreferences import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.mdlist.MdList import eu.kanade.tachiyomi.source.SourceManager @@ -312,7 +313,7 @@ class MdUtil { return "$cdnUrl/covers/$dexId/$fileName" } - fun getLoginBody(preferences: PreferencesHelper, mdList: MdList) = preferences.trackToken(mdList) + fun getLoginBody(preferences: TrackPreferences, mdList: MdList) = preferences.trackToken(mdList) .get() .nullIfBlank() ?.let { @@ -324,15 +325,15 @@ class MdUtil { } } - fun sessionToken(preferences: PreferencesHelper, mdList: MdList) = getLoginBody(preferences, mdList)?.session + fun sessionToken(preferences: TrackPreferences, mdList: MdList) = getLoginBody(preferences, mdList)?.session - fun refreshToken(preferences: PreferencesHelper, mdList: MdList) = getLoginBody(preferences, mdList)?.refresh + fun refreshToken(preferences: TrackPreferences, mdList: MdList) = getLoginBody(preferences, mdList)?.refresh - fun updateLoginToken(token: LoginBodyTokenDto, preferences: PreferencesHelper, mdList: MdList) { + fun updateLoginToken(token: LoginBodyTokenDto, preferences: TrackPreferences, mdList: MdList) { preferences.trackToken(mdList).set(jsonParser.encodeToString(token)) } - fun getAuthHeaders(headers: Headers, preferences: PreferencesHelper, mdList: MdList) = + fun getAuthHeaders(headers: Headers, preferences: TrackPreferences, mdList: MdList) = headers.newBuilder().add( "Authorization", "Bearer " + (sessionToken(preferences, mdList) ?: throw NoSessionException()),