From 3d1c02136affc0f8433949e3b445477b6f20cb71 Mon Sep 17 00:00:00 2001 From: NerdNumber9 Date: Fri, 2 Aug 2019 22:32:50 -0400 Subject: [PATCH] Transfer commit --- .../process/MigrationProcedureAdapter.kt | 65 ++++++- .../process/MigrationProcedureController.kt | 8 +- .../main/res/layout/eh_migration_design.xml | 2 +- .../res/layout/eh_migration_process_item.xml | 174 ++++++++++-------- 4 files changed, 173 insertions(+), 76 deletions(-) diff --git a/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureAdapter.kt b/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureAdapter.kt index fc8c49cb3..b8e794baa 100644 --- a/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureAdapter.kt +++ b/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureAdapter.kt @@ -8,16 +8,21 @@ import com.google.gson.Gson import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.database.models.MangaCategory import eu.kanade.tachiyomi.data.glide.GlideApp +import eu.kanade.tachiyomi.data.preference.getOrDefault import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.all.MergedSource import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.ui.manga.info.MangaInfoController +import eu.kanade.tachiyomi.ui.migration.MigrationFlags import eu.kanade.tachiyomi.util.gone import eu.kanade.tachiyomi.util.inflate +import eu.kanade.tachiyomi.util.syncChaptersWithSource import eu.kanade.tachiyomi.util.visible import exh.MERGED_SOURCE_ID import exh.debug.DebugFunctions.sourceManager @@ -53,7 +58,7 @@ class MigrationProcedureAdapter(val controller: MigrationProcedureController, } view.accept_migration.setOnClickListener { - + view.migrating_frame.visible() } val viewTag = ViewTag(coroutineContext) @@ -63,6 +68,64 @@ class MigrationProcedureAdapter(val controller: MigrationProcedureController, return view } + fun performMigration() { + + } + private fun migrateMangaInternal(source: Source, + sourceChapters: List, + prevManga: Manga, + manga: Manga, + replace: Boolean) { + db.inTransaction { + // Update chapters read + if (migrateChapters) { + try { + syncChaptersWithSource(db, sourceChapters, manga, source) + } catch (e: Exception) { + // Worst case, chapters won't be synced + } + + val prevMangaChapters = db.getChapters(prevManga).executeAsBlocking() + val maxChapterRead = prevMangaChapters.filter { it.read } + .maxBy { it.chapter_number }?.chapter_number + if (maxChapterRead != null) { + val dbChapters = db.getChapters(manga).executeAsBlocking() + for (chapter in dbChapters) { + if (chapter.isRecognizedNumber && chapter.chapter_number <= maxChapterRead) { + chapter.read = true + } + } + db.insertChapters(dbChapters).executeAsBlocking() + } + } + // Update categories + if (migrateCategories) { + val categories = db.getCategoriesForManga(prevManga).executeAsBlocking() + val mangaCategories = categories.map { MangaCategory.create(manga, it) } + db.setMangaCategories(mangaCategories, listOf(manga)) + } + // Update track + if (migrateTracks) { + val tracks = db.getTracks(prevManga).executeAsBlocking() + for (track in tracks) { + track.id = null + track.manga_id = manga.id!! + } + db.insertTracks(tracks).executeAsBlocking() + } + // Update favorite status + if (replace) { + prevManga.favorite = false + db.updateMangaFavorite(prevManga).executeAsBlocking() + } + manga.favorite = true + db.updateMangaFavorite(manga).executeAsBlocking() + + // SearchPresenter#networkToLocalManga may have updated the manga title, so ensure db gets updated title + db.updateMangaTitle(manga).executeAsBlocking() + } + } + fun View.setupView(tag: ViewTag, migratingManga: MigratingManga) { tag.launch { val manga = migratingManga.manga() diff --git a/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureController.kt b/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureController.kt index badeecb80..6294dbf07 100644 --- a/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureController.kt +++ b/app/src/main/java/exh/ui/migration/manga/process/MigrationProcedureController.kt @@ -71,6 +71,12 @@ class MigrationProcedureController(bundle: Bundle? = null) : BaseExhController(b runMigrations(newMigratingManga) } } + + updateTitle() + } + + fun updateTitle() { + titleText = "Migrate manga (${pager.currentItem + 1}/${adapter?.count ?: 0})" } fun nextMigration() { @@ -80,7 +86,7 @@ class MigrationProcedureController(bundle: Bundle? = null) : BaseExhController(b router.popCurrentController() } else { pager.setCurrentItem(pager.currentItem + 1, true) - titleText = "Migrate manga (${pager.currentItem + 1}/${adapter.count})" + updateTitle() launch(Dispatchers.Main) { setTitle() } diff --git a/app/src/main/res/layout/eh_migration_design.xml b/app/src/main/res/layout/eh_migration_design.xml index e8bdf43c8..8c0314bf3 100644 --- a/app/src/main/res/layout/eh_migration_design.xml +++ b/app/src/main/res/layout/eh_migration_design.xml @@ -69,7 +69,7 @@ android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginBottom="8dp" - android:text="Search options" + android:text="Options" android:textAppearance="@style/TextAppearance.Medium.Body2" app:layout_constraintBottom_toTopOf="@+id/prioritize_chapter_count" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/layout/eh_migration_process_item.xml b/app/src/main/res/layout/eh_migration_process_item.xml index 4762a4be2..cde9594df 100644 --- a/app/src/main/res/layout/eh_migration_process_item.xml +++ b/app/src/main/res/layout/eh_migration_process_item.xml @@ -1,83 +1,111 @@ - - + - + - + -