Rewrite E-H favorites sync database, fixes:
- Freezing issues - Build times - Probably fixes bloated app size
This commit is contained in:
@@ -57,7 +57,6 @@ import exh.log.XLogLogcatLogger
|
||||
import exh.log.xLogD
|
||||
import exh.log.xLogE
|
||||
import exh.syDebugVersion
|
||||
import io.realm.Realm
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import logcat.LogPriority
|
||||
@@ -99,7 +98,6 @@ open class App : Application(), DefaultLifecycleObserver, ImageLoaderFactory {
|
||||
Injekt.importModule(AppModule(this))
|
||||
|
||||
setupNotificationChannels()
|
||||
Realm.init(this)
|
||||
if ((BuildConfig.DEBUG || BuildConfig.BUILD_TYPE == "releaseTest") && DebugToggles.ENABLE_DEBUG_OVERLAY.enabled) {
|
||||
setupDebugOverlay()
|
||||
}
|
||||
|
||||
@@ -21,6 +21,9 @@ import eu.kanade.tachiyomi.data.database.queries.HistoryQueries
|
||||
import eu.kanade.tachiyomi.data.database.queries.MangaCategoryQueries
|
||||
import eu.kanade.tachiyomi.data.database.queries.MangaQueries
|
||||
import eu.kanade.tachiyomi.data.database.queries.TrackQueries
|
||||
import exh.favorites.sql.mappers.FavoriteEntryTypeMapping
|
||||
import exh.favorites.sql.models.FavoriteEntry
|
||||
import exh.favorites.sql.queries.FavoriteEntryQueries
|
||||
import exh.merged.sql.mappers.MergedMangaTypeMapping
|
||||
import exh.merged.sql.models.MergedMangaReference
|
||||
import exh.merged.sql.queries.MergedQueries
|
||||
@@ -39,7 +42,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
|
||||
* This class provides operations to manage the database through its interfaces.
|
||||
*/
|
||||
open class DatabaseHelper(context: Context) :
|
||||
MangaQueries, ChapterQueries, TrackQueries, CategoryQueries, MangaCategoryQueries, HistoryQueries /* SY --> */, SearchMetadataQueries, SearchTagQueries, SearchTitleQueries, MergedQueries /* SY <-- */ {
|
||||
MangaQueries, ChapterQueries, TrackQueries, CategoryQueries, MangaCategoryQueries, HistoryQueries /* SY --> */, SearchMetadataQueries, SearchTagQueries, SearchTitleQueries, MergedQueries, FavoriteEntryQueries /* SY <-- */ {
|
||||
|
||||
private val configuration = SupportSQLiteOpenHelper.Configuration.builder(context)
|
||||
.name(DbOpenCallback.DATABASE_NAME)
|
||||
@@ -59,6 +62,7 @@ open class DatabaseHelper(context: Context) :
|
||||
.addTypeMapping(SearchTag::class.java, SearchTagTypeMapping())
|
||||
.addTypeMapping(SearchTitle::class.java, SearchTitleTypeMapping())
|
||||
.addTypeMapping(MergedMangaReference::class.java, MergedMangaTypeMapping())
|
||||
.addTypeMapping(FavoriteEntry::class.java, FavoriteEntryTypeMapping())
|
||||
// SY <--
|
||||
.build()
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.data.database.tables.HistoryTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.MangaTable
|
||||
import eu.kanade.tachiyomi.data.database.tables.TrackTable
|
||||
import exh.favorites.sql.tables.FavoriteEntryTable
|
||||
import exh.merged.sql.tables.MergedTable
|
||||
import exh.metadata.sql.tables.SearchMetadataTable
|
||||
import exh.metadata.sql.tables.SearchTagTable
|
||||
@@ -24,7 +25,7 @@ class DbOpenCallback : SupportSQLiteOpenHelper.Callback(DATABASE_VERSION) {
|
||||
/**
|
||||
* Version of the database.
|
||||
*/
|
||||
const val DATABASE_VERSION = /* SY --> */ 10 /* SY <-- */
|
||||
const val DATABASE_VERSION = /* SY --> */ 11 /* SY <-- */
|
||||
}
|
||||
|
||||
override fun onCreate(db: SupportSQLiteDatabase) = with(db) {
|
||||
@@ -93,6 +94,9 @@ class DbOpenCallback : SupportSQLiteOpenHelper.Callback(DATABASE_VERSION) {
|
||||
if (oldVersion < 10) {
|
||||
db.execSQL(ChapterTable.fixDateUploadIfNeeded)
|
||||
}
|
||||
if (oldVersion < 11) {
|
||||
db.execSQL(FavoriteEntryTable.createTableQuery)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onConfigure(db: SupportSQLiteDatabase) {
|
||||
|
||||
@@ -25,6 +25,7 @@ import eu.kanade.tachiyomi.source.online.UrlImportableSource
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import eu.kanade.tachiyomi.util.lang.runAsObservable
|
||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||
import exh.debug.DebugToggles
|
||||
import exh.eh.EHTags
|
||||
import exh.eh.EHentaiUpdateHelper
|
||||
@@ -716,7 +717,7 @@ class EHentai(
|
||||
throw UnsupportedOperationException("Unused method was called somehow!")
|
||||
}
|
||||
|
||||
fun fetchFavorites(): Pair<List<ParsedManga>, List<String>> {
|
||||
suspend fun fetchFavorites(): Pair<List<ParsedManga>, List<String>> {
|
||||
val favoriteUrl = "$baseUrl/favorites.php"
|
||||
val result = mutableListOf<ParsedManga>()
|
||||
var page = 1
|
||||
@@ -724,13 +725,15 @@ class EHentai(
|
||||
var favNames: List<String>? = null
|
||||
|
||||
do {
|
||||
val response2 = client.newCall(
|
||||
exGet(
|
||||
favoriteUrl,
|
||||
page = page,
|
||||
cache = false
|
||||
)
|
||||
).execute()
|
||||
val response2 = withIOContext {
|
||||
client.newCall(
|
||||
exGet(
|
||||
favoriteUrl,
|
||||
page = page,
|
||||
cache = false
|
||||
)
|
||||
).awaitResponse()
|
||||
}
|
||||
val doc = response2.asJsoup()
|
||||
|
||||
// Parse favorites
|
||||
|
||||
@@ -40,7 +40,6 @@ import exh.eh.EHentaiUpdateWorker
|
||||
import exh.eh.EHentaiUpdateWorkerConstants
|
||||
import exh.eh.EHentaiUpdaterStats
|
||||
import exh.favorites.FavoritesIntroDialog
|
||||
import exh.favorites.LocalFavoritesStorage
|
||||
import exh.log.xLogD
|
||||
import exh.metadata.metadata.EHentaiSearchMetadata
|
||||
import exh.metadata.metadata.base.getFlatMetadataForManga
|
||||
@@ -49,7 +48,6 @@ import exh.uconfig.WarnConfigureDialogController
|
||||
import exh.ui.login.EhLoginActivity
|
||||
import exh.util.executeOnIO
|
||||
import exh.util.nullIfBlank
|
||||
import exh.util.trans
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
@@ -362,12 +360,8 @@ class SettingsEhController : SettingsController() {
|
||||
.setTitle(R.string.favorites_sync_reset)
|
||||
.setMessage(R.string.favorites_sync_reset_message)
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
LocalFavoritesStorage().apply {
|
||||
getRealm().use {
|
||||
it.trans {
|
||||
clearSnapshots(it)
|
||||
}
|
||||
}
|
||||
db.inTransaction {
|
||||
db.deleteAllFavoriteEntries().executeAsBlocking()
|
||||
}
|
||||
activity.toast(context.getString(R.string.sync_state_reset), Toast.LENGTH_LONG)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user