mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 02:34:39 +00:00
revert: Revert "Revert "Modularize the app""
This reverts commit f59f2346dc
.
This commit is contained in:
parent
9feba40ab7
commit
2b46f94a5a
290 changed files with 1655 additions and 881 deletions
|
@ -18,11 +18,13 @@
|
||||||
|
|
||||||
## Other
|
## Other
|
||||||
- Some code refactors
|
- Some code refactors
|
||||||
|
- Simplify some messy code
|
||||||
|
- Rewrite version checker
|
||||||
|
- Rewrite Migrator
|
||||||
|
- Split the project into several modules
|
||||||
- Update firebase bom to v33.1.0
|
- Update firebase bom to v33.1.0
|
||||||
- Update dependency co.touchlab:kermit-crashlytics to v3.9.0
|
- Update dependency co.touchlab:kermit-crashlytics to v3.9.0
|
||||||
- Update dependency com.google.android.gms:play-services-oss-licenses to v17.1.0
|
- Update dependency com.google.android.gms:play-services-oss-licenses to v17.1.0
|
||||||
- Update dependency com.google.gms:google-services to v4.4.2
|
- Update dependency com.google.gms:google-services to v4.4.2
|
||||||
- Add crashlytics integration for Kermit
|
- Add crashlytics integration for Kermit
|
||||||
- Replace ProgressBar with ProgressIndicator from Material3 to improve UI consistency
|
- Replace ProgressBar with ProgressIndicator from Material3 to improve UI consistency
|
||||||
- Rewrite version checker
|
|
||||||
- Rewrite Migrator
|
|
||||||
|
|
|
@ -39,14 +39,9 @@ val buildTime: String by lazy {
|
||||||
val supportedAbis = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
val supportedAbis = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk = AndroidConfig.compileSdk
|
|
||||||
ndkVersion = AndroidConfig.ndk
|
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdk = AndroidConfig.minSdk
|
|
||||||
targetSdk = AndroidConfig.targetSdk
|
|
||||||
applicationId = "eu.kanade.tachiyomi"
|
applicationId = "eu.kanade.tachiyomi"
|
||||||
versionCode = 137
|
versionCode = 138
|
||||||
versionName = "1.8.4"
|
versionName = "1.8.4"
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
multiDexEnabled = true
|
multiDexEnabled = true
|
||||||
|
@ -145,14 +140,6 @@ android {
|
||||||
kotlinCompilerExtensionVersion = compose.versions.compose.compiler.get()
|
kotlinCompilerExtensionVersion = compose.versions.compose.compiler.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_17
|
|
||||||
targetCompatibility = JavaVersion.VERSION_17
|
|
||||||
isCoreLibraryDesugaringEnabled = true
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "17"
|
|
||||||
}
|
|
||||||
namespace = "eu.kanade.tachiyomi"
|
namespace = "eu.kanade.tachiyomi"
|
||||||
|
|
||||||
sqldelight {
|
sqldelight {
|
||||||
|
@ -167,6 +154,10 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation(projects.core)
|
||||||
|
implementation(projects.i18n)
|
||||||
|
implementation(projects.sourceApi)
|
||||||
|
|
||||||
// Compose
|
// Compose
|
||||||
implementation(compose.bundles.compose)
|
implementation(compose.bundles.compose)
|
||||||
debugImplementation(compose.ui.tooling)
|
debugImplementation(compose.ui.tooling)
|
||||||
|
@ -280,8 +271,8 @@ dependencies {
|
||||||
|
|
||||||
implementation(kotlin("stdlib", org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION))
|
implementation(kotlin("stdlib", org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION))
|
||||||
|
|
||||||
implementation(kotlinx.coroutines.core)
|
implementation(platform(kotlinx.coroutines.bom))
|
||||||
implementation(kotlinx.coroutines.android)
|
implementation(kotlinx.bundles.coroutines)
|
||||||
|
|
||||||
// Text distance
|
// Text distance
|
||||||
implementation(libs.java.string.similarity)
|
implementation(libs.java.string.similarity)
|
||||||
|
@ -296,8 +287,6 @@ dependencies {
|
||||||
|
|
||||||
implementation(kotlinx.immutable)
|
implementation(kotlinx.immutable)
|
||||||
|
|
||||||
"coreLibraryDesugaring"(libs.desugar)
|
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
testImplementation(libs.bundles.test)
|
testImplementation(libs.bundles.test)
|
||||||
testRuntimeOnly(libs.bundles.test.runtime)
|
testRuntimeOnly(libs.bundles.test.runtime)
|
||||||
|
@ -306,13 +295,6 @@ dependencies {
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
withType<Test> {
|
|
||||||
useJUnitPlatform()
|
|
||||||
testLogging {
|
|
||||||
events("passed", "skipped", "failed")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers)
|
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers)
|
||||||
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
||||||
kotlinOptions.freeCompilerArgs += listOf(
|
kotlinOptions.freeCompilerArgs += listOf(
|
||||||
|
|
24
app/proguard-rules.pro
vendored
24
app/proguard-rules.pro
vendored
|
@ -1,19 +1,19 @@
|
||||||
-dontobfuscate
|
-dontobfuscate
|
||||||
|
|
||||||
-keep class eu.kanade.tachiyomi.source.** { public protected *; } # Avoid access modification
|
-keep,allowoptimization class eu.kanade.**
|
||||||
-keep,allowoptimization class eu.kanade.** { public protected *; }
|
-keep,allowoptimization class tachiyomi.**
|
||||||
-keep,allowoptimization class tachiyomi.** { public protected *; }
|
-keep,allowoptimization class yokai.**
|
||||||
-keep,allowoptimization class dev.yokai.** { public protected *; }
|
|
||||||
|
|
||||||
# Keep common dependencies used in extensions
|
# Keep common dependencies used in extensions
|
||||||
-keep class androidx.preference.** { public protected *; }
|
-keep,allowoptimization class androidx.preference.** { public protected *; }
|
||||||
-keep class kotlin.** { public protected *; }
|
-keep,allowoptimization class kotlin.** { public protected *; }
|
||||||
-keep,allowoptimization class kotlinx.coroutines.** { public protected *; }
|
-keep,allowoptimization class kotlinx.coroutines.** { public protected *; }
|
||||||
-keep class kotlinx.serialization.** { public protected *; }
|
-keep,allowoptimization class kotlinx.serialization.** { public protected *; }
|
||||||
-keep class okhttp3.** { public protected *; }
|
-keep,allowoptimization class kotlin.time.** { public protected *; }
|
||||||
|
-keep,allowoptimization class okhttp3.** { public protected *; }
|
||||||
-keep,allowoptimization class okio.** { public protected *; }
|
-keep,allowoptimization class okio.** { public protected *; }
|
||||||
-keep,allowoptimization class rx.** { public protected *; }
|
-keep,allowoptimization class rx.** { public protected *; }
|
||||||
-keep class org.jsoup.** { public protected *; }
|
-keep,allowoptimization class org.jsoup.** { public protected *; }
|
||||||
-keep,allowoptimization class com.google.gson.** { public protected *; }
|
-keep,allowoptimization class com.google.gson.** { public protected *; }
|
||||||
-keep,allowoptimization class app.cash.quickjs.** { public protected *; }
|
-keep,allowoptimization class app.cash.quickjs.** { public protected *; }
|
||||||
-keep,allowoptimization class uy.kohesive.injekt.** { public protected *; }
|
-keep,allowoptimization class uy.kohesive.injekt.** { public protected *; }
|
||||||
|
@ -73,11 +73,11 @@
|
||||||
kotlinx.serialization.KSerializer serializer(...);
|
kotlinx.serialization.KSerializer serializer(...);
|
||||||
}
|
}
|
||||||
|
|
||||||
-keep,includedescriptorclasses class dev.yokai.**$$serializer { *; }
|
-keep,includedescriptorclasses class yokai.**$$serializer { *; }
|
||||||
-keepclassmembers class dev.yokai.** {
|
-keepclassmembers class yokai.** {
|
||||||
*** Companion;
|
*** Companion;
|
||||||
}
|
}
|
||||||
-keepclasseswithmembers class dev.yokai.** {
|
-keepclasseswithmembers class yokai.** {
|
||||||
kotlinx.serialization.KSerializer serializer(...);
|
kotlinx.serialization.KSerializer serializer(...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
package dev.yokai.core.di
|
|
||||||
|
|
||||||
import dev.yokai.data.chapter.ChapterRepositoryImpl
|
|
||||||
import dev.yokai.domain.extension.repo.ExtensionRepoRepository
|
|
||||||
import dev.yokai.data.extension.repo.ExtensionRepoRepositoryImpl
|
|
||||||
import dev.yokai.data.library.custom.CustomMangaRepositoryImpl
|
|
||||||
import dev.yokai.data.manga.MangaRepositoryImpl
|
|
||||||
import dev.yokai.domain.chapter.ChapterRepository
|
|
||||||
import dev.yokai.domain.chapter.interactor.GetAvailableScanlators
|
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.CreateExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.DeleteExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.GetExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.GetExtensionRepoCount
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.ReplaceExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.UpdateExtensionRepo
|
|
||||||
import dev.yokai.domain.library.custom.CustomMangaRepository
|
|
||||||
import dev.yokai.domain.library.custom.interactor.CreateCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.DeleteCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.GetCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.RelinkCustomManga
|
|
||||||
import dev.yokai.domain.manga.MangaRepository
|
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import uy.kohesive.injekt.api.InjektModule
|
|
||||||
import uy.kohesive.injekt.api.InjektRegistrar
|
|
||||||
import uy.kohesive.injekt.api.addFactory
|
|
||||||
import uy.kohesive.injekt.api.addSingletonFactory
|
|
||||||
import uy.kohesive.injekt.api.get
|
|
||||||
|
|
||||||
class DomainModule : InjektModule {
|
|
||||||
override fun InjektRegistrar.registerInjectables() {
|
|
||||||
addFactory { TrustExtension(get(), get()) }
|
|
||||||
|
|
||||||
addSingletonFactory<ExtensionRepoRepository> { ExtensionRepoRepositoryImpl(get()) }
|
|
||||||
addFactory { CreateExtensionRepo(get()) }
|
|
||||||
addFactory { DeleteExtensionRepo(get()) }
|
|
||||||
addFactory { GetExtensionRepo(get()) }
|
|
||||||
addFactory { GetExtensionRepoCount(get()) }
|
|
||||||
addFactory { ReplaceExtensionRepo(get()) }
|
|
||||||
addFactory { UpdateExtensionRepo(get(), get()) }
|
|
||||||
|
|
||||||
addSingletonFactory<CustomMangaRepository> { CustomMangaRepositoryImpl(get()) }
|
|
||||||
addFactory { CreateCustomManga(get()) }
|
|
||||||
addFactory { DeleteCustomManga(get()) }
|
|
||||||
addFactory { GetCustomManga(get()) }
|
|
||||||
addFactory { RelinkCustomManga(get()) }
|
|
||||||
|
|
||||||
addSingletonFactory<MangaRepository> { MangaRepositoryImpl(get()) }
|
|
||||||
addFactory { GetLibraryManga(get()) }
|
|
||||||
|
|
||||||
addSingletonFactory<ChapterRepository> { ChapterRepositoryImpl(get()) }
|
|
||||||
addFactory { GetAvailableScanlators(get()) }
|
|
||||||
addFactory { GetChapters(get()) }
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -34,13 +34,6 @@ import coil3.request.crossfade
|
||||||
import coil3.util.DebugLogger
|
import coil3.util.DebugLogger
|
||||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||||
import com.google.firebase.ktx.Firebase
|
import com.google.firebase.ktx.Firebase
|
||||||
import dev.yokai.core.CrashlyticsLogWriter
|
|
||||||
import dev.yokai.core.di.AppModule
|
|
||||||
import dev.yokai.core.di.DomainModule
|
|
||||||
import dev.yokai.core.di.PreferenceModule
|
|
||||||
import dev.yokai.core.migration.Migrator
|
|
||||||
import dev.yokai.core.migration.migrations.migrations
|
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
|
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
|
||||||
import eu.kanade.tachiyomi.core.preference.Preference
|
import eu.kanade.tachiyomi.core.preference.Preference
|
||||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
||||||
|
@ -67,6 +60,13 @@ import org.conscrypt.Conscrypt
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.core.CrashlyticsLogWriter
|
||||||
|
import yokai.core.di.AppModule
|
||||||
|
import yokai.core.di.DomainModule
|
||||||
|
import yokai.core.di.PreferenceModule
|
||||||
|
import yokai.core.migration.Migrator
|
||||||
|
import yokai.core.migration.migrations.migrations
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
import java.security.Security
|
import java.security.Security
|
||||||
|
|
||||||
open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory {
|
open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory {
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
package eu.kanade.tachiyomi.core.storage.preference
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.State
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
|
import eu.kanade.tachiyomi.core.preference.Preference
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun <T> Preference<T>.collectAsState(): State<T> {
|
||||||
|
val flow = remember(this) { changes() }
|
||||||
|
return flow.collectAsState(initial = get())
|
||||||
|
}
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
||||||
import eu.kanade.tachiyomi.data.backup.create.creators.CategoriesBackupCreator
|
import eu.kanade.tachiyomi.data.backup.create.creators.CategoriesBackupCreator
|
||||||
|
@ -22,6 +21,7 @@ import okio.sink
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
|
||||||
class BackupCreator(
|
class BackupCreator(
|
||||||
|
|
|
@ -14,7 +14,6 @@ import androidx.work.WorkerParameters
|
||||||
import androidx.work.workDataOf
|
import androidx.work.workDataOf
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupNotifier
|
import eu.kanade.tachiyomi.data.backup.BackupNotifier
|
||||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
|
@ -24,6 +23,7 @@ import eu.kanade.tachiyomi.util.system.notificationManager
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|
||||||
class BackupCreatorJob(private val context: Context, workerParams: WorkerParameters) :
|
class BackupCreatorJob(private val context: Context, workerParams: WorkerParameters) :
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.data.backup.models
|
package eu.kanade.tachiyomi.data.backup.models
|
||||||
|
|
||||||
import dev.yokai.core.metadata.ComicInfo
|
|
||||||
import dev.yokai.core.metadata.ComicInfoPublishingStatus
|
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||||
|
@ -12,6 +9,7 @@ import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
||||||
import eu.kanade.tachiyomi.util.chapter.ChapterUtil
|
import eu.kanade.tachiyomi.util.chapter.ChapterUtil
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.protobuf.ProtoNumber
|
import kotlinx.serialization.protobuf.ProtoNumber
|
||||||
|
import yokai.domain.library.custom.model.CustomMangaInfo
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@Serializable
|
@Serializable
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.data.backup.restore.restorers
|
package eu.kanade.tachiyomi.data.backup.restore.restorers
|
||||||
|
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo
|
|
||||||
import eu.kanade.tachiyomi.data.backup.models.BackupCategory
|
import eu.kanade.tachiyomi.data.backup.models.BackupCategory
|
||||||
import eu.kanade.tachiyomi.data.backup.models.BackupHistory
|
import eu.kanade.tachiyomi.data.backup.models.BackupHistory
|
||||||
import eu.kanade.tachiyomi.data.backup.models.BackupManga
|
import eu.kanade.tachiyomi.data.backup.models.BackupManga
|
||||||
|
@ -18,6 +17,7 @@ import eu.kanade.tachiyomi.util.manga.MangaUtil
|
||||||
import eu.kanade.tachiyomi.util.system.launchNow
|
import eu.kanade.tachiyomi.util.system.launchNow
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.library.custom.model.CustomMangaInfo
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
class MangaBackupRestorer(
|
class MangaBackupRestorer(
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
package eu.kanade.tachiyomi.data.database.models
|
package eu.kanade.tachiyomi.data.database.models
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
|
|
||||||
|
fun SChapter.toChapter(): ChapterImpl {
|
||||||
|
return ChapterImpl().apply {
|
||||||
|
name = this@SChapter.name
|
||||||
|
url = this@SChapter.url
|
||||||
|
date_upload = this@SChapter.date_upload
|
||||||
|
chapter_number = this@SChapter.chapter_number
|
||||||
|
scanlator = this@SChapter.scanlator
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class ChapterImpl : Chapter {
|
class ChapterImpl : Chapter {
|
||||||
|
|
||||||
override var id: Long? = null
|
override var id: Long? = null
|
||||||
|
|
|
@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.ui.reader.settings.ReadingModeType
|
||||||
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.util.Locale
|
import java.util.*
|
||||||
|
|
||||||
interface Manga : SManga {
|
interface Manga : SManga {
|
||||||
|
|
||||||
|
@ -34,6 +34,55 @@ interface Manga : SManga {
|
||||||
|
|
||||||
var filtered_scanlators: String?
|
var filtered_scanlators: String?
|
||||||
|
|
||||||
|
val originalTitle: String
|
||||||
|
get() = (this as? MangaImpl)?.ogTitle ?: title
|
||||||
|
val originalAuthor: String?
|
||||||
|
get() = (this as? MangaImpl)?.ogAuthor ?: author
|
||||||
|
val originalArtist: String?
|
||||||
|
get() = (this as? MangaImpl)?.ogArtist ?: artist
|
||||||
|
val originalDescription: String?
|
||||||
|
get() = (this as? MangaImpl)?.ogDesc ?: description
|
||||||
|
val originalGenre: String?
|
||||||
|
get() = (this as? MangaImpl)?.ogGenre ?: genre
|
||||||
|
val originalStatus: Int
|
||||||
|
get() = (this as? MangaImpl)?.ogStatus ?: status
|
||||||
|
|
||||||
|
val hasSameAuthorAndArtist: Boolean
|
||||||
|
get() = author == artist || artist.isNullOrBlank() ||
|
||||||
|
author?.contains(artist ?: "", true) == true
|
||||||
|
|
||||||
|
fun copyFrom(other: SManga) {
|
||||||
|
if (other is Manga) {
|
||||||
|
if (other.author != null) {
|
||||||
|
author = other.originalAuthor
|
||||||
|
}
|
||||||
|
|
||||||
|
if (other.artist != null) {
|
||||||
|
artist = other.originalArtist
|
||||||
|
}
|
||||||
|
|
||||||
|
if (other.description != null) {
|
||||||
|
description = other.originalDescription
|
||||||
|
}
|
||||||
|
|
||||||
|
if (other.genre != null) {
|
||||||
|
genre = other.originalGenre
|
||||||
|
}
|
||||||
|
|
||||||
|
if (other.thumbnail_url != null) {
|
||||||
|
thumbnail_url = other.thumbnail_url
|
||||||
|
}
|
||||||
|
|
||||||
|
status = other.originalStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
update_strategy = other.update_strategy
|
||||||
|
|
||||||
|
if (!initialized) {
|
||||||
|
initialized = other.initialized
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun isBlank() = id == Long.MIN_VALUE
|
fun isBlank() = id == Long.MIN_VALUE
|
||||||
fun isHidden() = status == -1
|
fun isHidden() = status == -1
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.data.download
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
@ -16,7 +15,8 @@ import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.concurrent.TimeUnit
|
import yokai.domain.storage.StorageManager
|
||||||
|
import java.util.concurrent.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache where we dump the downloads directory from the filesystem. This class is needed because
|
* Cache where we dump the downloads directory from the filesystem. This class is needed because
|
||||||
|
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.download
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
@ -18,6 +17,7 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to manage chapter downloads in the application. It must be instantiated once
|
* This class is used to manage chapter downloads in the application. It must be instantiated once
|
||||||
|
|
|
@ -2,8 +2,6 @@ package eu.kanade.tachiyomi.data.download
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
|
@ -17,6 +15,8 @@ import kotlinx.coroutines.SupervisorJob
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to provide the directories where the downloads should be saved.
|
* This class is used to provide the directories where the downloads should be saved.
|
||||||
|
|
|
@ -6,10 +6,6 @@ import android.os.Looper
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import com.jakewharton.rxrelay.PublishRelay
|
import com.jakewharton.rxrelay.PublishRelay
|
||||||
import dev.yokai.core.metadata.COMIC_INFO_FILE
|
|
||||||
import dev.yokai.core.metadata.ComicInfo
|
|
||||||
import dev.yokai.core.metadata.getComicInfo
|
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -52,11 +48,13 @@ import rx.Subscription
|
||||||
import rx.android.schedulers.AndroidSchedulers
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
import rx.schedulers.Schedulers
|
import rx.schedulers.Schedulers
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.core.metadata.COMIC_INFO_FILE
|
||||||
|
import yokai.core.metadata.ComicInfo
|
||||||
|
import yokai.core.metadata.getComicInfo
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.zip.CRC32
|
import java.util.zip.*
|
||||||
import java.util.zip.ZipEntry
|
|
||||||
import java.util.zip.ZipOutputStream
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is the one in charge of downloading chapters.
|
* This class is the one in charge of downloading chapters.
|
||||||
|
|
|
@ -2,16 +2,6 @@ package eu.kanade.tachiyomi.data.library
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.core.metadata.COMIC_INFO_EDITS_FILE
|
|
||||||
import dev.yokai.core.metadata.ComicInfo
|
|
||||||
import dev.yokai.core.metadata.ComicInfoPublishingStatus
|
|
||||||
import dev.yokai.core.metadata.copyFromComicInfo
|
|
||||||
import dev.yokai.domain.library.custom.interactor.CreateCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.DeleteCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.GetCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.interactor.RelinkCustomManga
|
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo
|
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
@ -26,6 +16,16 @@ import nl.adaptivity.xmlutil.serialization.XML
|
||||||
import nl.adaptivity.xmlutil.serialization.XmlSerialName
|
import nl.adaptivity.xmlutil.serialization.XmlSerialName
|
||||||
import nl.adaptivity.xmlutil.serialization.XmlValue
|
import nl.adaptivity.xmlutil.serialization.XmlValue
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.core.metadata.COMIC_INFO_EDITS_FILE
|
||||||
|
import yokai.core.metadata.ComicInfo
|
||||||
|
import yokai.core.metadata.ComicInfoPublishingStatus
|
||||||
|
import yokai.core.metadata.copyFromComicInfo
|
||||||
|
import yokai.domain.library.custom.interactor.CreateCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.DeleteCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.GetCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.RelinkCustomManga
|
||||||
|
import yokai.domain.library.custom.model.CustomMangaInfo
|
||||||
|
import yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo
|
||||||
import java.nio.charset.StandardCharsets
|
import java.nio.charset.StandardCharsets
|
||||||
|
|
||||||
class CustomMangaManager(val context: Context) {
|
class CustomMangaManager(val context: Context) {
|
||||||
|
|
|
@ -20,7 +20,6 @@ import co.touchlab.kermit.Logger
|
||||||
import coil3.imageLoader
|
import coil3.imageLoader
|
||||||
import coil3.request.CachePolicy
|
import coil3.request.CachePolicy
|
||||||
import coil3.request.ImageRequest
|
import coil3.request.ImageRequest
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -75,12 +74,12 @@ import kotlinx.coroutines.sync.Semaphore
|
||||||
import kotlinx.coroutines.sync.withPermit
|
import kotlinx.coroutines.sync.withPermit
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.CancellationException
|
import java.util.concurrent.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.atomic.*
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
|
||||||
|
|
||||||
class LibraryUpdateJob(private val context: Context, workerParams: WorkerParameters) :
|
class LibraryUpdateJob(private val context: Context, workerParams: WorkerParameters) :
|
||||||
CoroutineWorker(context, workerParams) {
|
CoroutineWorker(context, workerParams) {
|
||||||
|
|
|
@ -11,7 +11,6 @@ import eu.kanade.tachiyomi.core.preference.getEnum
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
|
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
|
||||||
import eu.kanade.tachiyomi.extension.model.InstalledExtensionsOrder
|
import eu.kanade.tachiyomi.extension.model.InstalledExtensionsOrder
|
||||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
|
||||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||||
import eu.kanade.tachiyomi.ui.library.filter.FilterBottomSheet
|
import eu.kanade.tachiyomi.ui.library.filter.FilterBottomSheet
|
||||||
import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
|
import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
|
||||||
|
@ -401,10 +400,6 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto
|
||||||
|
|
||||||
fun useLargeToolbar() = preferenceStore.getBoolean("use_large_toolbar", true)
|
fun useLargeToolbar() = preferenceStore.getBoolean("use_large_toolbar", true)
|
||||||
|
|
||||||
fun dohProvider() = prefs.getInt(Keys.dohProvider, -1)
|
|
||||||
|
|
||||||
fun defaultUserAgent() = preferenceStore.getString("default_user_agent", NetworkHelper.DEFAULT_USER_AGENT)
|
|
||||||
|
|
||||||
fun showSeriesInShortcuts() = prefs.getBoolean(Keys.showSeriesInShortcuts, true)
|
fun showSeriesInShortcuts() = prefs.getBoolean(Keys.showSeriesInShortcuts, true)
|
||||||
fun showSourcesInShortcuts() = prefs.getBoolean(Keys.showSourcesInShortcuts, true)
|
fun showSourcesInShortcuts() = prefs.getBoolean(Keys.showSourcesInShortcuts, true)
|
||||||
fun openChapterInShortcuts() = prefs.getBoolean(Keys.openChapterInShortcuts, true)
|
fun openChapterInShortcuts() = prefs.getBoolean(Keys.openChapterInShortcuts, true)
|
||||||
|
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.data.updater
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import dev.yokai.domain.base.models.Version
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
@ -15,6 +14,7 @@ import eu.kanade.tachiyomi.util.system.withIOContext
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.base.models.Version
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,6 @@ import android.graphics.drawable.Drawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.extension.api.ExtensionApi
|
import eu.kanade.tachiyomi.extension.api.ExtensionApi
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
|
@ -17,7 +15,6 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
|
||||||
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
|
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.ui.extension.ExtensionIntallInfo
|
import eu.kanade.tachiyomi.ui.extension.ExtensionIntallInfo
|
||||||
import eu.kanade.tachiyomi.util.system.e
|
|
||||||
import eu.kanade.tachiyomi.util.system.launchNow
|
import eu.kanade.tachiyomi.util.system.launchNow
|
||||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
@ -28,6 +25,8 @@ import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.extension.interactor.TrustExtension
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|
||||||
|
@ -155,7 +154,7 @@ class ExtensionManager(
|
||||||
val extensions: List<Extension.Available> = try {
|
val extensions: List<Extension.Available> = try {
|
||||||
api.findExtensions()
|
api.findExtensions()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Logger.e(e)
|
Logger.e(e) { "Failed to find available extensions" }
|
||||||
emptyList()
|
emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ import androidx.work.OneTimeWorkRequestBuilder
|
||||||
import androidx.work.PeriodicWorkRequestBuilder
|
import androidx.work.PeriodicWorkRequestBuilder
|
||||||
import androidx.work.WorkManager
|
import androidx.work.WorkManager
|
||||||
import androidx.work.WorkerParameters
|
import androidx.work.WorkerParameters
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
||||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||||
|
@ -39,6 +37,8 @@ import rikka.shizuku.Shizuku
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
import java.util.concurrent.*
|
import java.util.concurrent.*
|
||||||
|
|
||||||
class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParameters) :
|
class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParameters) :
|
||||||
|
|
|
@ -2,9 +2,6 @@ package eu.kanade.tachiyomi.extension.api
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import dev.yokai.domain.extension.repo.interactor.GetExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.interactor.UpdateExtensionRepo
|
|
||||||
import dev.yokai.domain.extension.repo.model.ExtensionRepo
|
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
import eu.kanade.tachiyomi.extension.model.LoadResult
|
import eu.kanade.tachiyomi.extension.model.LoadResult
|
||||||
|
@ -21,6 +18,9 @@ import kotlinx.serialization.json.Json
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.extension.repo.interactor.GetExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.interactor.UpdateExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.model.ExtensionRepo
|
||||||
|
|
||||||
internal class ExtensionApi {
|
internal class ExtensionApi {
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ import android.os.Environment
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionInstallerJob
|
import eu.kanade.tachiyomi.extension.ExtensionInstallerJob
|
||||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
import eu.kanade.tachiyomi.extension.ShizukuInstaller
|
import eu.kanade.tachiyomi.extension.ShizukuInstaller
|
||||||
|
@ -47,6 +46,7 @@ import kotlinx.coroutines.launch
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -9,7 +9,6 @@ import android.os.Build
|
||||||
import androidx.core.content.pm.PackageInfoCompat
|
import androidx.core.content.pm.PackageInfoCompat
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import dalvik.system.PathClassLoader
|
import dalvik.system.PathClassLoader
|
||||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.extension.model.Extension
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
|
@ -23,6 +22,7 @@ import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.awaitAll
|
import kotlinx.coroutines.awaitAll
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.extension.interactor.TrustExtension
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.attribute.BasicFileAttributes
|
import java.nio.file.attribute.BasicFileAttributes
|
||||||
|
|
|
@ -5,11 +5,6 @@ import androidx.core.net.toFile
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.github.junrar.Archive
|
import com.github.junrar.Archive
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.core.metadata.COMIC_INFO_FILE
|
|
||||||
import dev.yokai.core.metadata.ComicInfo
|
|
||||||
import dev.yokai.core.metadata.copyFromComicInfo
|
|
||||||
import dev.yokai.core.metadata.toComicInfo
|
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
|
@ -37,10 +32,15 @@ import nl.adaptivity.xmlutil.serialization.XML
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.core.metadata.COMIC_INFO_FILE
|
||||||
|
import yokai.core.metadata.ComicInfo
|
||||||
|
import yokai.core.metadata.copyFromComicInfo
|
||||||
|
import yokai.core.metadata.toComicInfo
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.nio.charset.StandardCharsets
|
import java.nio.charset.StandardCharsets
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.*
|
||||||
|
|
||||||
class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSource {
|
class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSource {
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package eu.kanade.tachiyomi.source
|
||||||
|
|
||||||
|
import android.graphics.drawable.Drawable
|
||||||
|
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||||
|
import eu.kanade.tachiyomi.extension.model.Extension
|
||||||
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
|
fun Source.includeLangInName(enabledLanguages: Set<String>, extensionManager: ExtensionManager? = null): Boolean {
|
||||||
|
val httpSource = this as? HttpSource ?: return true
|
||||||
|
val extManager = extensionManager ?: Injekt.get()
|
||||||
|
val allExt = httpSource.getExtension(extManager)?.lang == "all"
|
||||||
|
val onlyAll = httpSource.extOnlyHasAllLanguage(extManager)
|
||||||
|
val isMultiLingual = enabledLanguages.filterNot { it == "all" }.size > 1
|
||||||
|
return (isMultiLingual && allExt) || (lang == "all" && !onlyAll)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Source.nameBasedOnEnabledLanguages(enabledLanguages: Set<String>, extensionManager: ExtensionManager? = null): String {
|
||||||
|
return if (includeLangInName(enabledLanguages, extensionManager)) toString() else name
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Source.icon(): Drawable? = Injekt.get<ExtensionManager>().getAppIconForSource(this)
|
||||||
|
|
||||||
|
fun HttpSource.getExtension(extensionManager: ExtensionManager? = null): Extension.Installed? =
|
||||||
|
(extensionManager ?: Injekt.get()).installedExtensionsFlow.value.find { it.sources.contains(this) }
|
||||||
|
|
||||||
|
fun HttpSource.extOnlyHasAllLanguage(extensionManager: ExtensionManager? = null) =
|
||||||
|
getExtension(extensionManager)?.sources?.all { it.lang == "all" } ?: true
|
|
@ -1,100 +0,0 @@
|
||||||
package eu.kanade.tachiyomi.source.model
|
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
|
||||||
import java.io.Serializable
|
|
||||||
|
|
||||||
interface SManga : Serializable {
|
|
||||||
|
|
||||||
var url: String
|
|
||||||
|
|
||||||
var title: String
|
|
||||||
|
|
||||||
var artist: String?
|
|
||||||
|
|
||||||
var author: String?
|
|
||||||
|
|
||||||
var description: String?
|
|
||||||
|
|
||||||
var genre: String?
|
|
||||||
|
|
||||||
var status: Int
|
|
||||||
|
|
||||||
var thumbnail_url: String?
|
|
||||||
|
|
||||||
var update_strategy: UpdateStrategy
|
|
||||||
|
|
||||||
var initialized: Boolean
|
|
||||||
|
|
||||||
val originalTitle: String
|
|
||||||
get() = (this as? MangaImpl)?.ogTitle ?: title
|
|
||||||
val originalAuthor: String?
|
|
||||||
get() = (this as? MangaImpl)?.ogAuthor ?: author
|
|
||||||
val originalArtist: String?
|
|
||||||
get() = (this as? MangaImpl)?.ogArtist ?: artist
|
|
||||||
val originalDescription: String?
|
|
||||||
get() = (this as? MangaImpl)?.ogDesc ?: description
|
|
||||||
val originalGenre: String?
|
|
||||||
get() = (this as? MangaImpl)?.ogGenre ?: genre
|
|
||||||
val originalStatus: Int
|
|
||||||
get() = (this as? MangaImpl)?.ogStatus ?: status
|
|
||||||
|
|
||||||
val hasSameAuthorAndArtist: Boolean
|
|
||||||
get() = author == artist || artist.isNullOrBlank() ||
|
|
||||||
author?.contains(artist ?: "", true) == true
|
|
||||||
|
|
||||||
fun copyFrom(other: SManga) {
|
|
||||||
if (other.author != null) {
|
|
||||||
author = other.originalAuthor
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.artist != null) {
|
|
||||||
artist = other.originalArtist
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.description != null) {
|
|
||||||
description = other.originalDescription
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.genre != null) {
|
|
||||||
genre = other.originalGenre
|
|
||||||
}
|
|
||||||
|
|
||||||
if (other.thumbnail_url != null) {
|
|
||||||
thumbnail_url = other.thumbnail_url
|
|
||||||
}
|
|
||||||
|
|
||||||
status = other.originalStatus
|
|
||||||
|
|
||||||
update_strategy = other.update_strategy
|
|
||||||
|
|
||||||
if (!initialized) {
|
|
||||||
initialized = other.initialized
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun copy() = create().also {
|
|
||||||
it.url = url
|
|
||||||
it.title = title
|
|
||||||
it.artist = artist
|
|
||||||
it.author = author
|
|
||||||
it.description = description
|
|
||||||
it.genre = genre
|
|
||||||
it.status = status
|
|
||||||
it.thumbnail_url = thumbnail_url
|
|
||||||
it.initialized = initialized
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val UNKNOWN = 0
|
|
||||||
const val ONGOING = 1
|
|
||||||
const val COMPLETED = 2
|
|
||||||
const val LICENSED = 3
|
|
||||||
const val PUBLISHING_FINISHED = 4
|
|
||||||
const val CANCELLED = 5
|
|
||||||
const val ON_HIATUS = 6
|
|
||||||
|
|
||||||
fun create(): SManga {
|
|
||||||
return MangaImpl()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package eu.kanade.tachiyomi.source.models
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
|
||||||
|
val SManga.originalTitle: String
|
||||||
|
get() = if (this is Manga) this.originalTitle else title
|
|
@ -4,6 +4,7 @@ import android.net.Uri
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.toChapter
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.online.DelegatedHttpSource
|
import eu.kanade.tachiyomi.source.online.DelegatedHttpSource
|
||||||
|
@ -13,7 +14,7 @@ import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.util.Locale
|
import java.util.*
|
||||||
|
|
||||||
class Cubari : DelegatedHttpSource() {
|
class Cubari : DelegatedHttpSource() {
|
||||||
override val domainName: String = "cubari"
|
override val domainName: String = "cubari"
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.net.Uri
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.toChapter
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.await
|
import eu.kanade.tachiyomi.network.await
|
||||||
|
@ -19,7 +20,7 @@ import okhttp3.CacheControl
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Locale
|
import java.util.*
|
||||||
|
|
||||||
class MangaDex : DelegatedHttpSource() {
|
class MangaDex : DelegatedHttpSource() {
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.toChapter
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.POST
|
import eu.kanade.tachiyomi.network.POST
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.net.Uri
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.toChapter
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
import eu.kanade.tachiyomi.network.await
|
import eu.kanade.tachiyomi.network.await
|
||||||
|
|
|
@ -12,7 +12,6 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
||||||
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
|
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import dev.yokai.domain.SplashState
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.main.SearchActivity
|
import eu.kanade.tachiyomi.ui.main.SearchActivity
|
||||||
|
@ -22,6 +21,7 @@ import eu.kanade.tachiyomi.util.system.getThemeWithExtras
|
||||||
import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat
|
import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat
|
||||||
import eu.kanade.tachiyomi.util.system.setThemeByPref
|
import eu.kanade.tachiyomi.util.system.setThemeByPref
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.SplashState
|
||||||
|
|
||||||
abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
|
abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import android.view.ViewGroup
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||||
import dev.yokai.presentation.theme.YokaiTheme
|
import yokai.presentation.theme.YokaiTheme
|
||||||
|
|
||||||
abstract class BaseComposeController(bundle: Bundle? = null) :
|
abstract class BaseComposeController(bundle: Bundle? = null) :
|
||||||
BaseController(bundle) {
|
BaseController(bundle) {
|
||||||
|
|
|
@ -17,9 +17,6 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import dev.yokai.presentation.onboarding.InfoScreen
|
|
||||||
import dev.yokai.presentation.theme.Size
|
|
||||||
import dev.yokai.presentation.theme.YokaiTheme
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.main.MainActivity
|
import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||||
|
@ -27,6 +24,9 @@ import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||||
import eu.kanade.tachiyomi.util.system.setThemeByPref
|
import eu.kanade.tachiyomi.util.system.setThemeByPref
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.presentation.onboarding.InfoScreen
|
||||||
|
import yokai.presentation.theme.Size
|
||||||
|
import yokai.presentation.theme.YokaiTheme
|
||||||
|
|
||||||
class CrashActivity : AppCompatActivity() {
|
class CrashActivity : AppCompatActivity() {
|
||||||
internal val preferences: PreferencesHelper by injectLazy()
|
internal val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
package eu.kanade.tachiyomi.ui.extension
|
package eu.kanade.tachiyomi.ui.extension
|
||||||
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener
|
import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter that holds the catalogue cards.
|
* Adapter that holds the catalogue cards.
|
||||||
|
|
|
@ -12,8 +12,6 @@ import androidx.core.view.updatePaddingRelative
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
@ -46,6 +44,8 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
|
|
||||||
class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
class ExtensionBottomSheet @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
LinearLayout(context, attrs),
|
LinearLayout(context, attrs),
|
||||||
|
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.library
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.view.HapticFeedbackConstants
|
import android.view.HapticFeedbackConstants
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
@ -18,7 +17,8 @@ import eu.kanade.tachiyomi.util.system.timeSpanFromNow
|
||||||
import eu.kanade.tachiyomi.util.system.withDefContext
|
import eu.kanade.tachiyomi.util.system.withDefContext
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Locale
|
import yokai.domain.ui.UiPreferences
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter storing a list of manga in a certain category.
|
* Adapter storing a list of manga in a certain category.
|
||||||
|
|
|
@ -51,7 +51,6 @@ import com.bluelinelabs.conductor.ControllerChangeType
|
||||||
import com.github.florent37.viewtooltip.ViewTooltip
|
import com.github.florent37.viewtooltip.ViewTooltip
|
||||||
import com.google.android.material.snackbar.BaseTransientBottomBar
|
import com.google.android.material.snackbar.BaseTransientBottomBar
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.SelectableAdapter
|
import eu.davidea.flexibleadapter.SelectableAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
|
@ -130,7 +129,8 @@ import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.util.Locale
|
import yokai.domain.ui.UiPreferences
|
||||||
|
import java.util.*
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
|
@ -11,7 +11,6 @@ import androidx.core.view.isVisible
|
||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.AbstractSectionableItem
|
import eu.davidea.flexibleadapter.items.AbstractSectionableItem
|
||||||
import eu.davidea.flexibleadapter.items.IFilterable
|
import eu.davidea.flexibleadapter.items.IFilterable
|
||||||
|
@ -27,6 +26,7 @@ import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
|
||||||
class LibraryItem(
|
class LibraryItem(
|
||||||
val manga: LibraryManga,
|
val manga: LibraryManga,
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.ui.library
|
package eu.kanade.tachiyomi.ui.library
|
||||||
|
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import dev.yokai.util.isLewd
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.core.preference.minusAssign
|
import eu.kanade.tachiyomi.core.preference.minusAssign
|
||||||
import eu.kanade.tachiyomi.core.preference.plusAssign
|
import eu.kanade.tachiyomi.core.preference.plusAssign
|
||||||
|
@ -57,8 +54,11 @@ import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
|
import yokai.util.isLewd
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.*
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|
|
@ -67,10 +67,6 @@ import com.google.android.material.snackbar.Snackbar
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
||||||
import com.google.common.primitives.Floats.max
|
import com.google.common.primitives.Floats.max
|
||||||
import com.google.common.primitives.Ints.max
|
import com.google.common.primitives.Ints.max
|
||||||
import dev.yokai.core.migration.Migrator
|
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.presentation.extension.repo.ExtensionRepoController
|
|
||||||
import dev.yokai.presentation.onboarding.OnboardingController
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -143,20 +139,10 @@ import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import kotlin.collections.List
|
import yokai.core.migration.Migrator
|
||||||
import kotlin.collections.MutableList
|
import yokai.domain.base.BasePreferences
|
||||||
import kotlin.collections.MutableMap
|
import yokai.presentation.extension.repo.ExtensionRepoController
|
||||||
import kotlin.collections.distinct
|
import yokai.presentation.onboarding.OnboardingController
|
||||||
import kotlin.collections.filterNotNull
|
|
||||||
import kotlin.collections.firstOrNull
|
|
||||||
import kotlin.collections.forEach
|
|
||||||
import kotlin.collections.forEachIndexed
|
|
||||||
import kotlin.collections.lastOrNull
|
|
||||||
import kotlin.collections.listOf
|
|
||||||
import kotlin.collections.map
|
|
||||||
import kotlin.collections.maxByOrNull
|
|
||||||
import kotlin.collections.orEmpty
|
|
||||||
import kotlin.collections.plus
|
|
||||||
import kotlin.collections.set
|
import kotlin.collections.set
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
|
@ -8,7 +8,6 @@ import androidx.core.view.isVisible
|
||||||
import com.bluelinelabs.conductor.Controller
|
import com.bluelinelabs.conductor.Controller
|
||||||
import com.bluelinelabs.conductor.RouterTransaction
|
import com.bluelinelabs.conductor.RouterTransaction
|
||||||
import com.bluelinelabs.conductor.changehandler.SimpleSwapChangeHandler
|
import com.bluelinelabs.conductor.changehandler.SimpleSwapChangeHandler
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||||
|
@ -30,6 +29,7 @@ import kotlinx.coroutines.runBlocking
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
|
||||||
class SearchActivity : MainActivity() {
|
class SearchActivity : MainActivity() {
|
||||||
private val getChapters: GetChapters by injectLazy()
|
private val getChapters: GetChapters by injectLazy()
|
||||||
|
|
|
@ -10,10 +10,6 @@ import coil3.request.CachePolicy
|
||||||
import coil3.request.ImageRequest
|
import coil3.request.ImageRequest
|
||||||
import coil3.request.SuccessResult
|
import coil3.request.SuccessResult
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.chapter.interactor.GetAvailableScanlators
|
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo
|
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
|
@ -36,6 +32,7 @@ import eu.kanade.tachiyomi.source.LocalSource
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.SourceNotFoundException
|
import eu.kanade.tachiyomi.source.SourceNotFoundException
|
||||||
|
import eu.kanade.tachiyomi.source.getExtension
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter
|
import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter
|
||||||
|
@ -74,11 +71,14 @@ import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.chapter.interactor.GetAvailableScanlators
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
import yokai.domain.library.custom.model.CustomMangaInfo
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.OutputStream
|
import java.io.OutputStream
|
||||||
import java.util.Date
|
import java.util.*
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
class MangaDetailsPresenter(
|
class MangaDetailsPresenter(
|
||||||
val manga: Manga,
|
val manga: Manga,
|
||||||
|
|
|
@ -26,17 +26,18 @@ import androidx.core.widget.TextViewCompat
|
||||||
import androidx.transition.TransitionSet
|
import androidx.transition.TransitionSet
|
||||||
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
|
import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
|
||||||
import coil3.request.CachePolicy
|
import coil3.request.CachePolicy
|
||||||
import coil3.request.placeholder
|
|
||||||
import coil3.request.error
|
import coil3.request.error
|
||||||
|
import coil3.request.placeholder
|
||||||
import com.google.android.material.button.MaterialButton
|
import com.google.android.material.button.MaterialButton
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
||||||
import eu.kanade.tachiyomi.data.coil.loadManga
|
import eu.kanade.tachiyomi.data.coil.loadManga
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding
|
import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding
|
||||||
import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding
|
import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
import eu.kanade.tachiyomi.source.nameBasedOnEnabledLanguages
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.util.isLocal
|
import eu.kanade.tachiyomi.util.isLocal
|
||||||
import eu.kanade.tachiyomi.util.lang.toNormalized
|
import eu.kanade.tachiyomi.util.lang.toNormalized
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.ui.migration
|
package eu.kanade.tachiyomi.ui.migration
|
||||||
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues
|
import eu.kanade.tachiyomi.data.preference.PreferenceValues
|
||||||
|
@ -18,6 +17,7 @@ import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
|
||||||
abstract class BaseMigrationPresenter<T : BaseMigrationInterface>(
|
abstract class BaseMigrationPresenter<T : BaseMigrationInterface>(
|
||||||
protected val sourceManager: SourceManager = Injekt.get(),
|
protected val sourceManager: SourceManager = Injekt.get(),
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.graphics.Paint.STRIKE_THRU_TEXT_FLAG
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import eu.kanade.tachiyomi.databinding.MigrationSourceItemBinding
|
import eu.kanade.tachiyomi.databinding.MigrationSourceItemBinding
|
||||||
import eu.kanade.tachiyomi.source.icon
|
import eu.kanade.tachiyomi.source.icon
|
||||||
|
import eu.kanade.tachiyomi.source.nameBasedOnEnabledLanguages
|
||||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.ui.migration.manga.process
|
package eu.kanade.tachiyomi.ui.migration.manga.process
|
||||||
|
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -24,7 +22,9 @@ import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Date
|
import yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class MigrationProcessAdapter(
|
class MigrationProcessAdapter(
|
||||||
val controller: MigrationListController,
|
val controller: MigrationListController,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.ui.more.stats
|
package eu.kanade.tachiyomi.ui.more.stats
|
||||||
|
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||||
|
@ -21,6 +20,7 @@ import kotlinx.coroutines.runBlocking
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Presenter of [StatsController].
|
* Presenter of [StatsController].
|
||||||
|
|
|
@ -32,6 +32,7 @@ import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
import eu.kanade.tachiyomi.databinding.StatsDetailsChartBinding
|
import eu.kanade.tachiyomi.databinding.StatsDetailsChartBinding
|
||||||
import eu.kanade.tachiyomi.databinding.StatsDetailsControllerBinding
|
import eu.kanade.tachiyomi.databinding.StatsDetailsControllerBinding
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
|
import eu.kanade.tachiyomi.source.nameBasedOnEnabledLanguages
|
||||||
import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface
|
import eu.kanade.tachiyomi.ui.base.SmallToolbarInterface
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
||||||
import eu.kanade.tachiyomi.ui.library.FilteredLibraryController
|
import eu.kanade.tachiyomi.ui.library.FilteredLibraryController
|
||||||
|
@ -59,8 +60,7 @@ import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener
|
||||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.util.Calendar
|
import java.util.*
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
class StatsDetailsController :
|
class StatsDetailsController :
|
||||||
BaseCoroutineController<StatsDetailsControllerBinding, StatsDetailsPresenter>(),
|
BaseCoroutineController<StatsDetailsControllerBinding, StatsDetailsPresenter>(),
|
||||||
|
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.more.stats.details
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Category
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
|
@ -19,6 +18,7 @@ import eu.kanade.tachiyomi.source.LocalSource
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.icon
|
import eu.kanade.tachiyomi.source.icon
|
||||||
|
import eu.kanade.tachiyomi.source.nameBasedOnEnabledLanguages
|
||||||
import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter
|
import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter
|
||||||
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper
|
import eu.kanade.tachiyomi.ui.more.stats.StatsHelper
|
||||||
import eu.kanade.tachiyomi.util.isLocal
|
import eu.kanade.tachiyomi.util.isLocal
|
||||||
|
@ -32,9 +32,9 @@ import kotlinx.coroutines.runBlocking
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Calendar
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
import java.util.Locale
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.*
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class StatsDetailsPresenter(
|
class StatsDetailsPresenter(
|
||||||
|
|
|
@ -75,9 +75,6 @@ import com.google.android.material.snackbar.Snackbar
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransform
|
import com.google.android.material.transition.platform.MaterialContainerTransform
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.core.preference.toggle
|
import eu.kanade.tachiyomi.core.preference.toggle
|
||||||
|
@ -161,6 +158,9 @@ import kotlinx.coroutines.flow.sample
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
import java.text.DecimalFormatSymbols
|
import java.text.DecimalFormatSymbols
|
||||||
|
|
|
@ -9,9 +9,6 @@ import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -76,8 +73,11 @@ import rx.schedulers.Schedulers
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.CancellationException
|
import java.util.concurrent.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Presenter used by the activity to perform background operations.
|
* Presenter used by the activity to perform background operations.
|
||||||
|
|
|
@ -29,7 +29,6 @@ import com.davemorrissey.labs.subscaleview.ImageSource
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE
|
||||||
import com.github.chrisbanes.photoview.PhotoView
|
import com.github.chrisbanes.photoview.PhotoView
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
|
||||||
import eu.kanade.tachiyomi.data.coil.cropBorders
|
import eu.kanade.tachiyomi.data.coil.cropBorders
|
||||||
import eu.kanade.tachiyomi.data.coil.customDecoder
|
import eu.kanade.tachiyomi.data.coil.customDecoder
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
|
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
|
||||||
|
@ -39,6 +38,7 @@ import eu.kanade.tachiyomi.util.system.GLUtil
|
||||||
import eu.kanade.tachiyomi.util.system.ImageUtil
|
import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||||
import eu.kanade.tachiyomi.util.system.animatorDurationScale
|
import eu.kanade.tachiyomi.util.system.animatorDurationScale
|
||||||
import okio.BufferedSource
|
import okio.BufferedSource
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A wrapper view for showing page image.
|
* A wrapper view for showing page image.
|
||||||
|
|
|
@ -17,8 +17,8 @@ import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.platform.AbstractComposeView
|
import androidx.compose.ui.platform.AbstractComposeView
|
||||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import dev.yokai.presentation.component.CombinedCircularProgressIndicator
|
import yokai.presentation.component.CombinedCircularProgressIndicator
|
||||||
import dev.yokai.presentation.theme.YokaiTheme
|
import yokai.presentation.theme.YokaiTheme
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A custom progress bar that always rotates while being determinate. By always rotating we give
|
* A custom progress bar that always rotates while being determinate. By always rotating we give
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.ui.reader.viewer.pager
|
package eu.kanade.tachiyomi.ui.reader.viewer.pager
|
||||||
|
|
||||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
|
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
|
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
|
||||||
|
@ -12,13 +10,14 @@ import eu.kanade.tachiyomi.ui.reader.viewer.navigation.EdgeNavigation
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.KindlishNavigation
|
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.KindlishNavigation
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.LNavigation
|
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.LNavigation
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.RightAndLeftNavigation
|
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.RightAndLeftNavigation
|
||||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.flow.drop
|
import kotlinx.coroutines.flow.drop
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration used by pager viewers.
|
* Configuration used by pager viewers.
|
||||||
|
|
|
@ -12,7 +12,6 @@ import androidx.appcompat.widget.AppCompatTextView
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.core.view.updatePaddingRelative
|
import androidx.core.view.updatePaddingRelative
|
||||||
import dev.yokai.presentation.theme.YokaiTheme
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
||||||
|
@ -24,6 +23,7 @@ import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import yokai.presentation.theme.YokaiTheme
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View of the ViewPager that contains a chapter transition.
|
* View of the ViewPager that contains a chapter transition.
|
||||||
|
|
|
@ -11,7 +11,6 @@ import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.ui.platform.ComposeView
|
import androidx.compose.ui.platform.ComposeView
|
||||||
import androidx.core.view.isNotEmpty
|
import androidx.core.view.isNotEmpty
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import dev.yokai.presentation.theme.YokaiTheme
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
||||||
|
@ -21,6 +20,7 @@ import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import yokai.presentation.theme.YokaiTheme
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder of the webtoon viewer that contains a chapter transition.
|
* Holder of the webtoon viewer that contains a chapter transition.
|
||||||
|
|
|
@ -2,8 +2,6 @@ package eu.kanade.tachiyomi.ui.recents
|
||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import dev.yokai.domain.recents.RecentsPreferences
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.core.preference.Preference
|
import eu.kanade.tachiyomi.core.preference.Preference
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
|
@ -16,10 +14,12 @@ import kotlinx.coroutines.flow.drop
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.recents.RecentsPreferences
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
import java.text.DecimalFormat
|
import java.text.DecimalFormat
|
||||||
import java.text.DecimalFormatSymbols
|
import java.text.DecimalFormatSymbols
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Locale
|
import java.util.*
|
||||||
|
|
||||||
class RecentMangaAdapter(val delegate: RecentsInterface) :
|
class RecentMangaAdapter(val delegate: RecentsInterface) :
|
||||||
BaseChapterAdapter<IFlexible<*>>(delegate) {
|
BaseChapterAdapter<IFlexible<*>>(delegate) {
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package eu.kanade.tachiyomi.ui.recents
|
package eu.kanade.tachiyomi.ui.recents
|
||||||
|
|
||||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
|
||||||
import dev.yokai.domain.recents.RecentsPreferences
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
|
@ -37,12 +34,12 @@ import kotlinx.coroutines.withContext
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
import yokai.domain.recents.RecentsPreferences
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Calendar
|
import java.util.*
|
||||||
import java.util.Date
|
import java.util.concurrent.*
|
||||||
import java.util.Locale
|
|
||||||
import java.util.TreeMap
|
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@ package eu.kanade.tachiyomi.ui.setting
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.CompositionLocalProvider
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import dev.yokai.domain.ComposableAlertDialog
|
|
||||||
import dev.yokai.presentation.settings.ComposableSettings
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BaseComposeController
|
import eu.kanade.tachiyomi.ui.base.controller.BaseComposeController
|
||||||
import eu.kanade.tachiyomi.util.compose.LocalAlertDialog
|
import eu.kanade.tachiyomi.util.compose.LocalAlertDialog
|
||||||
import eu.kanade.tachiyomi.util.compose.LocalBackPress
|
import eu.kanade.tachiyomi.util.compose.LocalBackPress
|
||||||
|
import yokai.domain.ComposableAlertDialog
|
||||||
|
import yokai.presentation.settings.ComposableSettings
|
||||||
|
|
||||||
abstract class SettingsComposeController: BaseComposeController(), SettingsControllerInterface {
|
abstract class SettingsComposeController: BaseComposeController(), SettingsControllerInterface {
|
||||||
override fun getTitle(): String? = __getTitle()
|
override fun getTitle(): String? = __getTitle()
|
||||||
|
|
|
@ -16,7 +16,6 @@ import androidx.preference.PreferenceGroup
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
import com.bluelinelabs.conductor.ControllerChangeType
|
import com.bluelinelabs.conductor.ControllerChangeType
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.changesIn
|
import eu.kanade.tachiyomi.data.preference.changesIn
|
||||||
|
@ -30,6 +29,7 @@ import eu.kanade.tachiyomi.util.view.scrollViewWith
|
||||||
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
abstract class SettingsLegacyController : PreferenceController(), SettingsControllerInterface, BackHandlerControllerInterface, BaseControllerPreferenceControllerCommonInterface {
|
abstract class SettingsLegacyController : PreferenceController(), SettingsControllerInterface, BackHandlerControllerInterface, BaseControllerPreferenceControllerCommonInterface {
|
||||||
|
|
|
@ -16,8 +16,6 @@ import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -29,6 +27,7 @@ import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
||||||
import eu.kanade.tachiyomi.data.preference.changesIn
|
import eu.kanade.tachiyomi.data.preference.changesIn
|
||||||
import eu.kanade.tachiyomi.extension.ShizukuInstaller
|
import eu.kanade.tachiyomi.extension.ShizukuInstaller
|
||||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||||
|
import eu.kanade.tachiyomi.network.NetworkPreferences
|
||||||
import eu.kanade.tachiyomi.network.PREF_DOH_360
|
import eu.kanade.tachiyomi.network.PREF_DOH_360
|
||||||
import eu.kanade.tachiyomi.network.PREF_DOH_ADGUARD
|
import eu.kanade.tachiyomi.network.PREF_DOH_ADGUARD
|
||||||
import eu.kanade.tachiyomi.network.PREF_DOH_ALIDNS
|
import eu.kanade.tachiyomi.network.PREF_DOH_ALIDNS
|
||||||
|
@ -78,11 +77,14 @@ import rikka.sui.Sui
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
|
import yokai.domain.extension.interactor.TrustExtension
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class SettingsAdvancedController : SettingsLegacyController() {
|
class SettingsAdvancedController : SettingsLegacyController() {
|
||||||
|
|
||||||
private val network: NetworkHelper by injectLazy()
|
private val network: NetworkHelper by injectLazy()
|
||||||
|
private val networkPreferences: NetworkPreferences by injectLazy()
|
||||||
|
|
||||||
private val db: DatabaseHelper by injectLazy()
|
private val db: DatabaseHelper by injectLazy()
|
||||||
|
|
||||||
|
@ -278,7 +280,7 @@ class SettingsAdvancedController : SettingsLegacyController() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
editTextPreference(activity) {
|
editTextPreference(activity) {
|
||||||
bindTo(preferences.defaultUserAgent())
|
bindTo(networkPreferences.defaultUserAgent())
|
||||||
titleRes = R.string.user_agent_string
|
titleRes = R.string.user_agent_string
|
||||||
|
|
||||||
onChange {
|
onChange {
|
||||||
|
|
|
@ -6,8 +6,6 @@ import android.os.Build
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import dev.yokai.presentation.extension.repo.ExtensionRepoController
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||||
|
@ -35,6 +33,8 @@ import eu.kanade.tachiyomi.util.lang.addBetaTag
|
||||||
import eu.kanade.tachiyomi.util.view.snack
|
import eu.kanade.tachiyomi.util.view.snack
|
||||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
|
import yokai.presentation.extension.repo.ExtensionRepoController
|
||||||
|
|
||||||
class SettingsBrowseController : SettingsLegacyController() {
|
class SettingsBrowseController : SettingsLegacyController() {
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package eu.kanade.tachiyomi.ui.setting.controllers
|
package eu.kanade.tachiyomi.ui.setting.controllers
|
||||||
|
|
||||||
import dev.yokai.presentation.settings.ComposableSettings
|
|
||||||
import dev.yokai.presentation.settings.screen.SettingsDataScreen
|
|
||||||
import eu.kanade.tachiyomi.ui.setting.SettingsComposeController
|
import eu.kanade.tachiyomi.ui.setting.SettingsComposeController
|
||||||
|
import yokai.presentation.settings.ComposableSettings
|
||||||
|
import yokai.presentation.settings.screen.SettingsDataScreen
|
||||||
|
|
||||||
class SettingsDataController : SettingsComposeController() {
|
class SettingsDataController : SettingsComposeController() {
|
||||||
override fun getComposableSettings(): ComposableSettings = SettingsDataScreen
|
override fun getComposableSettings(): ComposableSettings = SettingsDataScreen
|
||||||
|
|
|
@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.setting.controllers
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import com.bluelinelabs.conductor.Controller
|
import com.bluelinelabs.conductor.Controller
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Category
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
|
@ -22,6 +21,7 @@ import eu.kanade.tachiyomi.ui.setting.triStateListPreference
|
||||||
import eu.kanade.tachiyomi.util.lang.addBetaTag
|
import eu.kanade.tachiyomi.util.lang.addBetaTag
|
||||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
||||||
|
|
||||||
class SettingsDownloadController : SettingsLegacyController() {
|
class SettingsDownloadController : SettingsLegacyController() {
|
||||||
|
|
|
@ -9,7 +9,6 @@ import android.view.View
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.core.os.LocaleListCompat
|
import androidx.core.os.LocaleListCompat
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
|
import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob
|
||||||
|
@ -30,7 +29,8 @@ import eu.kanade.tachiyomi.ui.setting.titleRes
|
||||||
import eu.kanade.tachiyomi.util.lang.addBetaTag
|
import eu.kanade.tachiyomi.util.lang.addBetaTag
|
||||||
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
|
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
|
||||||
import eu.kanade.tachiyomi.util.system.systemLangContext
|
import eu.kanade.tachiyomi.util.system.systemLangContext
|
||||||
import java.util.Locale
|
import yokai.domain.base.BasePreferences
|
||||||
|
import java.util.*
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
||||||
|
|
||||||
class SettingsGeneralController : SettingsLegacyController() {
|
class SettingsGeneralController : SettingsLegacyController() {
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
package eu.kanade.tachiyomi.ui.setting.controllers
|
package eu.kanade.tachiyomi.ui.setting.controllers
|
||||||
|
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import dev.yokai.domain.manga.interactor.GetLibraryManga
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Category
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
||||||
import eu.kanade.tachiyomi.data.preference.*
|
import eu.kanade.tachiyomi.data.preference.DEVICE_BATTERY_NOT_LOW
|
||||||
|
import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING
|
||||||
|
import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI
|
||||||
|
import eu.kanade.tachiyomi.data.preference.DelayedLibrarySuggestionsJob
|
||||||
|
import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD
|
||||||
|
import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
|
||||||
|
import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ
|
||||||
|
import eu.kanade.tachiyomi.data.preference.changesIn
|
||||||
import eu.kanade.tachiyomi.ui.category.CategoryController
|
import eu.kanade.tachiyomi.ui.category.CategoryController
|
||||||
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
|
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
|
||||||
import eu.kanade.tachiyomi.ui.library.display.TabbedLibraryDisplaySheet
|
import eu.kanade.tachiyomi.ui.library.display.TabbedLibraryDisplaySheet
|
||||||
|
@ -30,6 +36,7 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
||||||
|
|
||||||
class SettingsLibraryController : SettingsLegacyController() {
|
class SettingsLibraryController : SettingsLegacyController() {
|
||||||
|
|
|
@ -3,9 +3,6 @@ package eu.kanade.tachiyomi.ui.setting.controllers
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceValues
|
import eu.kanade.tachiyomi.data.preference.PreferenceValues
|
||||||
import eu.kanade.tachiyomi.data.preference.changesIn
|
import eu.kanade.tachiyomi.data.preference.changesIn
|
||||||
|
@ -33,6 +30,9 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil
|
||||||
import eu.kanade.tachiyomi.util.system.isTablet
|
import eu.kanade.tachiyomi.util.system.isTablet
|
||||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
||||||
|
|
||||||
class SettingsReaderController : SettingsLegacyController() {
|
class SettingsReaderController : SettingsLegacyController() {
|
||||||
|
|
|
@ -14,8 +14,6 @@ import androidx.core.net.toUri
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import dev.yokai.domain.storage.StoragePreferences
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
import eu.kanade.tachiyomi.data.backup.BackupFileValidator
|
||||||
import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob
|
import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob
|
||||||
|
@ -47,6 +45,8 @@ import eu.kanade.tachiyomi.util.system.withUIContext
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
|
import yokai.domain.storage.StoragePreferences
|
||||||
|
|
||||||
@Deprecated("Migrating to compose")
|
@Deprecated("Migrating to compose")
|
||||||
class SettingsDataLegacyController : SettingsLegacyController() {
|
class SettingsDataLegacyController : SettingsLegacyController() {
|
||||||
|
|
|
@ -23,9 +23,6 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||||
import com.bluelinelabs.conductor.ControllerChangeType
|
import com.bluelinelabs.conductor.ControllerChangeType
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
|
||||||
import dev.yokai.presentation.extension.repo.ExtensionRepoController
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
@ -71,8 +68,10 @@ import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.Date
|
import yokai.domain.base.BasePreferences
|
||||||
import java.util.Locale
|
import yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||||
|
import yokai.presentation.extension.repo.ExtensionRepoController
|
||||||
|
import java.util.*
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.databinding.SourceItemBinding
|
import eu.kanade.tachiyomi.databinding.SourceItemBinding
|
||||||
import eu.kanade.tachiyomi.source.LocalSource
|
import eu.kanade.tachiyomi.source.LocalSource
|
||||||
import eu.kanade.tachiyomi.source.icon
|
import eu.kanade.tachiyomi.source.icon
|
||||||
|
import eu.kanade.tachiyomi.source.includeLangInName
|
||||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
import eu.kanade.tachiyomi.util.view.compatToolTipText
|
import eu.kanade.tachiyomi.util.view.compatToolTipText
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.ui.source.browse
|
package eu.kanade.tachiyomi.ui.source.browse
|
||||||
|
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||||
|
@ -40,6 +39,7 @@ import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Presenter of [BrowseSourceController].
|
* Presenter of [BrowseSourceController].
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
package eu.kanade.tachiyomi.ui.source.globalsearch
|
package eu.kanade.tachiyomi.ui.source.globalsearch
|
||||||
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adapter that holds the manga items from search results.
|
* Adapter that holds the manga items from search results.
|
||||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.util.chapter
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.source.model.SChapter
|
import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
|
import eu.kanade.tachiyomi.source.models.originalTitle
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* -R> = regex conversion.
|
* -R> = regex conversion.
|
||||||
|
|
|
@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.ProvidableCompositionLocal
|
import androidx.compose.runtime.ProvidableCompositionLocal
|
||||||
import androidx.compose.runtime.compositionLocalOf
|
import androidx.compose.runtime.compositionLocalOf
|
||||||
import androidx.compose.runtime.staticCompositionLocalOf
|
import androidx.compose.runtime.staticCompositionLocalOf
|
||||||
import dev.yokai.domain.ComposableAlertDialog
|
import yokai.domain.ComposableAlertDialog
|
||||||
|
|
||||||
val <T> ProvidableCompositionLocal<T?>.currentOrThrow
|
val <T> ProvidableCompositionLocal<T?>.currentOrThrow
|
||||||
@Composable
|
@Composable
|
||||||
|
|
|
@ -17,14 +17,11 @@ import android.net.wifi.WifiManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.TypedValue
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.annotation.AttrRes
|
import androidx.annotation.AttrRes
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.annotation.ColorRes
|
import androidx.annotation.ColorRes
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.annotation.StringRes
|
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
import androidx.browser.customtabs.CustomTabColorSchemeParams
|
||||||
import androidx.browser.customtabs.CustomTabsIntent
|
import androidx.browser.customtabs.CustomTabsIntent
|
||||||
|
@ -54,26 +51,6 @@ import kotlin.math.max
|
||||||
|
|
||||||
private const val TABLET_UI_MIN_SCREEN_WIDTH_DP = 720
|
private const val TABLET_UI_MIN_SCREEN_WIDTH_DP = 720
|
||||||
|
|
||||||
/**
|
|
||||||
* Display a toast in this context.
|
|
||||||
*
|
|
||||||
* @param resource the text resource.
|
|
||||||
* @param duration the duration of the toast. Defaults to short.
|
|
||||||
*/
|
|
||||||
fun Context.toast(@StringRes resource: Int, duration: Int = Toast.LENGTH_SHORT) {
|
|
||||||
Toast.makeText(this, resource, duration).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display a toast in this context.
|
|
||||||
*
|
|
||||||
* @param text the text to display.
|
|
||||||
* @param duration the duration of the toast. Defaults to short.
|
|
||||||
*/
|
|
||||||
fun Context.toast(text: String?, duration: Int = Toast.LENGTH_SHORT) {
|
|
||||||
Toast.makeText(this, text.orEmpty(), duration).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to create a notification.
|
* Helper method to create a notification.
|
||||||
*
|
*
|
||||||
|
@ -125,30 +102,6 @@ fun Context.contextCompatDrawable(@DrawableRes resource: Int): Drawable? {
|
||||||
return ContextCompat.getDrawable(this, resource)
|
return ContextCompat.getDrawable(this, resource)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts to dp.
|
|
||||||
*/
|
|
||||||
val Int.pxToDp: Int
|
|
||||||
get() = (this / Resources.getSystem().displayMetrics.density).toInt()
|
|
||||||
|
|
||||||
val Float.pxToDp: Float
|
|
||||||
get() = (this / Resources.getSystem().displayMetrics.density)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts to px.
|
|
||||||
*/
|
|
||||||
val Int.dpToPx: Int
|
|
||||||
get() = this.toFloat().dpToPx.toInt()
|
|
||||||
|
|
||||||
val Int.spToPx: Int
|
|
||||||
get() = this.toFloat().spToPx.toInt()
|
|
||||||
|
|
||||||
val Float.spToPx: Float
|
|
||||||
get() = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, this, Resources.getSystem().displayMetrics)
|
|
||||||
|
|
||||||
val Float.dpToPx: Float
|
|
||||||
get() = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().displayMetrics)
|
|
||||||
|
|
||||||
/** Converts to px and takes into account LTR/RTL layout */
|
/** Converts to px and takes into account LTR/RTL layout */
|
||||||
fun Float.dpToPxEnd(resources: Resources): Float {
|
fun Float.dpToPxEnd(resources: Resources): Float {
|
||||||
return this * resources.displayMetrics.density * if (resources.isLTR) 1 else -1
|
return this * resources.displayMetrics.density * if (resources.isLTR) 1 else -1
|
||||||
|
|
|
@ -9,12 +9,12 @@ import androidx.preference.PreferenceManager
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
import androidx.recyclerview.widget.StaggeredGridLayoutManager
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.pxToDp
|
import eu.kanade.tachiyomi.util.system.pxToDp
|
||||||
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
|
|
@ -4,15 +4,15 @@ import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import androidx.core.widget.NestedScrollView
|
import androidx.core.widget.NestedScrollView
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import dev.yokai.domain.recents.RecentsPreferences
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.library.LibraryController
|
import eu.kanade.tachiyomi.ui.library.LibraryController
|
||||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.ui.recents.RecentsController
|
import eu.kanade.tachiyomi.ui.recents.RecentsController
|
||||||
import eu.kanade.tachiyomi.util.view.RecyclerWindowInsetsListener
|
import eu.kanade.tachiyomi.util.view.RecyclerWindowInsetsListener
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
import yokai.domain.recents.RecentsPreferences
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
|
||||||
abstract class BaseTabbedScrollView<VB : ViewBinding> @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
abstract class BaseTabbedScrollView<VB : ViewBinding> @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
NestedScrollView(context, attrs) {
|
NestedScrollView(context, attrs) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core
|
package yokai.core
|
||||||
|
|
||||||
import co.touchlab.kermit.DefaultFormatter
|
import co.touchlab.kermit.DefaultFormatter
|
||||||
import co.touchlab.kermit.LogWriter
|
import co.touchlab.kermit.LogWriter
|
|
@ -1,15 +1,13 @@
|
||||||
package dev.yokai.core.di
|
package yokai.core.di
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.sqlite.db.SupportSQLiteOpenHelper
|
import androidx.sqlite.db.SupportSQLiteOpenHelper
|
||||||
import app.cash.sqldelight.db.SqlDriver
|
import app.cash.sqldelight.db.SqlDriver
|
||||||
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
|
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
|
||||||
import dev.yokai.data.AndroidDatabaseHandler
|
import com.chuckerteam.chucker.api.ChuckerCollector
|
||||||
import dev.yokai.data.DatabaseHandler
|
import com.chuckerteam.chucker.api.ChuckerInterceptor
|
||||||
import dev.yokai.domain.SplashState
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
|
||||||
import dev.yokai.domain.storage.StorageManager
|
|
||||||
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
||||||
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
import eu.kanade.tachiyomi.data.cache.ChapterCache
|
||||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||||
|
@ -35,6 +33,10 @@ import uy.kohesive.injekt.api.InjektRegistrar
|
||||||
import uy.kohesive.injekt.api.addSingleton
|
import uy.kohesive.injekt.api.addSingleton
|
||||||
import uy.kohesive.injekt.api.addSingletonFactory
|
import uy.kohesive.injekt.api.addSingletonFactory
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.data.AndroidDatabaseHandler
|
||||||
|
import yokai.data.DatabaseHandler
|
||||||
|
import yokai.domain.SplashState
|
||||||
|
import yokai.domain.storage.StorageManager
|
||||||
|
|
||||||
class AppModule(val app: Application) : InjektModule {
|
class AppModule(val app: Application) : InjektModule {
|
||||||
|
|
||||||
|
@ -89,7 +91,23 @@ class AppModule(val app: Application) : InjektModule {
|
||||||
|
|
||||||
addSingletonFactory { CoverCache(app) }
|
addSingletonFactory { CoverCache(app) }
|
||||||
|
|
||||||
addSingletonFactory { NetworkHelper(app) }
|
addSingletonFactory {
|
||||||
|
NetworkHelper(
|
||||||
|
app,
|
||||||
|
get(),
|
||||||
|
) { builder ->
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
builder.addInterceptor(
|
||||||
|
ChuckerInterceptor.Builder(app)
|
||||||
|
.collector(ChuckerCollector(app))
|
||||||
|
.maxContentLength(250000L)
|
||||||
|
.redactHeaders(emptySet())
|
||||||
|
.alwaysReadResponseBody(false)
|
||||||
|
.build(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
addSingletonFactory { JavaScriptEngine(app) }
|
addSingletonFactory { JavaScriptEngine(app) }
|
||||||
|
|
56
app/src/main/java/yokai/core/di/DomainModule.kt
Normal file
56
app/src/main/java/yokai/core/di/DomainModule.kt
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
package yokai.core.di
|
||||||
|
|
||||||
|
import uy.kohesive.injekt.api.InjektModule
|
||||||
|
import uy.kohesive.injekt.api.InjektRegistrar
|
||||||
|
import uy.kohesive.injekt.api.addFactory
|
||||||
|
import uy.kohesive.injekt.api.addSingletonFactory
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.data.chapter.ChapterRepositoryImpl
|
||||||
|
import yokai.data.extension.repo.ExtensionRepoRepositoryImpl
|
||||||
|
import yokai.data.library.custom.CustomMangaRepositoryImpl
|
||||||
|
import yokai.data.manga.MangaRepositoryImpl
|
||||||
|
import yokai.domain.chapter.ChapterRepository
|
||||||
|
import yokai.domain.chapter.interactor.GetAvailableScanlators
|
||||||
|
import yokai.domain.chapter.interactor.GetChapters
|
||||||
|
import yokai.domain.extension.interactor.TrustExtension
|
||||||
|
import yokai.domain.extension.repo.ExtensionRepoRepository
|
||||||
|
import yokai.domain.extension.repo.interactor.CreateExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.interactor.DeleteExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.interactor.GetExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.interactor.GetExtensionRepoCount
|
||||||
|
import yokai.domain.extension.repo.interactor.ReplaceExtensionRepo
|
||||||
|
import yokai.domain.extension.repo.interactor.UpdateExtensionRepo
|
||||||
|
import yokai.domain.library.custom.CustomMangaRepository
|
||||||
|
import yokai.domain.library.custom.interactor.CreateCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.DeleteCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.GetCustomManga
|
||||||
|
import yokai.domain.library.custom.interactor.RelinkCustomManga
|
||||||
|
import yokai.domain.manga.MangaRepository
|
||||||
|
import yokai.domain.manga.interactor.GetLibraryManga
|
||||||
|
|
||||||
|
class DomainModule : InjektModule {
|
||||||
|
override fun InjektRegistrar.registerInjectables() {
|
||||||
|
addFactory { TrustExtension(get(), get()) }
|
||||||
|
|
||||||
|
addSingletonFactory<ExtensionRepoRepository> { ExtensionRepoRepositoryImpl(get()) }
|
||||||
|
addFactory { CreateExtensionRepo(get()) }
|
||||||
|
addFactory { DeleteExtensionRepo(get()) }
|
||||||
|
addFactory { GetExtensionRepo(get()) }
|
||||||
|
addFactory { GetExtensionRepoCount(get()) }
|
||||||
|
addFactory { ReplaceExtensionRepo(get()) }
|
||||||
|
addFactory { UpdateExtensionRepo(get(), get()) }
|
||||||
|
|
||||||
|
addSingletonFactory<CustomMangaRepository> { CustomMangaRepositoryImpl(get()) }
|
||||||
|
addFactory { CreateCustomManga(get()) }
|
||||||
|
addFactory { DeleteCustomManga(get()) }
|
||||||
|
addFactory { GetCustomManga(get()) }
|
||||||
|
addFactory { RelinkCustomManga(get()) }
|
||||||
|
|
||||||
|
addSingletonFactory<MangaRepository> { MangaRepositoryImpl(get()) }
|
||||||
|
addFactory { GetLibraryManga(get()) }
|
||||||
|
|
||||||
|
addSingletonFactory<ChapterRepository> { ChapterRepositoryImpl(get()) }
|
||||||
|
addFactory { GetAvailableScanlators(get()) }
|
||||||
|
addFactory { GetChapters(get()) }
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,22 +1,23 @@
|
||||||
package dev.yokai.core.di
|
package yokai.core.di
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import dev.yokai.domain.base.BasePreferences
|
|
||||||
import dev.yokai.domain.download.DownloadPreferences
|
|
||||||
import dev.yokai.domain.recents.RecentsPreferences
|
|
||||||
import dev.yokai.domain.source.SourcePreferences
|
|
||||||
import dev.yokai.domain.storage.StoragePreferences
|
|
||||||
import dev.yokai.domain.ui.UiPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
|
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
|
||||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
||||||
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.track.TrackPreferences
|
import eu.kanade.tachiyomi.data.track.TrackPreferences
|
||||||
|
import eu.kanade.tachiyomi.network.NetworkPreferences
|
||||||
import uy.kohesive.injekt.api.InjektModule
|
import uy.kohesive.injekt.api.InjektModule
|
||||||
import uy.kohesive.injekt.api.InjektRegistrar
|
import uy.kohesive.injekt.api.InjektRegistrar
|
||||||
import uy.kohesive.injekt.api.addSingletonFactory
|
import uy.kohesive.injekt.api.addSingletonFactory
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
import yokai.domain.base.BasePreferences
|
||||||
|
import yokai.domain.download.DownloadPreferences
|
||||||
|
import yokai.domain.recents.RecentsPreferences
|
||||||
|
import yokai.domain.source.SourcePreferences
|
||||||
|
import yokai.domain.storage.StoragePreferences
|
||||||
|
import yokai.domain.ui.UiPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
|
||||||
class PreferenceModule(val application: Application) : InjektModule {
|
class PreferenceModule(val application: Application) : InjektModule {
|
||||||
override fun InjektRegistrar.registerInjectables() {
|
override fun InjektRegistrar.registerInjectables() {
|
||||||
|
@ -36,6 +37,8 @@ class PreferenceModule(val application: Application) : InjektModule {
|
||||||
|
|
||||||
addSingletonFactory { DownloadPreferences(get()) }
|
addSingletonFactory { DownloadPreferences(get()) }
|
||||||
|
|
||||||
|
addSingletonFactory { NetworkPreferences(get()) }
|
||||||
|
|
||||||
addSingletonFactory {
|
addSingletonFactory {
|
||||||
PreferencesHelper(
|
PreferencesHelper(
|
||||||
context = application,
|
context = application,
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.metadata
|
package yokai.core.metadata
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
interface Migration {
|
interface Migration {
|
||||||
val version: Float
|
val version: Float
|
|
@ -1,3 +1,3 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
typealias MigrationCompletedListener = () -> Unit
|
typealias MigrationCompletedListener = () -> Unit
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
import co.touchlab.kermit.Logger
|
import co.touchlab.kermit.Logger
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
import kotlinx.coroutines.CompletableDeferred
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
import kotlinx.coroutines.CompletableDeferred
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
class MigrationStrategyFactory(
|
class MigrationStrategyFactory(
|
||||||
private val factory: MigrationJobFactory,
|
private val factory: MigrationJobFactory,
|
|
@ -1,4 +1,4 @@
|
||||||
package dev.yokai.core.migration
|
package yokai.core.migration
|
||||||
|
|
||||||
import kotlinx.coroutines.CompletableDeferred
|
import kotlinx.coroutines.CompletableDeferred
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
|
@ -1,8 +1,8 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -1,8 +1,8 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -1,8 +1,8 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
|
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
|
||||||
class CustomInfoMigration : Migration {
|
class CustomInfoMigration : Migration {
|
||||||
override val version: Float = 66f
|
override val version: Float = 66f
|
|
@ -1,14 +1,14 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
|
||||||
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
|
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour
|
||||||
|
import yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
||||||
|
|
||||||
class CutoutMigration : Migration {
|
class CutoutMigration : Migration {
|
||||||
override val version: Float = 121f
|
override val version: Float = 121f
|
|
@ -1,12 +1,12 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys
|
||||||
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
|
import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
|
||||||
class DoHMigration : Migration {
|
class DoHMigration : Migration {
|
||||||
override val version: Float = 71f
|
override val version: Float = 71f
|
|
@ -1,9 +1,9 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadProvider
|
import eu.kanade.tachiyomi.data.download.DownloadProvider
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
|
||||||
class DownloadedChaptersMigration : Migration {
|
class DownloadedChaptersMigration : Migration {
|
||||||
override val version: Float = 54f
|
override val version: Float = 54f
|
|
@ -1,10 +1,10 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.preference.plusAssign
|
import eu.kanade.tachiyomi.data.preference.plusAssign
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
|
||||||
class EnabledLanguageMigration : Migration {
|
class EnabledLanguageMigration : Migration {
|
||||||
override val version: Float = 83f
|
override val version: Float = 83f
|
|
@ -1,11 +1,11 @@
|
||||||
package dev.yokai.core.migration.migrations
|
package yokai.core.migration.migrations
|
||||||
|
|
||||||
import dev.yokai.core.migration.Migration
|
|
||||||
import dev.yokai.core.migration.MigrationContext
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.BuildConfig
|
import eu.kanade.tachiyomi.BuildConfig
|
||||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
||||||
import eu.kanade.tachiyomi.data.updater.AppUpdateJob
|
import eu.kanade.tachiyomi.data.updater.AppUpdateJob
|
||||||
|
import yokai.core.migration.Migration
|
||||||
|
import yokai.core.migration.MigrationContext
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restore jobs after upgrading to evernote's job scheduler.
|
* Restore jobs after upgrading to evernote's job scheduler.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue