Skip to content

Commit

Permalink
Fix Mangadex 2 factor auth
Browse files Browse the repository at this point in the history
Fix Backups with merge manga breaking(I think)
Tweak preload settings, make the max 20, defaults to 10
Add tag based sorting
  • Loading branch information
jobobby04 committed Sep 15, 2020
1 parent 89427ff commit de05f88
Show file tree
Hide file tree
Showing 20 changed files with 688 additions and 24 deletions.
13 changes: 11 additions & 2 deletions app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import com.google.gson.JsonElement
import com.google.gson.JsonObject
import com.google.gson.JsonParser
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CATEGORY
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CATEGORY_MASK
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CHAPTER
Expand Down Expand Up @@ -154,7 +155,7 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) {

databaseHelper.inTransaction {
// Get manga from database
val mangas = getFavoriteManga() /* SY --> */ + getMergedManga() /* SY <-- */
val mangas = getFavoriteManga().filterNot { it.source == MERGED_SOURCE_ID } /* SY --> */ + getMergedManga() /* SY <-- */

val extensions: MutableSet<String> = mutableSetOf()

Expand Down Expand Up @@ -652,7 +653,15 @@ class BackupManager(val context: Context, version: Int = CURRENT_VERSION) {
// Store the inserted id in the mergedMangaReference
if (!found) {
// Let the db assign the id
val mergedManga = (if (mergedMangaReference.mergeUrl != lastMergeManga?.url) databaseHelper.getManga(mergedMangaReference.mergeUrl, MERGED_SOURCE_ID).executeAsBlocking() else lastMergeManga) ?: return@forEach
var mergedManga = if (mergedMangaReference.mergeUrl != lastMergeManga?.url) databaseHelper.getManga(mergedMangaReference.mergeUrl, MERGED_SOURCE_ID).executeAsBlocking() else lastMergeManga
if (mergedManga == null) {
mergedManga = Manga.create(MERGED_SOURCE_ID).apply {
url = mergedMangaReference.mergeUrl
title = context.getString(R.string.refresh_merge)
}
mergedManga.id = databaseHelper.insertManga(mergedManga).executeAsBlocking().insertedId()
}

val manga = databaseHelper.getManga(mergedMangaReference.mangaUrl, mergedMangaReference.mangaSourceId).executeAsBlocking() ?: return@forEach
lastMergeManga = mergedManga

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.data.backup.models.Backup.CHAPTERS
import eu.kanade.tachiyomi.data.backup.models.Backup.HISTORY
import eu.kanade.tachiyomi.data.backup.models.Backup.MANGA
import eu.kanade.tachiyomi.data.backup.models.Backup.MANGAS
import eu.kanade.tachiyomi.data.backup.models.Backup.MERGEDMANGAREFERENCES
import eu.kanade.tachiyomi.data.backup.models.Backup.SAVEDSEARCHES
import eu.kanade.tachiyomi.data.backup.models.Backup.TRACK
import eu.kanade.tachiyomi.data.backup.models.Backup.VERSION
Expand Down Expand Up @@ -250,6 +251,8 @@ class BackupRestoreService : Service() {

// SY -->
json.get(SAVEDSEARCHES)?.let { restoreSavedSearches(it) }

json.get(MERGEDMANGAREFERENCES)?.let { restoreMergedMangaReferences(it) }
// SY <--

// Store source mapping for error messages
Expand Down Expand Up @@ -296,7 +299,7 @@ class BackupRestoreService : Service() {
}

restoreProgress += 1
showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.categories))
showRestoreProgress(restoreProgress, restoreAmount, getString(R.string.merged_references))
}
// SY <--

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -316,4 +316,6 @@ object PreferenceKeys {
const val allowLocalSourceHiddenFolders = "allow_local_source_hidden_folders"

const val biometricTimeRanges = "biometric_time_ranges"

const val sortTagsForLibrary = "sort_tags_for_library"
}
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ class PreferencesHelper(val context: Context) {

fun eh_aggressivePageLoading() = flowPrefs.getBoolean(Keys.eh_aggressivePageLoading, false)

fun eh_preload_size() = flowPrefs.getInt(Keys.eh_preload_size, 4)
fun eh_preload_size() = flowPrefs.getInt(Keys.eh_preload_size, 10)

fun eh_useAutoWebtoon() = flowPrefs.getBoolean(Keys.eh_use_auto_webtoon, true)

Expand Down Expand Up @@ -392,7 +392,7 @@ class PreferencesHelper(val context: Context) {

fun groupLibraryUpdateType() = flowPrefs.getEnum(Keys.groupLibraryUpdateType, Values.GroupLibraryMode.GLOBAL)

fun useNewSourceNavigation() = flowPrefs.getBoolean(Keys.useNewSourceNavigation, false)
fun useNewSourceNavigation() = flowPrefs.getBoolean(Keys.useNewSourceNavigation, true)

fun mangaDexLowQualityCovers() = flowPrefs.getBoolean(Keys.mangaDexLowQualityCovers, false)

Expand Down Expand Up @@ -421,4 +421,6 @@ class PreferencesHelper(val context: Context) {
fun allowLocalSourceHiddenFolders() = flowPrefs.getBoolean(Keys.allowLocalSourceHiddenFolders, false)

fun biometricTimeRanges() = flowPrefs.getStringSet(Keys.biometricTimeRanges, mutableSetOf())

fun sortTagsForLibrary() = flowPrefs.getStringSet(Keys.sortTagsForLibrary, mutableSetOf())
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package eu.kanade.tachiyomi.ui.category.genre

import eu.davidea.flexibleadapter.FlexibleAdapter

/**
* Custom adapter for categories.
*
* @param controller The containing controller.
*/
class SortTagAdapter(controller: SortTagController) :
FlexibleAdapter<SortTagItem>(null, controller, true) {

/**
* Listener called when an item of the list is released.
*/
val onItemReleaseListener: OnItemReleaseListener = controller

/**
* Clears the active selections from the list and the model.
*/
override fun clearSelection() {
super.clearSelection()
(0 until itemCount).forEach { getItem(it)?.isSelected = false }
}

/**
* Toggles the selection of the given position.
*
* @param position The position to toggle.
*/
override fun toggleSelection(position: Int) {
super.toggleSelection(position)
getItem(position)?.isSelected = isSelected(position)
}

interface OnItemReleaseListener {
/**
* Called when an item of the list is released.
*/
fun onItemReleased(position: Int)
}
}
Loading

0 comments on commit de05f88

Please sign in to comment.