diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index fcfee32e6..0ccc71975 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -304,8 +304,6 @@ dependencies {
// JsonReader for similar manga
implementation("com.squareup.moshi:moshi:1.11.0")
- implementation("androidx.gridlayout:gridlayout:1.0.0")
-
implementation("com.mikepenz:fastadapter:5.3.4")
// SY <--
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0e76a4341..ba2ac6367 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
+
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
index 63c6aa848..f2af3a24d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt
@@ -82,7 +82,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
// SY <--
private suspend fun restoreManga(backupManga: BackupManga, backupCategories: List, online: Boolean) {
- var manga = backupManga.getMangaImpl()
+ val manga = backupManga.getMangaImpl()
val chapters = backupManga.getChaptersImpl()
val categories = backupManga.categories
val history = backupManga.history
@@ -93,7 +93,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier, private val
// SY <--
// SY -->
- manga = EXHMigrations.migrateBackupEntry(manga)
+ EXHMigrations.migrateBackupEntry(manga)
// SY <--
val source = backupManager.sourceManager.get(manga.source)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupRestore.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupRestore.kt
index 2d1c53c4f..49d786c86 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupRestore.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/LegacyBackupRestore.kt
@@ -91,7 +91,7 @@ class LegacyBackupRestore(context: Context, notifier: BackupNotifier) : Abstract
// SY <--
private suspend fun restoreManga(mangaJson: JsonObject) {
- /* SY --> */ var /* SY <-- */ manga = backupManager.parser.fromJson(
+ val manga = backupManager.parser.fromJson(
mangaJson.get(
Backup.MANGA
)
@@ -114,7 +114,7 @@ class LegacyBackupRestore(context: Context, notifier: BackupNotifier) : Abstract
)
// EXH -->
- manga = EXHMigrations.migrateBackupEntry(manga)
+ EXHMigrations.migrateBackupEntry(manga)
// <-- EXH
val source = backupManager.sourceManager.get(manga.source)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt
index 1118f7748..63973012a 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt
@@ -20,6 +20,7 @@ import exh.search.SearchEngine
import exh.search.Text
import exh.source.isMetadataSource
import exh.util.cancellable
+import exh.util.executeOnIO
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -115,7 +116,7 @@ class LibraryCategoryAdapter(view: LibraryCategoryView, val controller: LibraryC
// Prepare filter object
val parsedQuery = searchEngine.parseQuery(savedSearchText)
- val mangaWithMetaIdsQuery = db.getIdsOfFavoriteMangaWithMetadata().executeAsBlocking()
+ val mangaWithMetaIdsQuery = db.getIdsOfFavoriteMangaWithMetadata().executeOnIO()
val mangaWithMetaIds = LongArray(mangaWithMetaIdsQuery.count)
if (mangaWithMetaIds.isNotEmpty()) {
val mangaIdCol = mangaWithMetaIdsQuery.getColumnIndex(MangaTable.COL_ID)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
index 8aca99622..8fbd38d3d 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
@@ -684,7 +684,7 @@ class LibraryController(
it.source in nHentaiSourceIds ||
it.source == PERV_EDEN_EN_SOURCE_ID ||
it.source == PERV_EDEN_IT_SOURCE_ID
- }.toList()
+ }
presenter.cleanTitles(mangas)
destroyActionModeIfNeeded()
}
@@ -692,7 +692,7 @@ class LibraryController(
private fun pushToMdList() {
val mangas = selectedMangas.filter {
it.source in mangaDexSourceIds
- }.toList()
+ }
presenter.syncMangaToDex(mangas)
}
// SY <--
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
index 77e1a956a..630f46239 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
@@ -137,7 +137,7 @@ class MainActivity : BaseViewBindingActivity() {
}
// SY -->
R.id.nav_updates -> {
- if (router.backstack.last().controller() !is DownloadController) {
+ if (router.backstack.lastOrNull()?.controller() !is DownloadController) {
val controller = router.getControllerWithTag(id.toString()) as? UpdatesController
controller?.router?.pushController(DownloadController().withFadeTransaction())
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt
index 93222fb9d..d1d4f77c0 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt
@@ -44,6 +44,7 @@ import exh.metadata.metadata.base.getFlatMetadataForManga
import exh.source.isEhBasedManga
import exh.uconfig.WarnConfigureDialogController
import exh.ui.login.LoginController
+import exh.util.executeOnIO
import exh.util.floor
import exh.util.nullIfBlank
import exh.util.trans
@@ -635,10 +636,10 @@ class SettingsEhController : SettingsController() {
context.getString(R.string.gallery_updater_stats_text, getRelativeTimeString(getRelativeTimeFromNow(stats.startTime.milliseconds), context), stats.updateCount, stats.possibleUpdates)
} else context.getString(R.string.gallery_updater_not_ran_yet)
- val allMeta = db.getFavoriteMangaWithMetadata().executeAsBlocking()
+ val allMeta = db.getFavoriteMangaWithMetadata().executeOnIO()
.filter(Manga::isEhBasedManga)
.mapNotNull {
- db.getFlatMetadataForManga(it.id!!).executeAsBlocking()
+ db.getFlatMetadataForManga(it.id!!).executeOnIO()
?.raise()
}.toList()
diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt
index d100032a0..9ce0917f4 100644
--- a/app/src/main/java/exh/EXHMigrations.kt
+++ b/app/src/main/java/exh/EXHMigrations.kt
@@ -4,12 +4,9 @@ import android.content.Context
import com.pushtorefresh.storio.sqlite.queries.Query
import com.pushtorefresh.storio.sqlite.queries.RawQuery
import eu.kanade.tachiyomi.BuildConfig
-import eu.kanade.tachiyomi.data.backup.legacy.models.DHistory
import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga
-import eu.kanade.tachiyomi.data.database.models.MangaImpl
-import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.database.resolvers.MangaUrlPutResolver
import eu.kanade.tachiyomi.data.database.tables.ChapterTable
import eu.kanade.tachiyomi.data.database.tables.MangaTable
@@ -70,18 +67,7 @@ object EXHMigrations {
}
if (oldVersion < 4) {
db.inTransaction {
- db.lowLevel().executeSQL(
- RawQuery.builder()
- .query(
- """
- UPDATE ${MangaTable.TABLE}
- SET ${MangaTable.COL_SOURCE} = $HBROWSE_SOURCE_ID
- WHERE ${MangaTable.COL_SOURCE} = 6912
- """.trimIndent()
- )
- .affectsTables(MangaTable.TABLE)
- .build()
- )
+ updateSourceId(HBROWSE_SOURCE_ID, 6912)
// Migrate BHrowse URLs
val hBrowseManga = db.db.get()
.listOfObjects(Manga::class.java)
@@ -107,59 +93,15 @@ object EXHMigrations {
}
if (oldVersion < 5) {
db.inTransaction {
- // Migrate Tsumino source IDs
- db.lowLevel().executeSQL(
- RawQuery.builder()
- .query(
- """
- UPDATE ${MangaTable.TABLE}
- SET ${MangaTable.COL_SOURCE} = ${Hitomi.otherId}
- WHERE ${MangaTable.COL_SOURCE} = 6910
- """.trimIndent()
- )
- .affectsTables(MangaTable.TABLE)
- .build()
- )
+ // Migrate Hitomi source IDs
+ updateSourceId(Hitomi.otherId, 6910)
}
}
if (oldVersion < 6) {
db.inTransaction {
- db.lowLevel().executeSQL(
- RawQuery.builder()
- .query(
- """
- UPDATE ${MangaTable.TABLE}
- SET ${MangaTable.COL_SOURCE} = $PERV_EDEN_EN_SOURCE_ID
- WHERE ${MangaTable.COL_SOURCE} = 6905
- """.trimIndent()
- )
- .affectsTables(MangaTable.TABLE)
- .build()
- )
- db.lowLevel().executeSQL(
- RawQuery.builder()
- .query(
- """
- UPDATE ${MangaTable.TABLE}
- SET ${MangaTable.COL_SOURCE} = $PERV_EDEN_IT_SOURCE_ID
- WHERE ${MangaTable.COL_SOURCE} = 6906
- """.trimIndent()
- )
- .affectsTables(MangaTable.TABLE)
- .build()
- )
- db.lowLevel().executeSQL(
- RawQuery.builder()
- .query(
- """
- UPDATE ${MangaTable.TABLE}
- SET ${MangaTable.COL_SOURCE} = ${NHentai.otherId}
- WHERE ${MangaTable.COL_SOURCE} = 6907
- """.trimIndent()
- )
- .affectsTables(MangaTable.TABLE)
- .build()
- )
+ updateSourceId(PERV_EDEN_EN_SOURCE_ID, 6905)
+ updateSourceId(PERV_EDEN_IT_SOURCE_ID, 6906)
+ updateSourceId(NHentai.otherId, 6907)
}
}
if (oldVersion < 7) {
@@ -271,7 +213,7 @@ object EXHMigrations {
// if (oldVersion < 1) { } (1 is current release version)
// do stuff here when releasing changed crap
- // TODO BE CAREFUL TO NOT FUCK UP MergedSources IF CHANGING URLsxdcsv
+ // TODO BE CAREFUL TO NOT FUCK UP MergedSources IF CHANGING URLs
preferences.ehLastVersionCode().set(BuildConfig.VERSION_CODE)
@@ -283,7 +225,7 @@ object EXHMigrations {
return false
}
- fun migrateBackupEntry(manga: MangaImpl): MangaImpl {
+ fun migrateBackupEntry(manga: Manga) {
if (manga.source == 6905L) {
manga.source = PERV_EDEN_EN_SOURCE_ID
}
@@ -315,14 +257,13 @@ object EXHMigrations {
if (manga.source == 6912L) {
manga.source = HBROWSE_SOURCE_ID
+ manga.url = manga.url + "/c00001/"
}
// Allow importing of EHentai extension backups
if (manga.source in BlacklistedSources.EHENTAI_EXT_SOURCES) {
manga.source = EH_SOURCE_ID
}
-
- return manga
}
private fun backupDatabase(context: Context, oldMigrationVersion: Int) {
@@ -406,12 +347,19 @@ object EXHMigrations {
}
private data class LoadedMangaSource(val source: Source, val manga: Manga)
-}
-data class BackupEntry(
- val manga: Manga,
- val chapters: List,
- val categories: List,
- val history: List,
- val tracks: List