From a989426d95ceaa39f5703f53495575e7fd80863f Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Fri, 12 Mar 2021 18:10:58 -0500 Subject: [PATCH] Sync Follows sync status choice --- .../data/library/LibraryUpdateService.kt | 3 ++- .../data/preference/PreferenceKeys.kt | 2 ++ .../data/preference/PreferencesHelper.kt | 2 ++ .../ui/setting/SettingsMangaDexController.kt | 22 +++++++++++++++---- app/src/main/res/values/strings_sy.xml | 3 ++- 5 files changed, 26 insertions(+), 6 deletions(-) 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 1d9333037..a7a07e34d 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 @@ -539,11 +539,12 @@ class LibraryUpdateService( private suspend fun syncFollows() { val count = AtomicInteger(0) val mangaDex = MdUtil.getEnabledMangaDex(preferences, sourceManager) ?: return + val syncFollowStatusInts = preferences.mangadexSyncToLibraryIndexes().get().map { it.toInt() } val size: Int mangaDex.fetchAllFollows(true) .filter { (_, metadata) -> - metadata.follow_status == FollowStatus.RE_READING.int || metadata.follow_status == FollowStatus.READING.int + syncFollowStatusInts.contains(metadata.follow_status) } .also { size = it.size } .forEach { (networkManga, metadata) -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 9aca70e0d..4da161d37 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -323,6 +323,8 @@ object PreferenceKeys { const val mangadexSimilarOnlyOverWifi = "pref_simular_only_over_wifi_key" + const val mangadexSyncToLibraryIndexes = "pref_mangadex_sync_to_library_indexes" + const val preferredMangaDexId = "preferred_mangaDex_id" const val dataSaver = "data_saver" 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 17c9d53f5..85a4c858d 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 @@ -433,6 +433,8 @@ class PreferencesHelper(val context: Context) { fun mangadexSimilarOnlyOverWifi() = flowPrefs.getBoolean(Keys.mangadexSimilarOnlyOverWifi, true) + fun mangadexSyncToLibraryIndexes() = flowPrefs.getStringSet(Keys.mangadexSyncToLibraryIndexes, emptySet()) + fun mangadexSimilarUpdateInterval() = flowPrefs.getInt(Keys.mangadexSimilarUpdateInterval, 2) fun dataSaver() = flowPrefs.getBoolean(Keys.dataSaver, false) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMangaDexController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMangaDexController.kt index 8bc27285a..837f15532 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMangaDexController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMangaDexController.kt @@ -1,6 +1,8 @@ package eu.kanade.tachiyomi.ui.setting import androidx.preference.PreferenceScreen +import com.afollestad.materialdialogs.MaterialDialog +import com.afollestad.materialdialogs.list.listItemsMultiChoice import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.data.preference.PreferenceKeys @@ -76,10 +78,22 @@ class SettingsMangaDexController : summaryRes = R.string.mangadex_sync_follows_to_library_summary onClick { - LibraryUpdateService.start( - context, - target = LibraryUpdateService.Target.SYNC_FOLLOWS - ) + MaterialDialog(context) + .title(R.string.mangadex_sync_follows_to_library) + .message(R.string.mangadex_sync_follows_to_library_message) + .listItemsMultiChoice( + items = context.resources.getStringArray(R.array.md_follows_options).toList().let { it.subList(1, it.size) }, + initialSelection = intArrayOf(0, 5) + ) { _, indices, _ -> + preferences.mangadexSyncToLibraryIndexes().set(indices.map { (it + 1).toString() }.toSet()) + LibraryUpdateService.start( + context, + target = LibraryUpdateService.Target.SYNC_FOLLOWS + ) + } + .positiveButton(android.R.string.ok) + .negativeButton(android.R.string.cancel) + .show() } } diff --git a/app/src/main/res/values/strings_sy.xml b/app/src/main/res/values/strings_sy.xml index 8ef278479..15de0a8e7 100644 --- a/app/src/main/res/values/strings_sy.xml +++ b/app/src/main/res/values/strings_sy.xml @@ -577,7 +577,8 @@ Unfollowed MangaDex settings Sync Mangadex manga to your library - Pulls reading/rereading manga from MangaDex into your library if they are not already added. + Pulls manga from MangaDex into your library if they are not already added. + Select the status of manga to be pulled from Mangadex Use low quality thumbnails Use latest uploaded cover When enabled, it uses the latest uploaded manga cover under the /covers url instead of using the cover on MangaDex\'s manga page