mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Split track preferences from PreferencesHelper (#8046)
This commit is contained in:
		@@ -27,6 +27,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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
}
 | 
			
		||||
@@ -15,6 +15,7 @@ import eu.kanade.data.dateAdapter
 | 
			
		||||
import eu.kanade.data.listOfStringsAdapter
 | 
			
		||||
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
 | 
			
		||||
@@ -155,6 +156,9 @@ class PreferenceModule(val application: Application) : InjektModule {
 | 
			
		||||
        addSingletonFactory {
 | 
			
		||||
            ReaderPreferences(get())
 | 
			
		||||
        }
 | 
			
		||||
        addSingletonFactory {
 | 
			
		||||
            TrackPreferences(get())
 | 
			
		||||
        }
 | 
			
		||||
        addSingletonFactory {
 | 
			
		||||
            PreferencesHelper(
 | 
			
		||||
                context = application,
 | 
			
		||||
 
 | 
			
		||||
@@ -382,7 +382,7 @@ class LibraryUpdateService(
 | 
			
		||||
                                        failedUpdates.add(mangaWithNotif to errorMessage)
 | 
			
		||||
                                    }
 | 
			
		||||
 | 
			
		||||
                                    if (preferences.autoUpdateTrackers().get()) {
 | 
			
		||||
                                    if (libraryPreferences.autoUpdateTrackers().get()) {
 | 
			
		||||
                                        updateTrackings(mangaWithNotif, loggedServices)
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
@@ -432,7 +432,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)
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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())
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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<OAuth>(preferences.trackToken(this).get())
 | 
			
		||||
            json.decodeFromString<OAuth>(trackPreferences.trackToken(this).get())
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            null
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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<OAuth>(preferences.trackToken(this).get())
 | 
			
		||||
            json.decodeFromString<OAuth>(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)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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<OAuth>(preferences.trackToken(this).get())
 | 
			
		||||
            json.decodeFromString<OAuth>(trackPreferences.trackToken(this).get())
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            null
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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<OAuth>(preferences.trackToken(this).get())
 | 
			
		||||
            json.decodeFromString<OAuth>(trackPreferences.trackToken(this).get())
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            null
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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<OAuth>(preferences.trackToken(this).get())
 | 
			
		||||
            json.decodeFromString<OAuth>(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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,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
 | 
			
		||||
@@ -80,6 +81,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(),
 | 
			
		||||
@@ -820,7 +822,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()
 | 
			
		||||
 
 | 
			
		||||
@@ -277,13 +277,13 @@ class SettingsLibraryController : SettingsController() {
 | 
			
		||||
                    .launchIn(viewScope)
 | 
			
		||||
            }
 | 
			
		||||
            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
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user