diff --git a/CHANGELOG.md b/CHANGELOG.md index ec643e0427..286d268c63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,13 +18,11 @@ ## Other - 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 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.gms:google-services to v4.4.2 - Add crashlytics integration for Kermit - Replace ProgressBar with ProgressIndicator from Material3 to improve UI consistency +- Rewrite version checker +- Rewrite Migrator diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7aed59ddcb..efd653ad48 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -39,9 +39,14 @@ val buildTime: String by lazy { val supportedAbis = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") android { + compileSdk = AndroidConfig.compileSdk + ndkVersion = AndroidConfig.ndk + defaultConfig { + minSdk = AndroidConfig.minSdk + targetSdk = AndroidConfig.targetSdk applicationId = "eu.kanade.tachiyomi" - versionCode = 137 + versionCode = 136 versionName = "1.8.4" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled = true @@ -140,6 +145,14 @@ android { kotlinCompilerExtensionVersion = compose.versions.compose.compiler.get() } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + isCoreLibraryDesugaringEnabled = true + } + kotlinOptions { + jvmTarget = "17" + } namespace = "eu.kanade.tachiyomi" sqldelight { @@ -154,10 +167,6 @@ android { } dependencies { - implementation(projects.core) - implementation(projects.i18n) - implementation(projects.sourceApi) - // Compose implementation(compose.bundles.compose) debugImplementation(compose.ui.tooling) @@ -271,8 +280,8 @@ dependencies { implementation(kotlin("stdlib", org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION)) - implementation(platform(kotlinx.coroutines.bom)) - implementation(kotlinx.bundles.coroutines) + implementation(kotlinx.coroutines.core) + implementation(kotlinx.coroutines.android) // Text distance implementation(libs.java.string.similarity) @@ -287,6 +296,8 @@ dependencies { implementation(kotlinx.immutable) + "coreLibraryDesugaring"(libs.desugar) + // Tests testImplementation(libs.bundles.test) testRuntimeOnly(libs.bundles.test.runtime) @@ -295,6 +306,13 @@ dependencies { } tasks { + withType { + useJUnitPlatform() + testLogging { + events("passed", "skipped", "failed") + } + } + // See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers) withType { kotlinOptions.freeCompilerArgs += listOf( diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 00cf2d61bd..7d18bb92e9 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,19 +1,19 @@ -dontobfuscate --keep,allowoptimization class eu.kanade.** --keep,allowoptimization class tachiyomi.** --keep,allowoptimization class yokai.** +-keep class eu.kanade.tachiyomi.source.** { public protected *; } # Avoid access modification +-keep,allowoptimization class eu.kanade.** { public protected *; } +-keep,allowoptimization class tachiyomi.** { public protected *; } +-keep,allowoptimization class dev.yokai.** { public protected *; } # Keep common dependencies used in extensions --keep,allowoptimization class androidx.preference.** { public protected *; } --keep,allowoptimization class kotlin.** { public protected *; } +-keep class androidx.preference.** { public protected *; } +-keep class kotlin.** { public protected *; } -keep,allowoptimization class kotlinx.coroutines.** { public protected *; } --keep,allowoptimization class kotlinx.serialization.** { public protected *; } --keep,allowoptimization class kotlin.time.** { public protected *; } --keep,allowoptimization class okhttp3.** { public protected *; } +-keep class kotlinx.serialization.** { public protected *; } +-keep class okhttp3.** { public protected *; } -keep,allowoptimization class okio.** { public protected *; } -keep,allowoptimization class rx.** { public protected *; } --keep,allowoptimization class org.jsoup.** { public protected *; } +-keep class org.jsoup.** { public protected *; } -keep,allowoptimization class com.google.gson.** { public protected *; } -keep,allowoptimization class app.cash.quickjs.** { public protected *; } -keep,allowoptimization class uy.kohesive.injekt.** { public protected *; } @@ -73,11 +73,11 @@ kotlinx.serialization.KSerializer serializer(...); } --keep,includedescriptorclasses class yokai.**$$serializer { *; } --keepclassmembers class yokai.** { +-keep,includedescriptorclasses class dev.yokai.**$$serializer { *; } +-keepclassmembers class dev.yokai.** { *** Companion; } --keepclasseswithmembers class yokai.** { +-keepclasseswithmembers class dev.yokai.** { kotlinx.serialization.KSerializer serializer(...); } diff --git a/app/src/main/java/yokai/core/CrashlyticsLogWriter.kt b/app/src/main/java/dev/yokai/core/CrashlyticsLogWriter.kt similarity index 97% rename from app/src/main/java/yokai/core/CrashlyticsLogWriter.kt rename to app/src/main/java/dev/yokai/core/CrashlyticsLogWriter.kt index f8934e84fd..16c3508d86 100644 --- a/app/src/main/java/yokai/core/CrashlyticsLogWriter.kt +++ b/app/src/main/java/dev/yokai/core/CrashlyticsLogWriter.kt @@ -1,4 +1,4 @@ -package yokai.core +package dev.yokai.core import co.touchlab.kermit.DefaultFormatter import co.touchlab.kermit.LogWriter diff --git a/app/src/main/java/yokai/core/di/AppModule.kt b/app/src/main/java/dev/yokai/core/di/AppModule.kt similarity index 84% rename from app/src/main/java/yokai/core/di/AppModule.kt rename to app/src/main/java/dev/yokai/core/di/AppModule.kt index 7c4fb05ce1..fd2081855f 100644 --- a/app/src/main/java/yokai/core/di/AppModule.kt +++ b/app/src/main/java/dev/yokai/core/di/AppModule.kt @@ -1,13 +1,15 @@ -package yokai.core.di +package dev.yokai.core.di import android.app.Application import androidx.core.content.ContextCompat import androidx.sqlite.db.SupportSQLiteOpenHelper import app.cash.sqldelight.db.SqlDriver import app.cash.sqldelight.driver.android.AndroidSqliteDriver -import com.chuckerteam.chucker.api.ChuckerCollector -import com.chuckerteam.chucker.api.ChuckerInterceptor -import eu.kanade.tachiyomi.BuildConfig +import dev.yokai.data.AndroidDatabaseHandler +import dev.yokai.data.DatabaseHandler +import dev.yokai.domain.SplashState +import dev.yokai.domain.extension.interactor.TrustExtension +import dev.yokai.domain.storage.StorageManager import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.CoverCache @@ -33,10 +35,6 @@ import uy.kohesive.injekt.api.InjektRegistrar import uy.kohesive.injekt.api.addSingleton import uy.kohesive.injekt.api.addSingletonFactory 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 { @@ -91,23 +89,7 @@ class AppModule(val app: Application) : InjektModule { addSingletonFactory { CoverCache(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 { NetworkHelper(app) } addSingletonFactory { JavaScriptEngine(app) } diff --git a/app/src/main/java/dev/yokai/core/di/DomainModule.kt b/app/src/main/java/dev/yokai/core/di/DomainModule.kt new file mode 100644 index 0000000000..0ae891ce9f --- /dev/null +++ b/app/src/main/java/dev/yokai/core/di/DomainModule.kt @@ -0,0 +1,56 @@ +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 { ExtensionRepoRepositoryImpl(get()) } + addFactory { CreateExtensionRepo(get()) } + addFactory { DeleteExtensionRepo(get()) } + addFactory { GetExtensionRepo(get()) } + addFactory { GetExtensionRepoCount(get()) } + addFactory { ReplaceExtensionRepo(get()) } + addFactory { UpdateExtensionRepo(get(), get()) } + + addSingletonFactory { CustomMangaRepositoryImpl(get()) } + addFactory { CreateCustomManga(get()) } + addFactory { DeleteCustomManga(get()) } + addFactory { GetCustomManga(get()) } + addFactory { RelinkCustomManga(get()) } + + addSingletonFactory { MangaRepositoryImpl(get()) } + addFactory { GetLibraryManga(get()) } + + addSingletonFactory { ChapterRepositoryImpl(get()) } + addFactory { GetAvailableScanlators(get()) } + addFactory { GetChapters(get()) } + } +} diff --git a/app/src/main/java/yokai/core/di/PreferenceModule.kt b/app/src/main/java/dev/yokai/core/di/PreferenceModule.kt similarity index 76% rename from app/src/main/java/yokai/core/di/PreferenceModule.kt rename to app/src/main/java/dev/yokai/core/di/PreferenceModule.kt index cd50285aa7..10698079c0 100644 --- a/app/src/main/java/yokai/core/di/PreferenceModule.kt +++ b/app/src/main/java/dev/yokai/core/di/PreferenceModule.kt @@ -1,23 +1,22 @@ -package yokai.core.di +package dev.yokai.core.di 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.PreferenceStore import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackPreferences -import eu.kanade.tachiyomi.network.NetworkPreferences import uy.kohesive.injekt.api.InjektModule import uy.kohesive.injekt.api.InjektRegistrar import uy.kohesive.injekt.api.addSingletonFactory 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 { override fun InjektRegistrar.registerInjectables() { @@ -37,8 +36,6 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { DownloadPreferences(get()) } - addSingletonFactory { NetworkPreferences(get()) } - addSingletonFactory { PreferencesHelper( context = application, diff --git a/app/src/main/java/yokai/core/metadata/ComicInfo.kt b/app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt similarity index 99% rename from app/src/main/java/yokai/core/metadata/ComicInfo.kt rename to app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt index 268888b756..a4be9ec371 100644 --- a/app/src/main/java/yokai/core/metadata/ComicInfo.kt +++ b/app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt @@ -1,4 +1,4 @@ -package yokai.core.metadata +package dev.yokai.core.metadata import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga diff --git a/app/src/main/java/yokai/core/migration/Migration.kt b/app/src/main/java/dev/yokai/core/migration/Migration.kt similarity index 94% rename from app/src/main/java/yokai/core/migration/Migration.kt rename to app/src/main/java/dev/yokai/core/migration/Migration.kt index d27e59d705..16832a4f9e 100644 --- a/app/src/main/java/yokai/core/migration/Migration.kt +++ b/app/src/main/java/dev/yokai/core/migration/Migration.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration interface Migration { val version: Float diff --git a/app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt b/app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt similarity index 60% rename from app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt rename to app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt index 51f548b25d..6d3a687682 100644 --- a/app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt +++ b/app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt @@ -1,3 +1,3 @@ -package yokai.core.migration +package dev.yokai.core.migration typealias MigrationCompletedListener = () -> Unit diff --git a/app/src/main/java/yokai/core/migration/MigrationContext.kt b/app/src/main/java/dev/yokai/core/migration/MigrationContext.kt similarity index 84% rename from app/src/main/java/yokai/core/migration/MigrationContext.kt rename to app/src/main/java/dev/yokai/core/migration/MigrationContext.kt index ceb1f37971..16c8d096b7 100644 --- a/app/src/main/java/yokai/core/migration/MigrationContext.kt +++ b/app/src/main/java/dev/yokai/core/migration/MigrationContext.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration import uy.kohesive.injekt.Injekt diff --git a/app/src/main/java/yokai/core/migration/MigrationJobFactory.kt b/app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt similarity index 97% rename from app/src/main/java/yokai/core/migration/MigrationJobFactory.kt rename to app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt index df5c3963bd..c83279f2ea 100644 --- a/app/src/main/java/yokai/core/migration/MigrationJobFactory.kt +++ b/app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration import co.touchlab.kermit.Logger import kotlinx.coroutines.CompletableDeferred diff --git a/app/src/main/java/yokai/core/migration/MigrationStrategy.kt b/app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt similarity index 98% rename from app/src/main/java/yokai/core/migration/MigrationStrategy.kt rename to app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt index 2cc7ac71b2..56e44bf8cc 100644 --- a/app/src/main/java/yokai/core/migration/MigrationStrategy.kt +++ b/app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt b/app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt similarity index 95% rename from app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt rename to app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt index 781a177871..2094ffebb0 100644 --- a/app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt +++ b/app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration class MigrationStrategyFactory( private val factory: MigrationJobFactory, diff --git a/app/src/main/java/yokai/core/migration/Migrator.kt b/app/src/main/java/dev/yokai/core/migration/Migrator.kt similarity index 97% rename from app/src/main/java/yokai/core/migration/Migrator.kt rename to app/src/main/java/dev/yokai/core/migration/Migrator.kt index 89b83b4830..52ecbe105f 100644 --- a/app/src/main/java/yokai/core/migration/Migrator.kt +++ b/app/src/main/java/dev/yokai/core/migration/Migrator.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt similarity index 82% rename from app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt index 8ad3be15b6..3b2793be1d 100644 --- a/app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt @@ -1,8 +1,8 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt similarity index 83% rename from app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt index 2ba0635cea..ad1f809258 100644 --- a/app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt @@ -1,8 +1,8 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt similarity index 73% rename from app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt index 609c7f0850..ecc043d567 100644 --- a/app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt @@ -1,8 +1,8 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.ui.library.LibraryPresenter -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class CustomInfoMigration : Migration { override val version: Float = 66f diff --git a/app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt similarity index 82% rename from app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt index f4ff91ce3f..ff030c0495 100644 --- a/app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt @@ -1,14 +1,14 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations 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.data.preference.PreferenceKeys 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 { override val version: Float = 121f diff --git a/app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/DoHMigration.kt similarity index 86% rename from app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/DoHMigration.kt index a4c075faa0..dc8fa5e6fe 100644 --- a/app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/DoHMigration.kt @@ -1,12 +1,12 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit 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.data.preference.PreferenceKeys import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class DoHMigration : Migration { override val version: Float = 71f diff --git a/app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt similarity index 74% rename from app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt index 617d5b4d04..495a78b48d 100644 --- a/app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.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.data.download.DownloadProvider -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class DownloadedChaptersMigration : Migration { override val version: Float = 54f diff --git a/app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt similarity index 81% rename from app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt index 94606f6287..4a4d4d8589 100644 --- a/app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.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.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.plusAssign -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class EnabledLanguageMigration : Migration { override val version: Float = 83f diff --git a/app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt similarity index 82% rename from app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt index fde6f98c2e..8156de774c 100644 --- a/app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt @@ -1,11 +1,11 @@ -package yokai.core.migration.migrations +package dev.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.BuildConfig import eu.kanade.tachiyomi.data.library.LibraryUpdateJob 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. diff --git a/app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt similarity index 87% rename from app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt index d3aada9dd1..1993733182 100644 --- a/app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.preference.PreferenceManager +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext +import dev.yokai.domain.base.BasePreferences import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext -import yokai.domain.base.BasePreferences /** * Upstream no longer use Int for extension installer prefs, this solves incompatibility with upstreams backup diff --git a/app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt similarity index 76% rename from app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt index f46459c4d3..ab21e51f0d 100644 --- a/app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt @@ -1,8 +1,8 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt similarity index 87% rename from app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt index a93d94d81e..643c74b9a4 100644 --- a/app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt @@ -1,11 +1,11 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit 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.ui.library.LibrarySort -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class LibrarySortMigration : Migration { override val version: Float = 110f diff --git a/app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt similarity index 76% rename from app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt index 8076de703b..82ff102477 100644 --- a/app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.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.data.library.LibraryUpdateJob -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class LibraryUpdateResetMigration : Migration { override val version: Float = 105f diff --git a/app/src/main/java/yokai/core/migration/migrations/Migrations.kt b/app/src/main/java/dev/yokai/core/migration/migrations/Migrations.kt similarity index 90% rename from app/src/main/java/yokai/core/migration/migrations/Migrations.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/Migrations.kt index 67c33c0a11..db933c0c41 100644 --- a/app/src/main/java/yokai/core/migration/migrations/Migrations.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/Migrations.kt @@ -1,8 +1,8 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf -import yokai.core.migration.Migration val migrations: ImmutableList = persistentListOf( SetupAppUpdateMigration(), @@ -36,5 +36,4 @@ val migrations: ImmutableList = persistentListOf( ExtensionInstallerEnumMigration(), CutoutMigration(), RepoJsonMigration(), - NetworkPrefsMigration(), ) diff --git a/app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt similarity index 85% rename from app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt index c299c511c1..8585ba6173 100644 --- a/app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt @@ -1,11 +1,11 @@ -package yokai.core.migration.migrations +package dev.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.R import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.util.system.toast -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext /** * Force MAL log out due to login flow change diff --git a/app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt similarity index 90% rename from app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt index 7798916d35..5c3fe365e1 100644 --- a/app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt @@ -1,12 +1,12 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations 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.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.recents.RecentsPresenter -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext import kotlin.math.max class PrefsMigration : Migration { diff --git a/app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt similarity index 87% rename from app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt index b75355df8d..0d3df4acab 100644 --- a/app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt @@ -1,12 +1,12 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations 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.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.util.system.withIOContext -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class ReaderUpdateMigration : Migration { override val version: Float = 88f diff --git a/app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/RepoJsonMigration.kt similarity index 82% rename from app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/RepoJsonMigration.kt index 9ef7b1b3d2..2f2318bf66 100644 --- a/app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/RepoJsonMigration.kt @@ -1,13 +1,13 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import co.touchlab.kermit.Logger +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.exception.SaveExtensionRepoException import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.util.system.withIOContext -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.exception.SaveExtensionRepoException class RepoJsonMigration : Migration { override val version: Float = 130f diff --git a/app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt similarity index 91% rename from app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt index ae3da7a410..48a24fa251 100644 --- a/app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt @@ -1,11 +1,11 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit 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.ui.reader.settings.OrientationType -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class RotationTypeEnumMigration : Migration { override val version: Float = 77f diff --git a/app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeMigration.kt similarity index 81% rename from app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeMigration.kt index d505aac434..a990cbf873 100644 --- a/app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit import androidx.preference.PreferenceManager +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class RotationTypeMigration : Migration { override val version: Float = 73f diff --git a/app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt similarity index 78% rename from app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt index f0b4bf0792..6006fd171e 100644 --- a/app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.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.BuildConfig import eu.kanade.tachiyomi.data.updater.AppUpdateJob -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class SetupAppUpdateMigration : Migration { override val version: Float = Migration.ALWAYS diff --git a/app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt similarity index 75% rename from app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt index c8ae6a0c36..b535e435cb 100644 --- a/app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.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.data.backup.create.BackupCreatorJob -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class SetupBackupCreateMigration : Migration { override val version: Float = Migration.ALWAYS diff --git a/app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt similarity index 75% rename from app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt index 225d52d26f..507a5eb6d1 100644 --- a/app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.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.extension.ExtensionUpdateJob -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class SetupExtensionUpdateMigration : Migration { override val version: Float = Migration.ALWAYS diff --git a/app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt similarity index 75% rename from app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt index 029d9e91d2..fd6d3de533 100644 --- a/app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.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.data.library.LibraryUpdateJob -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class SetupLibraryUpdateMigration : Migration { override val version: Float = Migration.ALWAYS diff --git a/app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/ShortcutsMigration.kt similarity index 91% rename from app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/ShortcutsMigration.kt index 5512494c40..195a638c95 100644 --- a/app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/ShortcutsMigration.kt @@ -1,13 +1,13 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit 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.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class ShortcutsMigration : Migration { override val version: Float = 75f diff --git a/app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/ThePurgeMigration.kt similarity index 79% rename from app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/ThePurgeMigration.kt index 5953873ea9..e739dd15fc 100644 --- a/app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/ThePurgeMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations import androidx.core.content.edit import androidx.preference.PreferenceManager +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class ThePurgeMigration : Migration { override val version: Float = 112f diff --git a/app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt similarity index 86% rename from app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt index a3200a4d60..6aff6401ff 100644 --- a/app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt @@ -1,9 +1,9 @@ -package yokai.core.migration.migrations +package dev.yokai.core.migration.migrations +import dev.yokai.core.migration.Migration +import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class TrackerPrivateSettingsMigration : Migration { override val version: Float = 108f diff --git a/app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt similarity index 85% rename from app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt index a86649a6eb..1569b96d18 100644 --- a/app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt @@ -1,10 +1,10 @@ -package yokai.core.migration.migrations +package dev.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.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext class UpdateIntervalMigration : Migration { override val version: Float = 86f diff --git a/app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt b/app/src/main/java/dev/yokai/core/migration/migrations/WorkManagerMigration.kt similarity index 87% rename from app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt rename to app/src/main/java/dev/yokai/core/migration/migrations/WorkManagerMigration.kt index 2417b203d7..9eff8814cf 100644 --- a/app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt +++ b/app/src/main/java/dev/yokai/core/migration/migrations/WorkManagerMigration.kt @@ -1,5 +1,7 @@ -package yokai.core.migration.migrations +package dev.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.BuildConfig import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -7,8 +9,6 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.updater.AppUpdateJob import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.ui.library.LibraryPresenter -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext /** * Restore jobs after migrating from Evernote's job scheduler to WorkManager. diff --git a/app/src/main/java/yokai/data/AndroidDatabaseHandler.kt b/app/src/main/java/dev/yokai/data/AndroidDatabaseHandler.kt similarity index 99% rename from app/src/main/java/yokai/data/AndroidDatabaseHandler.kt rename to app/src/main/java/dev/yokai/data/AndroidDatabaseHandler.kt index e66d3b2fe8..8ed92f3e92 100644 --- a/app/src/main/java/yokai/data/AndroidDatabaseHandler.kt +++ b/app/src/main/java/dev/yokai/data/AndroidDatabaseHandler.kt @@ -1,4 +1,4 @@ -package yokai.data +package dev.yokai.data import app.cash.sqldelight.Query import app.cash.sqldelight.coroutines.asFlow diff --git a/app/src/main/java/yokai/data/DatabaseAdapter.kt b/app/src/main/java/dev/yokai/data/DatabaseAdapter.kt similarity index 93% rename from app/src/main/java/yokai/data/DatabaseAdapter.kt rename to app/src/main/java/dev/yokai/data/DatabaseAdapter.kt index 9c60ce4a38..d26141845e 100644 --- a/app/src/main/java/yokai/data/DatabaseAdapter.kt +++ b/app/src/main/java/dev/yokai/data/DatabaseAdapter.kt @@ -1,7 +1,7 @@ -package yokai.data +package dev.yokai.data import app.cash.sqldelight.ColumnAdapter -import java.util.* +import java.util.Date val dateAdapter = object : ColumnAdapter { override fun decode(databaseValue: Long): Date = Date(databaseValue) diff --git a/app/src/main/java/yokai/data/DatabaseHandler.kt b/app/src/main/java/dev/yokai/data/DatabaseHandler.kt similarity index 94% rename from app/src/main/java/yokai/data/DatabaseHandler.kt rename to app/src/main/java/dev/yokai/data/DatabaseHandler.kt index 8297d8a927..5232f8cb2e 100644 --- a/app/src/main/java/yokai/data/DatabaseHandler.kt +++ b/app/src/main/java/dev/yokai/data/DatabaseHandler.kt @@ -1,6 +1,7 @@ -package yokai.data +package dev.yokai.data import app.cash.sqldelight.Query +import app.cash.sqldelight.Transacter import kotlinx.coroutines.flow.Flow import tachiyomi.data.Database diff --git a/app/src/main/java/yokai/data/TransactionContext.kt b/app/src/main/java/dev/yokai/data/TransactionContext.kt similarity index 98% rename from app/src/main/java/yokai/data/TransactionContext.kt rename to app/src/main/java/dev/yokai/data/TransactionContext.kt index 14e74a50d7..53e0086c1b 100644 --- a/app/src/main/java/yokai/data/TransactionContext.kt +++ b/app/src/main/java/dev/yokai/data/TransactionContext.kt @@ -1,4 +1,4 @@ -package yokai.data +package dev.yokai.data import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Job @@ -6,8 +6,8 @@ import kotlinx.coroutines.asContextElement import kotlinx.coroutines.runBlocking import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.withContext -import java.util.concurrent.* -import java.util.concurrent.atomic.* +import java.util.concurrent.RejectedExecutionException +import java.util.concurrent.atomic.AtomicInteger import kotlin.coroutines.ContinuationInterceptor import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext diff --git a/app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt b/app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt similarity index 89% rename from app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt rename to app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt index 9d471e5f10..95b2375261 100644 --- a/app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt +++ b/app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt @@ -1,10 +1,10 @@ -package yokai.data.chapter +package dev.yokai.data.chapter +import dev.yokai.data.DatabaseHandler +import dev.yokai.domain.chapter.ChapterRepository import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.util.system.toInt import kotlinx.coroutines.flow.Flow -import yokai.data.DatabaseHandler -import yokai.domain.chapter.ChapterRepository class ChapterRepositoryImpl(private val handler: DatabaseHandler) : ChapterRepository { override suspend fun getChapters(mangaId: Long, filterScanlators: Boolean): List = diff --git a/app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt b/app/src/main/java/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt similarity index 90% rename from app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt rename to app/src/main/java/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt index a85e870b30..dbcce92598 100644 --- a/app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt +++ b/app/src/main/java/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt @@ -1,12 +1,12 @@ -package yokai.data.extension.repo +package dev.yokai.data.extension.repo import android.database.sqlite.SQLiteException +import dev.yokai.data.DatabaseHandler +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.exception.SaveExtensionRepoException +import dev.yokai.domain.extension.repo.model.ExtensionRepo import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map -import yokai.data.DatabaseHandler -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.exception.SaveExtensionRepoException -import yokai.domain.extension.repo.model.ExtensionRepo class ExtensionRepoRepositoryImpl(private val handler: DatabaseHandler): ExtensionRepoRepository { override fun subscribeAll(): Flow> = diff --git a/app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt b/app/src/main/java/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt similarity index 90% rename from app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt rename to app/src/main/java/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt index b599c5c49f..4d290162cf 100644 --- a/app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt +++ b/app/src/main/java/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt @@ -1,13 +1,13 @@ -package yokai.data.library.custom +package dev.yokai.data.library.custom import android.database.sqlite.SQLiteException import co.touchlab.kermit.Logger +import dev.yokai.data.DatabaseHandler +import dev.yokai.domain.library.custom.CustomMangaRepository +import dev.yokai.domain.library.custom.exception.SaveCustomMangaException +import dev.yokai.domain.library.custom.model.CustomMangaInfo import eu.kanade.tachiyomi.util.system.e import kotlinx.coroutines.flow.Flow -import yokai.data.DatabaseHandler -import yokai.domain.library.custom.CustomMangaRepository -import yokai.domain.library.custom.exception.SaveCustomMangaException -import yokai.domain.library.custom.model.CustomMangaInfo class CustomMangaRepositoryImpl(private val handler: DatabaseHandler) : CustomMangaRepository { override fun subscribeAll(): Flow> = diff --git a/app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt b/app/src/main/java/dev/yokai/data/manga/MangaRepositoryImpl.kt similarity index 87% rename from app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt rename to app/src/main/java/dev/yokai/data/manga/MangaRepositoryImpl.kt index 71f190e9ff..0874543ac6 100644 --- a/app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt +++ b/app/src/main/java/dev/yokai/data/manga/MangaRepositoryImpl.kt @@ -1,10 +1,10 @@ -package yokai.data.manga +package dev.yokai.data.manga +import dev.yokai.data.DatabaseHandler +import dev.yokai.domain.manga.MangaRepository import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.data.database.models.Manga import kotlinx.coroutines.flow.Flow -import yokai.data.DatabaseHandler -import yokai.domain.manga.MangaRepository class MangaRepositoryImpl(private val handler: DatabaseHandler) : MangaRepository { override suspend fun getManga(): List = diff --git a/app/src/main/java/yokai/domain/ComposableAlertDialog.kt b/app/src/main/java/dev/yokai/domain/ComposableAlertDialog.kt similarity index 92% rename from app/src/main/java/yokai/domain/ComposableAlertDialog.kt rename to app/src/main/java/dev/yokai/domain/ComposableAlertDialog.kt index 9be777dd38..aaaa768a90 100644 --- a/app/src/main/java/yokai/domain/ComposableAlertDialog.kt +++ b/app/src/main/java/dev/yokai/domain/ComposableAlertDialog.kt @@ -1,4 +1,4 @@ -package yokai.domain +package dev.yokai.domain import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/app/src/main/java/yokai/domain/Result.kt b/app/src/main/java/dev/yokai/domain/Result.kt similarity index 89% rename from app/src/main/java/yokai/domain/Result.kt rename to app/src/main/java/dev/yokai/domain/Result.kt index 0af255791d..5267482aac 100644 --- a/app/src/main/java/yokai/domain/Result.kt +++ b/app/src/main/java/dev/yokai/domain/Result.kt @@ -1,4 +1,4 @@ -package yokai.domain +package dev.yokai.domain sealed class Result { data class Success(val data: T? = null) : Result() diff --git a/app/src/main/java/yokai/domain/SplashState.kt b/app/src/main/java/dev/yokai/domain/SplashState.kt similarity index 72% rename from app/src/main/java/yokai/domain/SplashState.kt rename to app/src/main/java/dev/yokai/domain/SplashState.kt index 2cf0df755e..be63e5bf26 100644 --- a/app/src/main/java/yokai/domain/SplashState.kt +++ b/app/src/main/java/dev/yokai/domain/SplashState.kt @@ -1,4 +1,4 @@ -package yokai.domain +package dev.yokai.domain class SplashState { var shown = false diff --git a/app/src/main/java/yokai/domain/base/BasePreferences.kt b/app/src/main/java/dev/yokai/domain/base/BasePreferences.kt similarity index 98% rename from app/src/main/java/yokai/domain/base/BasePreferences.kt rename to app/src/main/java/dev/yokai/domain/base/BasePreferences.kt index 2d2754d087..d141611d19 100644 --- a/app/src/main/java/yokai/domain/base/BasePreferences.kt +++ b/app/src/main/java/dev/yokai/domain/base/BasePreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.base +package dev.yokai.domain.base import androidx.annotation.StringRes import eu.kanade.tachiyomi.R diff --git a/app/src/main/java/yokai/domain/base/models/Version.kt b/app/src/main/java/dev/yokai/domain/base/models/Version.kt similarity index 98% rename from app/src/main/java/yokai/domain/base/models/Version.kt rename to app/src/main/java/dev/yokai/domain/base/models/Version.kt index c1c70e11f1..d80e95dfd8 100644 --- a/app/src/main/java/yokai/domain/base/models/Version.kt +++ b/app/src/main/java/dev/yokai/domain/base/models/Version.kt @@ -1,4 +1,4 @@ -package yokai.domain.base.models +package dev.yokai.domain.base.models data class Version( val type: Type, diff --git a/app/src/main/java/yokai/domain/chapter/ChapterRepository.kt b/app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt similarity index 93% rename from app/src/main/java/yokai/domain/chapter/ChapterRepository.kt rename to app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt index c241b3f291..34c0d23e75 100644 --- a/app/src/main/java/yokai/domain/chapter/ChapterRepository.kt +++ b/app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt @@ -1,4 +1,4 @@ -package yokai.domain.chapter +package dev.yokai.domain.chapter import eu.kanade.tachiyomi.data.database.models.Chapter import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt b/app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt similarity index 74% rename from app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt rename to app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt index 8fd46a6381..e5dfceb7d5 100644 --- a/app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt +++ b/app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt @@ -1,6 +1,6 @@ -package yokai.domain.chapter.interactor +package dev.yokai.domain.chapter.interactor -import yokai.domain.chapter.ChapterRepository +import dev.yokai.domain.chapter.ChapterRepository class GetAvailableScanlators( private val chapterRepository: ChapterRepository, diff --git a/app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt b/app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt similarity index 85% rename from app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt rename to app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt index 66cea3f52e..66bb1a4bb1 100644 --- a/app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt +++ b/app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt @@ -1,7 +1,7 @@ -package yokai.domain.chapter.interactor +package dev.yokai.domain.chapter.interactor +import dev.yokai.domain.chapter.ChapterRepository import eu.kanade.tachiyomi.data.database.models.Manga -import yokai.domain.chapter.ChapterRepository class GetChapters( private val chapterRepository: ChapterRepository, diff --git a/app/src/main/java/yokai/domain/download/DownloadPreferences.kt b/app/src/main/java/dev/yokai/domain/download/DownloadPreferences.kt similarity index 86% rename from app/src/main/java/yokai/domain/download/DownloadPreferences.kt rename to app/src/main/java/dev/yokai/domain/download/DownloadPreferences.kt index 6b92f6281e..67cf5d9363 100644 --- a/app/src/main/java/yokai/domain/download/DownloadPreferences.kt +++ b/app/src/main/java/dev/yokai/domain/download/DownloadPreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.download +package dev.yokai.domain.download import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt b/app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt similarity index 84% rename from app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt rename to app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt index 356ebeb1a2..bfedc29ef6 100644 --- a/app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt +++ b/app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt @@ -1,10 +1,12 @@ -package yokai.domain.extension.interactor +package dev.yokai.domain.extension.interactor import android.content.pm.PackageInfo import androidx.core.content.pm.PackageInfoCompat +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.source.SourcePreferences import eu.kanade.tachiyomi.core.preference.getAndSet -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.source.SourcePreferences +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get class TrustExtension( private val extensionRepoRepository: ExtensionRepoRepository, diff --git a/app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt b/app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt similarity index 91% rename from app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt index b64d9cfb53..10416beafc 100644 --- a/app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt @@ -1,7 +1,7 @@ -package yokai.domain.extension.repo +package dev.yokai.domain.extension.repo +import dev.yokai.domain.extension.repo.model.ExtensionRepo import kotlinx.coroutines.flow.Flow -import yokai.domain.extension.repo.model.ExtensionRepo interface ExtensionRepoRepository { fun subscribeAll(): Flow> diff --git a/app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt b/app/src/main/java/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt similarity index 86% rename from app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt index 397705b526..bf7762a556 100644 --- a/app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt @@ -1,4 +1,4 @@ -package yokai.domain.extension.repo.exception +package dev.yokai.domain.extension.repo.exception import java.io.IOException diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt similarity index 89% rename from app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt index c7e793a877..dedb58698b 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt @@ -1,13 +1,13 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor import co.touchlab.kermit.Logger +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.exception.SaveExtensionRepoException +import dev.yokai.domain.extension.repo.model.ExtensionRepo +import dev.yokai.domain.extension.repo.service.ExtensionRepoService import eu.kanade.tachiyomi.network.NetworkHelper import okhttp3.OkHttpClient import uy.kohesive.injekt.injectLazy -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.exception.SaveExtensionRepoException -import yokai.domain.extension.repo.model.ExtensionRepo -import yokai.domain.extension.repo.service.ExtensionRepoService class CreateExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt similarity index 64% rename from app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt index 19926d3589..b0882df664 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt @@ -1,6 +1,6 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor -import yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.ExtensionRepoRepository class DeleteExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt similarity index 63% rename from app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt index 150afbd9ed..52be3f55c8 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt @@ -1,8 +1,8 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.model.ExtensionRepo import kotlinx.coroutines.flow.Flow -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.model.ExtensionRepo class GetExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt similarity index 58% rename from app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt index e753d6ab2c..e41f63498b 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt @@ -1,6 +1,6 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor -import yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.ExtensionRepoRepository class GetExtensionRepoCount( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt similarity index 54% rename from app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt index 5310ff81bb..37f5fcea7b 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt @@ -1,7 +1,7 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.model.ExtensionRepo +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.model.ExtensionRepo class ReplaceExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt similarity index 79% rename from app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt index 8494bc931e..19bcbe4e02 100644 --- a/app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt @@ -1,12 +1,12 @@ -package yokai.domain.extension.repo.interactor +package dev.yokai.domain.extension.repo.interactor +import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import dev.yokai.domain.extension.repo.model.ExtensionRepo +import dev.yokai.domain.extension.repo.service.ExtensionRepoService import eu.kanade.tachiyomi.network.NetworkHelper import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope -import yokai.domain.extension.repo.ExtensionRepoRepository -import yokai.domain.extension.repo.model.ExtensionRepo -import yokai.domain.extension.repo.service.ExtensionRepoService class UpdateExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository, diff --git a/app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt b/app/src/main/java/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt similarity index 78% rename from app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt index 338ea18944..fc2eaa7fb5 100644 --- a/app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt @@ -1,4 +1,4 @@ -package yokai.domain.extension.repo.model +package dev.yokai.domain.extension.repo.model data class ExtensionRepo( val baseUrl: String, diff --git a/app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt b/app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt similarity index 94% rename from app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt rename to app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt index 6facca5e46..7af640dc3c 100644 --- a/app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt +++ b/app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt @@ -1,6 +1,7 @@ -package yokai.domain.extension.repo.service +package dev.yokai.domain.extension.repo.service import androidx.core.net.toUri +import dev.yokai.domain.extension.repo.model.ExtensionRepo import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.HttpException import eu.kanade.tachiyomi.network.awaitSuccess @@ -12,7 +13,6 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.OkHttpClient import uy.kohesive.injekt.injectLazy -import yokai.domain.extension.repo.model.ExtensionRepo class ExtensionRepoService( private val client: OkHttpClient, diff --git a/app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt b/app/src/main/java/dev/yokai/domain/library/custom/CustomMangaRepository.kt similarity index 90% rename from app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt rename to app/src/main/java/dev/yokai/domain/library/custom/CustomMangaRepository.kt index 80cf303788..a2cf529a2f 100644 --- a/app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/CustomMangaRepository.kt @@ -1,7 +1,7 @@ -package yokai.domain.library.custom +package dev.yokai.domain.library.custom +import dev.yokai.domain.library.custom.model.CustomMangaInfo import kotlinx.coroutines.flow.Flow -import yokai.domain.library.custom.model.CustomMangaInfo interface CustomMangaRepository { fun subscribeAll(): Flow> diff --git a/app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt b/app/src/main/java/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt similarity index 86% rename from app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt rename to app/src/main/java/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt index 2297c7f1dc..d4af3e5a18 100644 --- a/app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt @@ -1,4 +1,4 @@ -package yokai.domain.library.custom.exception +package dev.yokai.domain.library.custom.exception import java.io.IOException diff --git a/app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt b/app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt similarity index 75% rename from app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt rename to app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt index f9876761cd..a1bf1f392d 100644 --- a/app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt @@ -1,8 +1,8 @@ -package yokai.domain.library.custom.interactor +package dev.yokai.domain.library.custom.interactor -import yokai.domain.library.custom.CustomMangaRepository -import yokai.domain.library.custom.exception.SaveCustomMangaException -import yokai.domain.library.custom.model.CustomMangaInfo +import dev.yokai.domain.library.custom.CustomMangaRepository +import dev.yokai.domain.library.custom.exception.SaveCustomMangaException +import dev.yokai.domain.library.custom.model.CustomMangaInfo class CreateCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt b/app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt similarity index 71% rename from app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt rename to app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt index c1c077b48f..5551f4d4d7 100644 --- a/app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt @@ -1,6 +1,6 @@ -package yokai.domain.library.custom.interactor +package dev.yokai.domain.library.custom.interactor -import yokai.domain.library.custom.CustomMangaRepository +import dev.yokai.domain.library.custom.CustomMangaRepository class DeleteCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt b/app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt similarity index 65% rename from app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt rename to app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt index 848b5ec53e..a01fbfc38b 100644 --- a/app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt @@ -1,6 +1,6 @@ -package yokai.domain.library.custom.interactor +package dev.yokai.domain.library.custom.interactor -import yokai.domain.library.custom.CustomMangaRepository +import dev.yokai.domain.library.custom.CustomMangaRepository class GetCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt b/app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt similarity index 63% rename from app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt rename to app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt index 58d322336c..8eaa50161f 100644 --- a/app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt @@ -1,6 +1,6 @@ -package yokai.domain.library.custom.interactor +package dev.yokai.domain.library.custom.interactor -import yokai.domain.library.custom.CustomMangaRepository +import dev.yokai.domain.library.custom.CustomMangaRepository class RelinkCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt b/app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt similarity index 95% rename from app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt rename to app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt index ac658f6a6f..82b4014da0 100644 --- a/app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt +++ b/app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt @@ -1,4 +1,4 @@ -package yokai.domain.library.custom.model +package dev.yokai.domain.library.custom.model import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaImpl diff --git a/app/src/main/java/yokai/domain/manga/MangaRepository.kt b/app/src/main/java/dev/yokai/domain/manga/MangaRepository.kt similarity index 92% rename from app/src/main/java/yokai/domain/manga/MangaRepository.kt rename to app/src/main/java/dev/yokai/domain/manga/MangaRepository.kt index 24f67af320..5cf2a537ba 100644 --- a/app/src/main/java/yokai/domain/manga/MangaRepository.kt +++ b/app/src/main/java/dev/yokai/domain/manga/MangaRepository.kt @@ -1,4 +1,4 @@ -package yokai.domain.manga +package dev.yokai.domain.manga import eu.kanade.tachiyomi.data.database.models.LibraryManga import eu.kanade.tachiyomi.data.database.models.Manga diff --git a/app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt b/app/src/main/java/dev/yokai/domain/manga/interactor/GetLibraryManga.kt similarity index 79% rename from app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt rename to app/src/main/java/dev/yokai/domain/manga/interactor/GetLibraryManga.kt index b2d3904107..ffe03f9d5f 100644 --- a/app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt +++ b/app/src/main/java/dev/yokai/domain/manga/interactor/GetLibraryManga.kt @@ -1,8 +1,8 @@ -package yokai.domain.manga.interactor +package dev.yokai.domain.manga.interactor +import dev.yokai.domain.manga.MangaRepository import eu.kanade.tachiyomi.data.database.models.LibraryManga import kotlinx.coroutines.flow.Flow -import yokai.domain.manga.MangaRepository class GetLibraryManga( private val mangaRepository: MangaRepository, diff --git a/app/src/main/java/yokai/domain/recents/RecentsPreferences.kt b/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt similarity index 95% rename from app/src/main/java/yokai/domain/recents/RecentsPreferences.kt rename to app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt index 8f361b04b3..7777aa8898 100644 --- a/app/src/main/java/yokai/domain/recents/RecentsPreferences.kt +++ b/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.recents +package dev.yokai.domain.recents import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.getEnum diff --git a/app/src/main/java/yokai/domain/source/SourcePreferences.kt b/app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt similarity index 87% rename from app/src/main/java/yokai/domain/source/SourcePreferences.kt rename to app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt index be863ebf5b..ee9158ad05 100644 --- a/app/src/main/java/yokai/domain/source/SourcePreferences.kt +++ b/app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.source +package dev.yokai.domain.source import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/yokai/domain/storage/StorageManager.kt b/app/src/main/java/dev/yokai/domain/storage/StorageManager.kt similarity index 98% rename from app/src/main/java/yokai/domain/storage/StorageManager.kt rename to app/src/main/java/dev/yokai/domain/storage/StorageManager.kt index 2d47d57232..c5ab262c68 100644 --- a/app/src/main/java/yokai/domain/storage/StorageManager.kt +++ b/app/src/main/java/dev/yokai/domain/storage/StorageManager.kt @@ -1,4 +1,4 @@ -package yokai.domain.storage +package dev.yokai.domain.storage import android.content.Context import androidx.core.net.toUri diff --git a/app/src/main/java/yokai/domain/storage/StoragePreferences.kt b/app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt similarity index 92% rename from app/src/main/java/yokai/domain/storage/StoragePreferences.kt rename to app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt index a17a9178e3..a8abb3fb69 100644 --- a/app/src/main/java/yokai/domain/storage/StoragePreferences.kt +++ b/app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.storage +package dev.yokai.domain.storage import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/yokai/domain/ui/UiPreferences.kt b/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt similarity index 76% rename from app/src/main/java/yokai/domain/ui/UiPreferences.kt rename to app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt index 64abb74567..0982f39082 100644 --- a/app/src/main/java/yokai/domain/ui/UiPreferences.kt +++ b/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt @@ -1,7 +1,9 @@ -package yokai.domain.ui +package dev.yokai.domain.ui import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.core.preference.getEnum import eu.kanade.tachiyomi.data.preference.PreferenceKeys +import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter class UiPreferences(private val preferenceStore: PreferenceStore) { fun recentsViewType() = preferenceStore.getInt("recents_view_type", 0) diff --git a/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt b/app/src/main/java/dev/yokai/domain/ui/settings/ReaderPreferences.kt similarity index 97% rename from app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt rename to app/src/main/java/dev/yokai/domain/ui/settings/ReaderPreferences.kt index 74a87e464f..839c4e7d21 100644 --- a/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt +++ b/app/src/main/java/dev/yokai/domain/ui/settings/ReaderPreferences.kt @@ -1,4 +1,4 @@ -package yokai.domain.ui.settings +package dev.yokai.domain.ui.settings import androidx.annotation.StringRes import eu.kanade.tachiyomi.R diff --git a/app/src/main/java/yokai/presentation/Scaffold.kt b/app/src/main/java/dev/yokai/presentation/Scaffold.kt similarity index 98% rename from app/src/main/java/yokai/presentation/Scaffold.kt rename to app/src/main/java/dev/yokai/presentation/Scaffold.kt index 29169a7a5f..9c1b75cb9a 100644 --- a/app/src/main/java/yokai/presentation/Scaffold.kt +++ b/app/src/main/java/dev/yokai/presentation/Scaffold.kt @@ -1,4 +1,4 @@ -package yokai.presentation +package dev.yokai.presentation import android.app.Activity import android.os.Build @@ -27,8 +27,8 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalView import androidx.compose.ui.res.stringResource import androidx.core.view.WindowInsetsControllerCompat +import dev.yokai.presentation.component.ToolTipButton import eu.kanade.tachiyomi.R -import yokai.presentation.component.ToolTipButton @Composable fun YokaiScaffold( diff --git a/app/src/main/java/yokai/presentation/component/AppIcon.kt b/app/src/main/java/dev/yokai/presentation/component/AppIcon.kt similarity index 98% rename from app/src/main/java/yokai/presentation/component/AppIcon.kt rename to app/src/main/java/dev/yokai/presentation/component/AppIcon.kt index b90a0b559f..33e7c275b0 100644 --- a/app/src/main/java/yokai/presentation/component/AppIcon.kt +++ b/app/src/main/java/dev/yokai/presentation/component/AppIcon.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import android.graphics.Bitmap import android.graphics.drawable.AdaptiveIconDrawable diff --git a/app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt b/app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt similarity index 99% rename from app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt rename to app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt index 55a4b729fa..6a85f90196 100644 --- a/app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt +++ b/app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import androidx.compose.animation.AnimatedContent import androidx.compose.animation.core.LinearEasing diff --git a/app/src/main/java/yokai/presentation/component/EmptyScreen.kt b/app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt similarity index 98% rename from app/src/main/java/yokai/presentation/component/EmptyScreen.kt rename to app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt index dc9d4c66df..6b5dfea057 100644 --- a/app/src/main/java/yokai/presentation/component/EmptyScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import android.content.res.Configuration import androidx.compose.foundation.Image diff --git a/app/src/main/java/yokai/presentation/component/Gap.kt b/app/src/main/java/dev/yokai/presentation/component/Gap.kt similarity index 95% rename from app/src/main/java/yokai/presentation/component/Gap.kt rename to app/src/main/java/dev/yokai/presentation/component/Gap.kt index 69576900dc..8d21b3cae6 100644 --- a/app/src/main/java/yokai/presentation/component/Gap.kt +++ b/app/src/main/java/dev/yokai/presentation/component/Gap.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.RowScope diff --git a/app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt b/app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt similarity index 94% rename from app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt rename to app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt index 0e1d0b9ccf..6ab18fe06d 100644 --- a/app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt +++ b/app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -14,7 +14,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.semantics.Role import androidx.compose.ui.unit.dp -import yokai.presentation.theme.Size +import dev.yokai.presentation.theme.Size @Composable fun LabeledCheckbox( diff --git a/app/src/main/java/yokai/presentation/component/ThemeItem.kt b/app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt similarity index 98% rename from app/src/main/java/yokai/presentation/component/ThemeItem.kt rename to app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt index c2619f75c6..5821ddecf4 100644 --- a/app/src/main/java/yokai/presentation/component/ThemeItem.kt +++ b/app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import android.content.Context import android.content.res.Configuration @@ -37,12 +37,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import com.google.accompanist.themeadapter.material3.createMdc3Theme +import dev.yokai.presentation.theme.HalfAlpha +import dev.yokai.presentation.theme.SecondaryItemAlpha +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.Themes import eu.kanade.tachiyomi.util.system.isInNightMode -import yokai.presentation.theme.HalfAlpha -import yokai.presentation.theme.SecondaryItemAlpha -import yokai.presentation.theme.Size private data class ContextTheme( val colorScheme: ColorScheme, diff --git a/app/src/main/java/yokai/presentation/component/ToolTip.kt b/app/src/main/java/dev/yokai/presentation/component/ToolTip.kt similarity index 99% rename from app/src/main/java/yokai/presentation/component/ToolTip.kt rename to app/src/main/java/dev/yokai/presentation/component/ToolTip.kt index a4fd5dec64..6607e867ad 100644 --- a/app/src/main/java/yokai/presentation/component/ToolTip.kt +++ b/app/src/main/java/dev/yokai/presentation/component/ToolTip.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt b/app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt similarity index 93% rename from app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt rename to app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt index b08c66a54a..cc18fac295 100644 --- a/app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt +++ b/app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component +package dev.yokai.presentation.component import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -15,8 +15,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import dev.yokai.presentation.core.util.clickableNoIndication import eu.kanade.tachiyomi.data.track.TrackService -import yokai.presentation.core.util.clickableNoIndication @Composable fun TrackLogoIcon( diff --git a/app/src/main/java/yokai/presentation/component/preference/Preference.kt b/app/src/main/java/dev/yokai/presentation/component/preference/Preference.kt similarity index 99% rename from app/src/main/java/yokai/presentation/component/preference/Preference.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/Preference.kt index f0b09b06fd..710bae4d1a 100644 --- a/app/src/main/java/yokai/presentation/component/preference/Preference.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/Preference.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference +package dev.yokai.presentation.component.preference import androidx.compose.runtime.Composable import androidx.compose.runtime.remember diff --git a/app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt similarity index 88% rename from app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt index 5eb2c83b80..7a845deb05 100644 --- a/app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference +package dev.yokai.presentation.component.preference import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -8,7 +8,7 @@ import androidx.compose.ui.res.stringResource import androidx.core.net.toUri import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.core.storage.preference.collectAsState +import eu.kanade.tachiyomi.core.preference.collectAsState @Composable fun storageLocationText( diff --git a/app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt similarity index 89% rename from app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt index e7d866c688..bdf5a58c51 100644 --- a/app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference +package dev.yokai.presentation.component.preference import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically @@ -12,19 +12,19 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.structuralEqualityPolicy import androidx.compose.ui.unit.dp -import eu.kanade.tachiyomi.core.storage.preference.collectAsState +import dev.yokai.presentation.component.preference.widget.EditTextPreferenceWidget +import dev.yokai.presentation.component.preference.widget.InfoWidget +import dev.yokai.presentation.component.preference.widget.ListPreferenceWidget +import dev.yokai.presentation.component.preference.widget.MultiSelectListPreferenceWidget +import dev.yokai.presentation.component.preference.widget.SliderPreferenceWidget +import dev.yokai.presentation.component.preference.widget.SwitchPreferenceWidget +import dev.yokai.presentation.component.preference.widget.TextPreferenceWidget +import dev.yokai.presentation.component.preference.widget.TrackingPreferenceWidget +import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.data.track.TrackPreferences import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.presentation.component.preference.widget.EditTextPreferenceWidget -import yokai.presentation.component.preference.widget.InfoWidget -import yokai.presentation.component.preference.widget.ListPreferenceWidget -import yokai.presentation.component.preference.widget.MultiSelectListPreferenceWidget -import yokai.presentation.component.preference.widget.SliderPreferenceWidget -import yokai.presentation.component.preference.widget.SwitchPreferenceWidget -import yokai.presentation.component.preference.widget.TextPreferenceWidget -import yokai.presentation.component.preference.widget.TrackingPreferenceWidget val LocalPreferenceHighlighted = compositionLocalOf(structuralEqualityPolicy()) { false } val LocalPreferenceMinHeight = compositionLocalOf(structuralEqualityPolicy()) { 56.dp } diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt similarity index 95% rename from app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt index 5b7e657042..62c9bda989 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.animation.animateColorAsState import androidx.compose.animation.core.RepeatMode @@ -30,9 +30,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import dev.yokai.presentation.component.preference.LocalPreferenceHighlighted +import dev.yokai.presentation.component.preference.LocalPreferenceMinHeight import kotlinx.coroutines.delay -import yokai.presentation.component.preference.LocalPreferenceHighlighted -import yokai.presentation.component.preference.LocalPreferenceMinHeight import kotlin.time.Duration.Companion.seconds @Composable diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt similarity index 97% rename from app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt index 29d51754fb..a2472d23f2 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material.icons.Icons @@ -22,6 +22,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.window.DialogProperties +import eu.kanade.tachiyomi.R import kotlinx.coroutines.launch diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/InfoWidget.kt similarity index 86% rename from app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/InfoWidget.kt index 334cfd0dde..f09b27483c 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/InfoWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -10,8 +10,8 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import yokai.presentation.core.util.secondaryItemAlpha -import yokai.presentation.theme.Size +import dev.yokai.presentation.core.util.secondaryItemAlpha +import dev.yokai.presentation.theme.Size @Composable internal fun InfoWidget(text: String) { diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt similarity index 98% rename from app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt index c5f63ff76f..9524bc4c29 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt similarity index 94% rename from app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt index 9be0ef736f..672c505fad 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.AlertDialog @@ -12,8 +12,8 @@ import androidx.compose.runtime.setValue import androidx.compose.runtime.toMutableStateList import androidx.compose.ui.res.stringResource import androidx.compose.ui.window.DialogProperties -import yokai.presentation.component.LabeledCheckbox -import yokai.presentation.component.preference.Preference +import dev.yokai.presentation.component.LabeledCheckbox +import dev.yokai.presentation.component.preference.Preference @Composable fun MultiSelectListPreferenceWidget( diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt similarity index 93% rename from app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt index 136c3e21bf..f78b0b1cde 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt similarity index 79% rename from app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt index 54c4c8b7e3..82b0ff0c0f 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt @@ -1,6 +1,9 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget +import androidx.compose.foundation.layout.padding import androidx.compose.material3.Slider +import androidx.compose.material3.SliderState +import androidx.compose.material3.Switch import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt similarity index 93% rename from app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt index 89ad67b33d..8a66912363 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.padding import androidx.compose.material3.Switch diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt similarity index 92% rename from app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt index 8a4a677d76..cf5662c482 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.padding import androidx.compose.material3.Icon @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector -import yokai.presentation.core.util.secondaryItemAlpha +import dev.yokai.presentation.core.util.secondaryItemAlpha @Composable fun TextPreferenceWidget( diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt similarity index 92% rename from app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt index a902ee89df..76db0502ba 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box @@ -16,11 +16,11 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import dev.yokai.presentation.component.TrackLogoIcon +import dev.yokai.presentation.component.preference.LocalPreferenceHighlighted import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.appwidget.util.stringResource import eu.kanade.tachiyomi.data.track.TrackService -import yokai.presentation.component.TrackLogoIcon -import yokai.presentation.component.preference.LocalPreferenceHighlighted @Composable fun TrackingPreferenceWidget( diff --git a/app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt similarity index 99% rename from app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt rename to app/src/main/java/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt index 4b52546aa6..c7579ed825 100644 --- a/app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt +++ b/app/src/main/java/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt @@ -1,4 +1,4 @@ -package yokai.presentation.component.preference.widget +package dev.yokai.presentation.component.preference.widget import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt b/app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt similarity index 85% rename from app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt rename to app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt index 86116f4db1..81c98b2887 100644 --- a/app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt +++ b/app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt @@ -1,10 +1,10 @@ -package yokai.presentation.core.util +package dev.yokai.presentation.core.util import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha -import yokai.presentation.theme.SecondaryItemAlpha +import dev.yokai.presentation.theme.SecondaryItemAlpha fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha) diff --git a/app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt b/app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt similarity index 90% rename from app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt rename to app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt index be3968b8e3..cba61953f4 100644 --- a/app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt @@ -1,4 +1,4 @@ -package yokai.presentation.extension +package dev.yokai.presentation.extension import android.os.Bundle import androidx.compose.material3.Text diff --git a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt similarity index 90% rename from app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt rename to app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt index f99b28c24a..814f92a371 100644 --- a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt @@ -1,11 +1,11 @@ -package yokai.presentation.extension.repo +package dev.yokai.presentation.extension.repo import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import dev.yokai.domain.ComposableAlertDialog import eu.kanade.tachiyomi.ui.base.controller.BaseComposeController import eu.kanade.tachiyomi.util.compose.LocalAlertDialog import eu.kanade.tachiyomi.util.compose.LocalBackPress -import yokai.domain.ComposableAlertDialog class ExtensionRepoController() : BaseComposeController() { diff --git a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt similarity index 94% rename from app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt rename to app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt index c2138028c2..176731ff99 100644 --- a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt @@ -1,4 +1,4 @@ -package yokai.presentation.extension.repo +package dev.yokai.presentation.extension.repo import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.padding @@ -25,20 +25,20 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel +import dev.yokai.domain.ComposableAlertDialog +import dev.yokai.domain.extension.repo.model.ExtensionRepo +import dev.yokai.presentation.AppBarType +import dev.yokai.presentation.YokaiScaffold +import dev.yokai.presentation.component.EmptyScreen +import dev.yokai.presentation.component.ToolTipButton +import dev.yokai.presentation.extension.repo.component.ExtensionRepoInput +import dev.yokai.presentation.extension.repo.component.ExtensionRepoItem import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.compose.LocalAlertDialog import eu.kanade.tachiyomi.util.compose.LocalBackPress import eu.kanade.tachiyomi.util.compose.currentOrThrow import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.flow.collectLatest -import yokai.domain.ComposableAlertDialog -import yokai.domain.extension.repo.model.ExtensionRepo -import yokai.presentation.AppBarType -import yokai.presentation.YokaiScaffold -import yokai.presentation.component.EmptyScreen -import yokai.presentation.component.ToolTipButton -import yokai.presentation.extension.repo.component.ExtensionRepoInput -import yokai.presentation.extension.repo.component.ExtensionRepoItem @Composable fun ExtensionRepoScreen( diff --git a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt similarity index 89% rename from app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt rename to app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt index dad43d22f9..a5b701ca4d 100644 --- a/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt @@ -1,9 +1,15 @@ -package yokai.presentation.extension.repo +package dev.yokai.presentation.extension.repo import androidx.annotation.StringRes import androidx.compose.runtime.Immutable import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +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.ReplaceExtensionRepo +import dev.yokai.domain.extension.repo.interactor.UpdateExtensionRepo +import dev.yokai.domain.extension.repo.model.ExtensionRepo import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.util.system.launchIO @@ -15,12 +21,6 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.update import uy.kohesive.injekt.injectLazy -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.ReplaceExtensionRepo -import yokai.domain.extension.repo.interactor.UpdateExtensionRepo -import yokai.domain.extension.repo.model.ExtensionRepo class ExtensionRepoViewModel : ViewModel() { diff --git a/app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt b/app/src/main/java/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt similarity index 96% rename from app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt rename to app/src/main/java/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt index 8601ee9b83..7e6fb4a5b6 100644 --- a/app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt +++ b/app/src/main/java/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt @@ -1,4 +1,4 @@ -package yokai.presentation.extension.repo.component +package dev.yokai.presentation.extension.repo.component import android.content.res.Configuration import androidx.compose.foundation.basicMarquee @@ -30,10 +30,10 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import dev.yokai.domain.extension.repo.model.ExtensionRepo +import dev.yokai.presentation.component.Gap +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.util.compose.textHint -import yokai.domain.extension.repo.model.ExtensionRepo -import yokai.presentation.component.Gap -import yokai.presentation.theme.Size // TODO: Redesign // - Edit diff --git a/app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt b/app/src/main/java/dev/yokai/presentation/onboarding/InfoScreen.kt similarity index 96% rename from app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/InfoScreen.kt index d26622c5dc..e887afaf6e 100644 --- a/app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/InfoScreen.kt @@ -1,4 +1,4 @@ -package yokai.presentation.onboarding +package dev.yokai.presentation.onboarding import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background @@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.RocketLaunch import androidx.compose.material.icons.outlined.RocketLaunch import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -31,8 +32,8 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.zIndex -import yokai.presentation.core.util.secondaryItemAlpha -import yokai.presentation.theme.Size +import dev.yokai.presentation.core.util.secondaryItemAlpha +import dev.yokai.presentation.theme.Size @Composable fun InfoScreen( diff --git a/app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt b/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt similarity index 86% rename from app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt index d5efeee846..90284afc28 100644 --- a/app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt @@ -1,12 +1,12 @@ -package yokai.presentation.onboarding +package dev.yokai.presentation.onboarding import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import eu.kanade.tachiyomi.core.storage.preference.collectAsState +import dev.yokai.domain.base.BasePreferences +import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.ui.base.controller.BaseComposeController import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences class OnboardingController : BaseComposeController() { diff --git a/app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt b/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingScreen.kt similarity index 88% rename from app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/OnboardingScreen.kt index 8c1ccd7353..72f40a6df4 100644 --- a/app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingScreen.kt @@ -1,5 +1,6 @@ -package yokai.presentation.onboarding +package dev.yokai.presentation.onboarding +import android.annotation.SuppressLint import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent import androidx.compose.foundation.background @@ -18,13 +19,14 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import dev.yokai.presentation.onboarding.steps.PermissionStep +import dev.yokai.presentation.onboarding.steps.StorageStep +import dev.yokai.presentation.onboarding.steps.ThemeStep +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R import soup.compose.material.motion.animation.materialSharedAxisX import soup.compose.material.motion.animation.rememberSlideDistance -import yokai.presentation.onboarding.steps.PermissionStep -import yokai.presentation.onboarding.steps.StorageStep -import yokai.presentation.onboarding.steps.ThemeStep -import yokai.presentation.theme.Size @Composable fun OnboardingScreen( diff --git a/app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt b/app/src/main/java/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt similarity index 75% rename from app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt index c2d262a634..0ead72e670 100644 --- a/app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt @@ -1,4 +1,4 @@ -package yokai.presentation.onboarding.steps +package dev.yokai.presentation.onboarding.steps import androidx.compose.runtime.Composable diff --git a/app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt b/app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt similarity index 98% rename from app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt index 78d76190d7..3ba699bf44 100644 --- a/app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt @@ -1,4 +1,4 @@ -package yokai.presentation.onboarding.steps +package dev.yokai.presentation.onboarding.steps import android.Manifest import android.annotation.SuppressLint @@ -33,9 +33,9 @@ import androidx.core.content.getSystemService import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.compose.LocalLifecycleOwner +import dev.yokai.presentation.component.Gap +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R -import yokai.presentation.component.Gap -import yokai.presentation.theme.Size internal class PermissionStep : OnboardingStep { diff --git a/app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt b/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt similarity index 82% rename from app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt index 70e27d8933..418137c76a 100644 --- a/app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt @@ -1,6 +1,11 @@ -package yokai.presentation.onboarding.steps +package dev.yokai.presentation.onboarding.steps import android.content.ActivityNotFoundException +import android.content.Intent +import android.net.Uri +import androidx.activity.compose.ManagedActivityResultLauncher +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -18,14 +23,17 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource +import com.hippo.unifile.UniFile +import dev.yokai.domain.storage.StoragePreferences +import dev.yokai.presentation.component.preference.storageLocationText +import dev.yokai.presentation.settings.screen.data.storageLocationPicker +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.util.system.tryTakePersistableUriPermission import kotlinx.coroutines.flow.collectLatest import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StoragePreferences -import yokai.presentation.component.preference.storageLocationText -import yokai.presentation.settings.screen.data.storageLocationPicker -import yokai.presentation.theme.Size internal class StorageStep : OnboardingStep { diff --git a/app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt b/app/src/main/java/dev/yokai/presentation/onboarding/steps/ThemeStep.kt similarity index 96% rename from app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt rename to app/src/main/java/dev/yokai/presentation/onboarding/steps/ThemeStep.kt index 08377ee5d1..1e2cde5eec 100644 --- a/app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt +++ b/app/src/main/java/dev/yokai/presentation/onboarding/steps/ThemeStep.kt @@ -1,4 +1,4 @@ -package yokai.presentation.onboarding.steps +package dev.yokai.presentation.onboarding.steps import android.app.Activity import android.content.Context @@ -22,16 +22,18 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp import androidx.core.app.ActivityCompat import com.google.android.material.color.DynamicColors +import dev.yokai.presentation.component.ThemeItem +import dev.yokai.presentation.theme.Size import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.core.storage.preference.collectAsState +import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.system.Themes import eu.kanade.tachiyomi.util.system.appDelegateNightMode import uy.kohesive.injekt.injectLazy -import yokai.presentation.component.ThemeItem -import yokai.presentation.theme.Size internal class ThemeStep : OnboardingStep { override val isComplete: Boolean = true diff --git a/app/src/main/java/yokai/presentation/settings/ComposableSettings.kt b/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt similarity index 90% rename from app/src/main/java/yokai/presentation/settings/ComposableSettings.kt rename to app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt index 74e96a7337..6bcbd2da33 100644 --- a/app/src/main/java/yokai/presentation/settings/ComposableSettings.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt @@ -1,11 +1,11 @@ -package yokai.presentation.settings +package dev.yokai.presentation.settings import androidx.annotation.StringRes import androidx.compose.foundation.layout.RowScope import androidx.compose.runtime.Composable import androidx.compose.runtime.ReadOnlyComposable import androidx.compose.ui.res.stringResource -import yokai.presentation.component.preference.Preference +import dev.yokai.presentation.component.preference.Preference interface ComposableSettings { @Composable diff --git a/app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt b/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt similarity index 90% rename from app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt rename to app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt index 3d6cd91655..cdb26bc9ce 100644 --- a/app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt @@ -1,4 +1,4 @@ -package yokai.presentation.settings +package dev.yokai.presentation.settings import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -15,19 +15,19 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastForEachIndexed -import eu.kanade.tachiyomi.core.storage.preference.collectAsState +import dev.yokai.presentation.AppBarType +import dev.yokai.presentation.YokaiScaffold +import dev.yokai.presentation.component.Gap +import dev.yokai.presentation.component.preference.Preference +import dev.yokai.presentation.component.preference.PreferenceItem +import dev.yokai.presentation.component.preference.widget.PreferenceGroupHeader +import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.compose.LocalAlertDialog import eu.kanade.tachiyomi.util.compose.LocalBackPress import eu.kanade.tachiyomi.util.compose.currentOrThrow import kotlinx.coroutines.delay import uy.kohesive.injekt.injectLazy -import yokai.presentation.AppBarType -import yokai.presentation.YokaiScaffold -import yokai.presentation.component.Gap -import yokai.presentation.component.preference.Preference -import yokai.presentation.component.preference.PreferenceItem -import yokai.presentation.component.preference.widget.PreferenceGroupHeader import kotlin.time.Duration.Companion.seconds @Composable diff --git a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt similarity index 93% rename from app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt rename to app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt index 483a1a8998..adc0455ad5 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt @@ -1,9 +1,11 @@ -package yokai.presentation.settings.screen +package dev.yokai.presentation.settings.screen import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent +import android.net.Uri import android.widget.Toast +import androidx.activity.compose.ManagedActivityResultLauncher import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.IntrinsicSize @@ -25,6 +27,18 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import co.touchlab.kermit.Logger +import com.hippo.unifile.UniFile +import dev.yokai.domain.storage.StorageManager +import dev.yokai.domain.storage.StoragePreferences +import dev.yokai.presentation.component.preference.Preference +import dev.yokai.presentation.component.preference.storageLocationText +import dev.yokai.presentation.component.preference.widget.BasePreferenceWidget +import dev.yokai.presentation.component.preference.widget.PrefsHorizontalPadding +import dev.yokai.presentation.settings.ComposableSettings +import dev.yokai.presentation.settings.screen.data.CreateBackup +import dev.yokai.presentation.settings.screen.data.RestoreBackup +import dev.yokai.presentation.settings.screen.data.StorageInfo +import dev.yokai.presentation.settings.screen.data.storageLocationPicker import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -39,6 +53,7 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.e import eu.kanade.tachiyomi.util.system.launchNonCancellable import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.util.system.tryTakePersistableUriPermission import eu.kanade.tachiyomi.util.system.withUIContext import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentMapOf @@ -46,17 +61,6 @@ import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StorageManager -import yokai.domain.storage.StoragePreferences -import yokai.presentation.component.preference.Preference -import yokai.presentation.component.preference.storageLocationText -import yokai.presentation.component.preference.widget.BasePreferenceWidget -import yokai.presentation.component.preference.widget.PrefsHorizontalPadding -import yokai.presentation.settings.ComposableSettings -import yokai.presentation.settings.screen.data.CreateBackup -import yokai.presentation.settings.screen.data.RestoreBackup -import yokai.presentation.settings.screen.data.StorageInfo -import yokai.presentation.settings.screen.data.storageLocationPicker object SettingsDataScreen : ComposableSettings { @Composable diff --git a/app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt similarity index 97% rename from app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt rename to app/src/main/java/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt index fa93bd4df5..83c1568160 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt @@ -1,4 +1,4 @@ -package yokai.presentation.settings.screen.data +package dev.yokai.presentation.settings.screen.data import android.content.Context import android.net.Uri @@ -15,6 +15,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource import com.hippo.unifile.UniFile +import dev.yokai.presentation.component.LabeledCheckbox import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupFileValidator.Results import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -22,7 +23,6 @@ import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.data.backup.models.Backup import eu.kanade.tachiyomi.data.backup.restore.BackupRestoreJob import eu.kanade.tachiyomi.util.system.toast -import yokai.presentation.component.LabeledCheckbox @Composable fun RestoreBackup( diff --git a/app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt similarity index 95% rename from app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt rename to app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt index 6306b69a40..3e72c350ca 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt @@ -1,4 +1,4 @@ -package yokai.presentation.settings.screen.data +package dev.yokai.presentation.settings.screen.data import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt b/app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt similarity index 91% rename from app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt rename to app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt index 2eaad2078d..a13329f3aa 100644 --- a/app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt @@ -1,4 +1,4 @@ -package yokai.presentation.settings.screen.data +package dev.yokai.presentation.settings.screen.data import android.text.format.Formatter import androidx.compose.foundation.layout.Arrangement @@ -13,11 +13,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import dev.yokai.presentation.core.util.secondaryItemAlpha +import dev.yokai.presentation.theme.Size +import dev.yokai.presentation.theme.header import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.storage.DiskUtil -import yokai.presentation.core.util.secondaryItemAlpha -import yokai.presentation.theme.Size -import yokai.presentation.theme.header import java.io.File @Composable diff --git a/app/src/main/java/yokai/presentation/theme/Constants.kt b/app/src/main/java/dev/yokai/presentation/theme/Constants.kt similarity index 91% rename from app/src/main/java/yokai/presentation/theme/Constants.kt rename to app/src/main/java/dev/yokai/presentation/theme/Constants.kt index 139084edac..f49ac886dd 100644 --- a/app/src/main/java/yokai/presentation/theme/Constants.kt +++ b/app/src/main/java/dev/yokai/presentation/theme/Constants.kt @@ -1,4 +1,4 @@ -package yokai.presentation.theme +package dev.yokai.presentation.theme import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/yokai/presentation/theme/Theme.kt b/app/src/main/java/dev/yokai/presentation/theme/Theme.kt similarity index 94% rename from app/src/main/java/yokai/presentation/theme/Theme.kt rename to app/src/main/java/dev/yokai/presentation/theme/Theme.kt index 77e10348f1..00abf5d108 100644 --- a/app/src/main/java/yokai/presentation/theme/Theme.kt +++ b/app/src/main/java/dev/yokai/presentation/theme/Theme.kt @@ -1,4 +1,4 @@ -package yokai.presentation.theme +package dev.yokai.presentation.theme import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable diff --git a/app/src/main/java/yokai/presentation/theme/Typography.kt b/app/src/main/java/dev/yokai/presentation/theme/Typography.kt similarity index 91% rename from app/src/main/java/yokai/presentation/theme/Typography.kt rename to app/src/main/java/dev/yokai/presentation/theme/Typography.kt index bb69ed9fe0..3945046725 100644 --- a/app/src/main/java/yokai/presentation/theme/Typography.kt +++ b/app/src/main/java/dev/yokai/presentation/theme/Typography.kt @@ -1,4 +1,4 @@ -package yokai.presentation.theme +package dev.yokai.presentation.theme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Typography diff --git a/app/src/main/java/yokai/util/LewdMangaChecker.kt b/app/src/main/java/dev/yokai/util/LewdMangaChecker.kt similarity index 95% rename from app/src/main/java/yokai/util/LewdMangaChecker.kt rename to app/src/main/java/dev/yokai/util/LewdMangaChecker.kt index 823c174316..2f3e084b7c 100644 --- a/app/src/main/java/yokai/util/LewdMangaChecker.kt +++ b/app/src/main/java/dev/yokai/util/LewdMangaChecker.kt @@ -1,10 +1,10 @@ -package yokai.util +package dev.yokai.util import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.source.SourceManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.* +import java.util.Locale fun Manga.isLewd(): Boolean { val sourceName = Injekt.get().get(source)?.name diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 8dfe4020ca..b987a461de 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -34,6 +34,13 @@ import coil3.request.crossfade import coil3.util.DebugLogger import com.google.firebase.crashlytics.ktx.crashlytics 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.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore @@ -60,13 +67,6 @@ import org.conscrypt.Conscrypt import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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 open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factory { diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt rename to app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt b/app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt rename to app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt b/app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt similarity index 84% rename from core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt rename to app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt index 2950d0db48..6addefaa11 100644 --- a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt @@ -1,5 +1,9 @@ package eu.kanade.tachiyomi.core.preference +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.remember import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow @@ -73,3 +77,9 @@ fun Preference.toggle(): Boolean { set(!get()) return get() } + +@Composable +fun Preference.collectAsState(): State { + val flow = remember(this) { changes() } + return flow.collectAsState(initial = get()) +} diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt b/app/src/main/java/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt similarity index 100% rename from core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt rename to app/src/main/java/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/core/storage/preference/PreferenceExtension.kt b/app/src/main/java/eu/kanade/tachiyomi/core/storage/preference/PreferenceExtension.kt deleted file mode 100644 index be0b8e9773..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/core/storage/preference/PreferenceExtension.kt +++ /dev/null @@ -1,13 +0,0 @@ -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 Preference.collectAsState(): State { - val flow = remember(this) { changes() } - return flow.collectAsState(initial = get()) -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt index 1d5cfad071..2beea4c0e0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt @@ -4,6 +4,7 @@ import android.content.Context import android.net.Uri import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile +import dev.yokai.domain.storage.StorageManager import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.creators.CategoriesBackupCreator @@ -21,7 +22,6 @@ import okio.sink import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StorageManager import java.io.FileOutputStream class BackupCreator( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt index d7d9c7b1b8..e808c44b2e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreatorJob.kt @@ -14,6 +14,7 @@ import androidx.work.WorkerParameters import androidx.work.workDataOf import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile +import dev.yokai.domain.storage.StorageManager import eu.kanade.tachiyomi.data.backup.BackupNotifier import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.preference.PreferencesHelper @@ -23,7 +24,6 @@ import eu.kanade.tachiyomi.util.system.notificationManager import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StorageManager import java.util.concurrent.* class BackupCreatorJob(private val context: Context, workerParams: WorkerParameters) : diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt index b02d67cfbd..57d32c64df 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt @@ -1,5 +1,8 @@ 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.Manga import eu.kanade.tachiyomi.data.database.models.MangaImpl @@ -9,7 +12,6 @@ import eu.kanade.tachiyomi.source.model.UpdateStrategy import eu.kanade.tachiyomi.util.chapter.ChapterUtil import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import yokai.domain.library.custom.model.CustomMangaInfo @Suppress("DEPRECATION") @Serializable diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt index bf67bfedb7..bd4c679800 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaBackupRestorer.kt @@ -1,5 +1,6 @@ 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.BackupHistory import eu.kanade.tachiyomi.data.backup.models.BackupManga @@ -17,7 +18,6 @@ import eu.kanade.tachiyomi.util.manga.MangaUtil import eu.kanade.tachiyomi.util.system.launchNow import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.library.custom.model.CustomMangaInfo import kotlin.math.max class MangaBackupRestorer( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt index 7017d0d14c..0daae16f5d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt @@ -1,18 +1,5 @@ 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 { override var id: Long? = null diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt index 62507cf4e1..4c63956f70 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.ui.reader.settings.ReadingModeType import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.* +import java.util.Locale interface Manga : SManga { @@ -34,55 +34,6 @@ interface Manga : SManga { 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 isHidden() = status == -1 diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index e7081dacef..fe5b8707ba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.download import android.content.Context import com.hippo.unifile.UniFile +import dev.yokai.domain.storage.StorageManager import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga @@ -15,8 +16,7 @@ import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StorageManager -import java.util.concurrent.* +import java.util.concurrent.TimeUnit /** * Cache where we dump the downloads directory from the filesystem. This class is needed because diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt index d95f4aaf36..b367ef10bc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.download import android.content.Context import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile +import dev.yokai.domain.download.DownloadPreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga @@ -17,7 +18,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch 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 diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index 3af8726cbd..94798455c1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.data.download import android.content.Context 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.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter @@ -15,8 +17,6 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach 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. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index cb933673c0..7de8c33063 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -6,6 +6,10 @@ import android.os.Looper import co.touchlab.kermit.Logger import com.hippo.unifile.UniFile 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.data.cache.ChapterCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -48,13 +52,11 @@ import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers 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.File -import java.util.zip.* +import java.util.zip.CRC32 +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream /** * This class is the one in charge of downloading chapters. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt index 119173a80f..9b4522f885 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt @@ -2,6 +2,16 @@ package eu.kanade.tachiyomi.data.library import android.content.Context 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.MangaImpl import kotlinx.coroutines.CoroutineScope @@ -16,16 +26,6 @@ import nl.adaptivity.xmlutil.serialization.XML import nl.adaptivity.xmlutil.serialization.XmlSerialName import nl.adaptivity.xmlutil.serialization.XmlValue 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 class CustomMangaManager(val context: Context) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index c3822b108c..ff57dc1644 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -20,6 +20,7 @@ import co.touchlab.kermit.Logger import coil3.imageLoader import coil3.request.CachePolicy import coil3.request.ImageRequest +import dev.yokai.domain.manga.interactor.GetLibraryManga import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -74,12 +75,12 @@ import kotlinx.coroutines.sync.Semaphore import kotlinx.coroutines.sync.withPermit import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.manga.interactor.GetLibraryManga import java.io.File import java.lang.ref.WeakReference import java.util.* -import java.util.concurrent.* -import java.util.concurrent.atomic.* +import java.util.concurrent.CancellationException +import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicInteger class LibraryUpdateJob(private val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index e86b2da262..02e6693495 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -11,6 +11,7 @@ import eu.kanade.tachiyomi.core.preference.getEnum import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob 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.filter.FilterBottomSheet import eu.kanade.tachiyomi.ui.reader.settings.OrientationType @@ -400,6 +401,10 @@ class PreferencesHelper(val context: Context, val preferenceStore: PreferenceSto 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 showSourcesInShortcuts() = prefs.getBoolean(Keys.showSourcesInShortcuts, true) fun openChapterInShortcuts() = prefs.getBoolean(Keys.openChapterInShortcuts, true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt index 88a4ee5904..89a7f4552e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.updater import android.content.Context import android.os.Build import androidx.annotation.VisibleForTesting +import dev.yokai.domain.base.models.Version import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.network.GET @@ -14,7 +15,6 @@ import eu.kanade.tachiyomi.util.system.withIOContext import kotlinx.serialization.json.Json import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.base.models.Version import java.util.* import java.util.concurrent.* diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index 96767cd0af..bf1a537fe1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -5,6 +5,8 @@ import android.graphics.drawable.Drawable import android.os.Build import android.os.Parcelable 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.extension.api.ExtensionApi import eu.kanade.tachiyomi.extension.model.Extension @@ -15,6 +17,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.source.Source 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.withIOContext import kotlinx.coroutines.CoroutineScope @@ -25,8 +28,6 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.parcelize.Parcelize import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.base.BasePreferences -import yokai.domain.extension.interactor.TrustExtension import java.util.* import java.util.concurrent.* @@ -154,7 +155,7 @@ class ExtensionManager( val extensions: List = try { api.findExtensions() } catch (e: Exception) { - Logger.e(e) { "Failed to find available extensions" } + Logger.e(e) emptyList() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt index 45e29886a0..deb9db4962 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt @@ -18,6 +18,8 @@ import androidx.work.OneTimeWorkRequestBuilder import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager 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.data.library.LibraryUpdateJob import eu.kanade.tachiyomi.data.notification.NotificationReceiver @@ -37,8 +39,6 @@ import rikka.shizuku.Shizuku import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences -import yokai.domain.base.BasePreferences.ExtensionInstaller import java.util.concurrent.* class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParameters) : diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt index a33e307fb6..3f5d66b553 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt @@ -2,6 +2,9 @@ package eu.kanade.tachiyomi.extension.api import android.content.Context 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.model.Extension import eu.kanade.tachiyomi.extension.model.LoadResult @@ -18,9 +21,6 @@ import kotlinx.serialization.json.Json import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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 { diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt index bcd4fc8278..ba3f76a02a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt @@ -12,6 +12,7 @@ import android.os.Environment import androidx.core.content.ContextCompat import androidx.core.net.toUri import co.touchlab.kermit.Logger +import dev.yokai.domain.base.BasePreferences import eu.kanade.tachiyomi.extension.ExtensionInstallerJob import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.extension.ShizukuInstaller @@ -46,7 +47,6 @@ import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences import java.io.File /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index 10775f75a3..be326567fd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -9,6 +9,7 @@ import android.os.Build import androidx.core.content.pm.PackageInfoCompat import co.touchlab.kermit.Logger import dalvik.system.PathClassLoader +import dev.yokai.domain.extension.interactor.TrustExtension import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.model.Extension @@ -22,7 +23,6 @@ import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.injectLazy -import yokai.domain.extension.interactor.TrustExtension import java.io.File import java.nio.file.Files import java.nio.file.attribute.BasicFileAttributes diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt b/app/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt b/app/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt b/app/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt similarity index 68% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt index 5fb1cd3703..b73ca6c50a 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -1,6 +1,10 @@ package eu.kanade.tachiyomi.network import android.content.Context +import com.chuckerteam.chucker.api.ChuckerCollector +import com.chuckerteam.chucker.api.ChuckerInterceptor +import eu.kanade.tachiyomi.BuildConfig +import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor import eu.kanade.tachiyomi.network.interceptor.IgnoreGzipInterceptor import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor @@ -8,14 +12,13 @@ import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor import okhttp3.Cache import okhttp3.OkHttpClient import okhttp3.brotli.BrotliInterceptor +import uy.kohesive.injekt.injectLazy import java.io.File -import java.util.concurrent.* +import java.util.concurrent.TimeUnit -class NetworkHelper( - val context: Context, - private val networkPreferences: NetworkPreferences, - private val block: (OkHttpClient.Builder) -> Unit, -) { +class NetworkHelper(val context: Context) { + + private val preferences: PreferencesHelper by injectLazy() private val cacheDir = File(context.cacheDir, "network_cache") @@ -40,9 +43,18 @@ class NetworkHelper( .addNetworkInterceptor(IgnoreGzipInterceptor()) .addNetworkInterceptor(BrotliInterceptor) .apply { - block(this) + if (BuildConfig.DEBUG) { + addInterceptor( + ChuckerInterceptor.Builder(context) + .collector(ChuckerCollector(context)) + .maxContentLength(250000L) + .redactHeaders(emptySet()) + .alwaysReadResponseBody(false) + .build(), + ) + } - when (networkPreferences.dohProvider().get()) { + when (preferences.dohProvider()) { PREF_DOH_CLOUDFLARE -> dohCloudflare() PREF_DOH_GOOGLE -> dohGoogle() PREF_DOH_ADGUARD -> dohAdGuard() @@ -63,7 +75,7 @@ class NetworkHelper( } val defaultUserAgent - get() = networkPreferences.defaultUserAgent().get().replace("\n", " ").trim() + get() = preferences.defaultUserAgent().get().replace("\n", " ").trim() companion object { const val DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0" diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt similarity index 99% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt index 15c8839e5f..e6eec02f4a 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt @@ -16,7 +16,7 @@ import rx.Observable import rx.Producer import rx.Subscription import java.io.IOException -import java.util.concurrent.atomic.* +import java.util.concurrent.atomic.AtomicBoolean import kotlin.coroutines.resumeWithException val jsonMime = "application/json; charset=utf-8".toMediaType() diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt b/app/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt similarity index 100% rename from core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt b/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/Requests.kt b/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt similarity index 97% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/Requests.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt index dedc62fea3..6adb0de8ef 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/Requests.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt @@ -7,7 +7,7 @@ import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.RequestBody -import java.util.concurrent.TimeUnit.* +import java.util.concurrent.TimeUnit.MINUTES private val DEFAULT_CACHE_CONTROL = CacheControl.Builder().maxAge(10, MINUTES).build() private val DEFAULT_HEADERS = Headers.Builder().build() diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt similarity index 94% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt index ca3d155395..875bbc2c73 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt @@ -5,6 +5,7 @@ import android.content.Context import android.webkit.WebView import android.widget.Toast import androidx.core.content.ContextCompat +import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.network.AndroidCookieJar import eu.kanade.tachiyomi.util.system.WebViewClientCompat import eu.kanade.tachiyomi.util.system.isOutdated @@ -14,10 +15,8 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response -import yokai.i18n.MR -import yokai.util.lang.getMString import java.io.IOException -import java.util.concurrent.* +import java.util.concurrent.CountDownLatch class CloudflareInterceptor( private val context: Context, @@ -49,7 +48,7 @@ class CloudflareInterceptor( // Because OkHttp's enqueue only handles IOExceptions, wrap the exception so that // we don't crash the entire app catch (e: CloudflareBypassException) { - throw IOException(context.getMString(MR.strings.failed_to_bypass_cloudflare)) + throw IOException(context.getString(R.string.failed_to_bypass_cloudflare)) } catch (e: Exception) { throw IOException(e) } @@ -131,7 +130,7 @@ class CloudflareInterceptor( if (!cloudflareBypassed) { // Prompt user to update WebView if it seems too outdated if (isWebViewOutdated) { - context.toast(MR.strings.please_update_webview, Toast.LENGTH_LONG) + context.toast(R.string.please_update_webview, Toast.LENGTH_LONG) } throw CloudflareBypassException() diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt similarity index 98% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt index e059f2b742..994c3c032d 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt @@ -5,7 +5,7 @@ import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Response import java.io.IOException -import java.util.concurrent.* +import java.util.concurrent.TimeUnit /** * An OkHttp interceptor that handles rate limiting. diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt similarity index 98% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt index a1307de1f7..b10b6904b5 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt @@ -6,7 +6,7 @@ import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Response import java.io.IOException -import java.util.concurrent.* +import java.util.concurrent.TimeUnit /** * An OkHttp interceptor that handles given url host's rate limiting. diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt similarity index 94% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt rename to app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt index 47018c7443..be8db9ee5e 100644 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt @@ -5,6 +5,7 @@ import android.os.Build import android.webkit.WebSettings import android.webkit.WebView import android.widget.Toast +import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.launchUI @@ -14,9 +15,9 @@ import okhttp3.Headers import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response -import yokai.i18n.MR -import java.util.* -import java.util.concurrent.* +import java.util.Locale +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit abstract class WebViewInterceptor( private val context: Context, @@ -56,7 +57,7 @@ abstract class WebViewInterceptor( if (!WebViewUtil.supportsWebView(context)) { launchUI { - context.toast(MR.strings.webview_is_required, Toast.LENGTH_LONG) + context.toast(R.string.webview_is_required, Toast.LENGTH_LONG) } return response } diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt similarity index 97% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt index f65c2662a2..01cc4a4fc9 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.source import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.util.awaitSingle +import eu.kanade.tachiyomi.util.system.awaitSingle import rx.Observable interface CatalogueSource : Source { diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/ConfigurableSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/ConfigurableSource.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index d90d7b729d..79fdf61fd8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -5,6 +5,11 @@ import androidx.core.net.toFile import co.touchlab.kermit.Logger import com.github.junrar.Archive 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.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList @@ -32,15 +37,10 @@ import nl.adaptivity.xmlutil.serialization.XML import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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.InputStream import java.nio.charset.StandardCharsets -import java.util.concurrent.* +import java.util.concurrent.TimeUnit class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSource { companion object { diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt similarity index 67% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/Source.kt index fec2f89674..b2167ee94c 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt @@ -1,10 +1,15 @@ package eu.kanade.tachiyomi.source +import android.graphics.drawable.Drawable +import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.util.awaitSingle +import eu.kanade.tachiyomi.source.online.HttpSource +import eu.kanade.tachiyomi.util.system.awaitSingle import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get /** * A basic interface for creating a source. It could be an online source, a local source, etc. @@ -61,6 +66,19 @@ interface Source { return fetchPageList(chapter).awaitSingle() } + fun includeLangInName(enabledLanguages: Set, 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 nameBasedOnEnabledLanguages(enabledLanguages: Set, extensionManager: ExtensionManager? = null): String { + return if (includeLangInName(enabledLanguages, extensionManager)) toString() else name + } + @Deprecated( "Use the non-RxJava API instead", ReplaceWith("getMangaDetails"), @@ -83,4 +101,6 @@ interface Source { throw IllegalStateException("Not used") } +fun Source.icon(): Drawable? = Injekt.get().getAppIconForSource(this) + fun Source.preferenceKey(): String = "source_$id" diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt deleted file mode 100644 index 4cbf8218fc..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt +++ /dev/null @@ -1,29 +0,0 @@ -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, 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, extensionManager: ExtensionManager? = null): String { - return if (includeLangInName(enabledLanguages, extensionManager)) toString() else name -} - -fun Source.icon(): Drawable? = Injekt.get().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 diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/SourceFactory.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceFactory.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/SourceFactory.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/SourceFactory.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/UnmeteredSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/UnmeteredSource.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/UnmeteredSource.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/UnmeteredSource.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/Filter.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/Filter.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/FilterList.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/FilterList.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/FilterList.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/FilterList.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/MangasPage.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/MangasPage.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/MangasPage.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/MangasPage.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt similarity index 59% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt index f53bbe8f0a..756b8f2c84 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.source.model +import eu.kanade.tachiyomi.data.database.models.ChapterImpl import java.io.Serializable interface SChapter : Serializable { @@ -22,6 +23,16 @@ interface SChapter : Serializable { scanlator = other.scanlator } + fun 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 + } + } + companion object { fun create(): SChapter { return SChapterImpl() diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapterImpl.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/SChapterImpl.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt new file mode 100644 index 0000000000..681cf126f4 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt @@ -0,0 +1,100 @@ +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() + } + } +} diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/models/SMangaExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/models/SMangaExtensions.kt deleted file mode 100644 index 352fc93f30..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/source/models/SMangaExtensions.kt +++ /dev/null @@ -1,7 +0,0 @@ -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 diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt similarity index 96% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt index 5ee2052c4a..5fc6ba155b 100644 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt @@ -1,5 +1,7 @@ package eu.kanade.tachiyomi.source.online +import eu.kanade.tachiyomi.extension.ExtensionManager +import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.asObservableSuccess @@ -11,12 +13,15 @@ import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.util.awaitSingle +import eu.kanade.tachiyomi.util.lang.getUrlWithoutDomain +import eu.kanade.tachiyomi.util.system.awaitSingle import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy import java.net.URI import java.net.URISyntaxException @@ -116,6 +121,12 @@ abstract class HttpSource : CatalogueSource { } } + fun getExtension(extensionManager: ExtensionManager? = null): Extension.Installed? = + (extensionManager ?: Injekt.get()).installedExtensionsFlow.value.find { it.sources.contains(this) } + + fun extOnlyHasAllLanguage(extensionManager: ExtensionManager? = null) = + getExtension(extensionManager)?.sources?.all { it.lang == "all" } ?: true + /** * Returns the request for the popular manga given the page. * @@ -451,7 +462,7 @@ abstract class HttpSource : CatalogueSource { fun getChapterUrl(manga: SManga?, chapter: SChapter): String? { manga ?: return null - val chapterUrl = getUrlWithoutDomain(chapter.url) + val chapterUrl = chapter.url.getUrlWithoutDomain() val mangaUrl = getMangaUrl(manga) return if (chapterUrl.isBlank()) { mangaUrl diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt rename to app/src/main/java/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Cubari.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Cubari.kt index fa460c9e87..79b24f74a0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Cubari.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Cubari.kt @@ -4,7 +4,6 @@ import android.net.Uri import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter 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.source.model.SChapter import eu.kanade.tachiyomi.source.online.DelegatedHttpSource @@ -14,7 +13,7 @@ import kotlinx.coroutines.async import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.* +import java.util.Locale class Cubari : DelegatedHttpSource() { override val domainName: String = "cubari" diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index 0f80b5b601..1b98e01ad5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -4,7 +4,6 @@ import android.net.Uri import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter 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.network.GET import eu.kanade.tachiyomi.network.await @@ -20,7 +19,7 @@ import okhttp3.CacheControl import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import java.util.* +import java.util.Locale class MangaDex : DelegatedHttpSource() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/FoolSlide.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/FoolSlide.kt index 0f006897af..3f7b595e68 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/FoolSlide.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/FoolSlide.kt @@ -5,7 +5,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaImpl -import eu.kanade.tachiyomi.data.database.models.toChapter import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/MangaPlus.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/MangaPlus.kt index 7a03655487..631e0efdf1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/MangaPlus.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/MangaPlus.kt @@ -4,7 +4,6 @@ import android.net.Uri import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter 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.network.GET import eu.kanade.tachiyomi.network.await diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt index d070c78fcd..c9ab2547a5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt @@ -12,6 +12,7 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.interpolator.view.animation.FastOutSlowInInterpolator import androidx.interpolator.view.animation.LinearOutSlowInInterpolator import androidx.viewbinding.ViewBinding +import dev.yokai.domain.SplashState import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.main.SearchActivity @@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.util.system.getThemeWithExtras import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat import eu.kanade.tachiyomi.util.system.setThemeByPref import uy.kohesive.injekt.injectLazy -import yokai.domain.SplashState abstract class BaseActivity : AppCompatActivity() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseComposeController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseComposeController.kt index 8f78c042ec..12d73c68b1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseComposeController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseComposeController.kt @@ -7,7 +7,7 @@ import android.view.ViewGroup import androidx.compose.runtime.Composable import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy -import yokai.presentation.theme.YokaiTheme +import dev.yokai.presentation.theme.YokaiTheme abstract class BaseComposeController(bundle: Bundle? = null) : BaseController(bundle) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/crash/CrashActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/crash/CrashActivity.kt index 151c82120a..a34a81d8cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/crash/CrashActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/crash/CrashActivity.kt @@ -17,6 +17,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.platform.LocalContext 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.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.main.MainActivity @@ -24,9 +27,6 @@ import eu.kanade.tachiyomi.util.CrashLogUtil import eu.kanade.tachiyomi.util.system.setThemeByPref import kotlinx.coroutines.launch import uy.kohesive.injekt.injectLazy -import yokai.presentation.onboarding.InfoScreen -import yokai.presentation.theme.Size -import yokai.presentation.theme.YokaiTheme class CrashActivity : AppCompatActivity() { internal val preferences: PreferencesHelper by injectLazy() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt index 56e962497b..4a2f38db5d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionAdapter.kt @@ -1,13 +1,13 @@ package eu.kanade.tachiyomi.ui.extension 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.items.IFlexible import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.extension.ExtensionAdapter.OnButtonClickListener import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences -import yokai.domain.base.BasePreferences.ExtensionInstaller /** * Adapter that holds the catalogue cards. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt index 51747b9292..66f5fd628b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/ExtensionBottomSheet.kt @@ -12,6 +12,8 @@ import androidx.core.view.updatePaddingRelative import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior 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.items.IFlexible import eu.kanade.tachiyomi.R @@ -44,8 +46,6 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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) : LinearLayout(context, attrs), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index a424533e29..8f2ecacda8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.library import android.os.Build import android.view.HapticFeedbackConstants import android.view.View +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R @@ -17,8 +18,7 @@ import eu.kanade.tachiyomi.util.system.timeSpanFromNow import eu.kanade.tachiyomi.util.system.withDefContext import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.injectLazy -import yokai.domain.ui.UiPreferences -import java.util.* +import java.util.Locale /** * Adapter storing a list of manga in a certain category. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 7d5ece7a90..c41df7bfb7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -51,6 +51,7 @@ import com.bluelinelabs.conductor.ControllerChangeType import com.github.florent37.viewtooltip.ViewTooltip import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.SelectableAdapter import eu.davidea.flexibleadapter.items.IFlexible @@ -129,8 +130,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.ui.UiPreferences -import java.util.* +import java.util.Locale import kotlin.math.abs import kotlin.math.max import kotlin.math.roundToInt diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt index 4f90d3d102..ac0d7a9e5f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt @@ -11,6 +11,7 @@ import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.StaggeredGridLayoutManager +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.AbstractSectionableItem import eu.davidea.flexibleadapter.items.IFilterable @@ -26,7 +27,6 @@ import eu.kanade.tachiyomi.widget.AutofitRecyclerView import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.ui.UiPreferences class LibraryItem( val manga: LibraryManga, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index a6793f04ba..46b5a97c40 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -1,5 +1,8 @@ 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.core.preference.minusAssign import eu.kanade.tachiyomi.core.preference.plusAssign @@ -54,11 +57,8 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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.concurrent.* +import java.util.concurrent.TimeUnit import kotlin.math.roundToInt import kotlin.random.Random diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 63de0578ad..2bf412774f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -67,6 +67,10 @@ import com.google.android.material.snackbar.Snackbar import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback import com.google.common.primitives.Floats.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.R import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -139,10 +143,20 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext import uy.kohesive.injekt.injectLazy -import yokai.core.migration.Migrator -import yokai.domain.base.BasePreferences -import yokai.presentation.extension.repo.ExtensionRepoController -import yokai.presentation.onboarding.OnboardingController +import kotlin.collections.List +import kotlin.collections.MutableList +import kotlin.collections.MutableMap +import kotlin.collections.distinct +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.math.abs import kotlin.math.min diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt index 996cd6bd2b..a978c0b6f4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt @@ -8,6 +8,7 @@ import androidx.core.view.isVisible import com.bluelinelabs.conductor.Controller import com.bluelinelabs.conductor.RouterTransaction import com.bluelinelabs.conductor.changehandler.SimpleSwapChangeHandler +import dev.yokai.domain.chapter.interactor.GetChapters import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.notification.NotificationReceiver @@ -29,7 +30,6 @@ import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.chapter.interactor.GetChapters class SearchActivity : MainActivity() { private val getChapters: GetChapters by injectLazy() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index 98fa984ca9..e5eec22bc9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -10,6 +10,10 @@ import coil3.request.CachePolicy import coil3.request.ImageRequest import coil3.request.SuccessResult 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.R import eu.kanade.tachiyomi.data.cache.CoverCache @@ -32,7 +36,6 @@ import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceNotFoundException -import eu.kanade.tachiyomi.source.getExtension import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.base.presenter.BaseCoroutinePresenter @@ -71,14 +74,11 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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.FileOutputStream import java.io.OutputStream -import java.util.* +import java.util.Date +import java.util.Locale class MangaDetailsPresenter( val manga: Manga, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt index b121bb7906..7a58bb1b80 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaHeaderHolder.kt @@ -26,18 +26,17 @@ import androidx.core.widget.TextViewCompat import androidx.transition.TransitionSet import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import coil3.request.CachePolicy -import coil3.request.error import coil3.request.placeholder +import coil3.request.error import com.google.android.material.button.MaterialButton import com.google.android.material.chip.Chip import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.coil.loadManga import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.data.coil.loadManga import eu.kanade.tachiyomi.databinding.ChapterHeaderItemBinding import eu.kanade.tachiyomi.databinding.MangaHeaderItemBinding import eu.kanade.tachiyomi.source.SourceManager 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.util.isLocal import eu.kanade.tachiyomi.util.lang.toNormalized diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt index adefca875a..621a144146 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/BaseMigrationPresenter.kt @@ -1,5 +1,6 @@ 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.models.Manga import eu.kanade.tachiyomi.data.preference.PreferenceValues @@ -17,7 +18,6 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.ui.UiPreferences abstract class BaseMigrationPresenter( protected val sourceManager: SourceManager = Injekt.get(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/design/MigrationSourceHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/design/MigrationSourceHolder.kt index 0bff2ed5ab..e48bdbc270 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/design/MigrationSourceHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/design/MigrationSourceHolder.kt @@ -4,7 +4,6 @@ import android.graphics.Paint.STRIKE_THRU_TEXT_FLAG import android.view.View import eu.kanade.tachiyomi.databinding.MigrationSourceItemBinding import eu.kanade.tachiyomi.source.icon -import eu.kanade.tachiyomi.source.nameBasedOnEnabledLanguages import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt index 28296d92be..d0fa10a0f3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/migration/manga/process/MigrationProcessAdapter.kt @@ -1,6 +1,8 @@ package eu.kanade.tachiyomi.ui.migration.manga.process 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.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -22,9 +24,7 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo -import yokai.domain.ui.UiPreferences -import java.util.* +import java.util.Date class MigrationProcessAdapter( val controller: MigrationListController, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt index 7f11e17272..22b3feb365 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.ui.more.stats +import dev.yokai.domain.manga.interactor.GetLibraryManga import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.LibraryManga @@ -20,7 +21,6 @@ import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.manga.interactor.GetLibraryManga /** * Presenter of [StatsController]. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt index 427f418ee6..bba1a44ae3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsController.kt @@ -32,7 +32,6 @@ import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.databinding.StatsDetailsChartBinding import eu.kanade.tachiyomi.databinding.StatsDetailsControllerBinding 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.controller.BaseCoroutineController import eu.kanade.tachiyomi.ui.library.FilteredLibraryController @@ -60,7 +59,8 @@ import eu.kanade.tachiyomi.util.view.setOnQueryTextChangeListener import eu.kanade.tachiyomi.util.view.withFadeTransaction import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import java.util.* +import java.util.Calendar +import java.util.Locale class StatsDetailsController : BaseCoroutineController(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt index 4426f2bda1..5f41b95a4e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/details/StatsDetailsPresenter.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.more.stats.details import android.graphics.drawable.Drawable import android.text.format.DateUtils import androidx.annotation.DrawableRes +import dev.yokai.domain.manga.interactor.GetLibraryManga import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category @@ -18,7 +19,6 @@ import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager 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.more.stats.StatsHelper import eu.kanade.tachiyomi.util.isLocal @@ -32,9 +32,9 @@ import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.manga.interactor.GetLibraryManga -import java.util.* -import java.util.concurrent.* +import java.util.Calendar +import java.util.Locale +import java.util.concurrent.TimeUnit import kotlin.math.roundToInt class StatsDetailsPresenter( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index bb86c1089c..8e43856f43 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -75,6 +75,9 @@ import com.google.android.material.snackbar.Snackbar import com.google.android.material.transition.platform.MaterialContainerTransform import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback 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.R import eu.kanade.tachiyomi.core.preference.toggle @@ -158,9 +161,6 @@ import kotlinx.coroutines.flow.sample import kotlinx.coroutines.launch import kotlinx.coroutines.withContext 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.text.DecimalFormat import java.text.DecimalFormatSymbols diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt index 2a93e5bc3d..85b7a645ae 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt @@ -9,6 +9,9 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import co.touchlab.kermit.Logger 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.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -73,11 +76,8 @@ import rx.schedulers.Schedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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.concurrent.* +import java.util.concurrent.CancellationException /** * Presenter used by the activity to perform background operations. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt index 1c2eaf4ad5..c48950eb74 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderPageImageView.kt @@ -29,6 +29,7 @@ import com.davemorrissey.labs.subscaleview.ImageSource import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView.SCALE_TYPE_CENTER_INSIDE 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.customDecoder import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig @@ -38,7 +39,6 @@ import eu.kanade.tachiyomi.util.system.GLUtil import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.animatorDurationScale import okio.BufferedSource -import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour /** * A wrapper view for showing page image. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressIndicator.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressIndicator.kt index 19e01b2d33..bf8a525342 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressIndicator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressIndicator.kt @@ -17,8 +17,8 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.platform.AbstractComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.core.view.isVisible -import yokai.presentation.component.CombinedCircularProgressIndicator -import yokai.presentation.theme.YokaiTheme +import dev.yokai.presentation.component.CombinedCircularProgressIndicator +import dev.yokai.presentation.theme.YokaiTheme /** * A custom progress bar that always rotates while being determinate. By always rotating we give diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt index 9c56531f49..c383e71700 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt @@ -1,6 +1,8 @@ package eu.kanade.tachiyomi.ui.reader.viewer.pager 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.ui.reader.settings.PageLayout import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig @@ -10,14 +12,13 @@ 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.LNavigation import eu.kanade.tachiyomi.ui.reader.viewer.navigation.RightAndLeftNavigation +import eu.kanade.tachiyomi.util.system.DeviceUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.ui.settings.ReaderPreferences -import yokai.domain.ui.settings.ReaderPreferences.CutoutBehaviour /** * Configuration used by pager viewers. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt index f234446a44..fe4df22dd4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerTransitionHolder.kt @@ -12,6 +12,7 @@ import androidx.appcompat.widget.AppCompatTextView import androidx.compose.material3.CircularProgressIndicator import androidx.compose.ui.platform.ComposeView import androidx.core.view.updatePaddingRelative +import dev.yokai.presentation.theme.YokaiTheme import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter @@ -23,7 +24,6 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.MainScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch -import yokai.presentation.theme.YokaiTheme /** * View of the ViewPager that contains a chapter transition. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt index c508a1c506..04bcef632a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonTransitionHolder.kt @@ -11,6 +11,7 @@ import androidx.compose.material3.CircularProgressIndicator import androidx.compose.ui.platform.ComposeView import androidx.core.view.isNotEmpty import androidx.core.view.isVisible +import dev.yokai.presentation.theme.YokaiTheme import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter @@ -20,7 +21,6 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.MainScope import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch -import yokai.presentation.theme.YokaiTheme /** * Holder of the webtoon viewer that contains a chapter transition. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt index 1b31dc9505..a3c07408c9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt @@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.ui.recents import android.view.View 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.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.data.database.models.Chapter @@ -14,12 +16,10 @@ import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.injectLazy -import yokai.domain.recents.RecentsPreferences -import yokai.domain.ui.UiPreferences import java.text.DecimalFormat import java.text.DecimalFormatSymbols import java.text.SimpleDateFormat -import java.util.* +import java.util.Locale class RecentMangaAdapter(val delegate: RecentsInterface) : BaseChapterAdapter>(delegate) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt index 7fb00484f7..c00a4f8277 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt @@ -1,5 +1,8 @@ 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.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter @@ -34,12 +37,12 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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.util.* -import java.util.concurrent.* +import java.util.Calendar +import java.util.Date +import java.util.Locale +import java.util.TreeMap +import java.util.concurrent.TimeUnit import kotlin.math.abs import kotlin.math.roundToInt diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsComposeController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsComposeController.kt index 9912f988fe..95ad8ef61e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsComposeController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsComposeController.kt @@ -2,11 +2,11 @@ package eu.kanade.tachiyomi.ui.setting import androidx.compose.runtime.Composable 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.util.compose.LocalAlertDialog import eu.kanade.tachiyomi.util.compose.LocalBackPress -import yokai.domain.ComposableAlertDialog -import yokai.presentation.settings.ComposableSettings abstract class SettingsComposeController: BaseComposeController(), SettingsControllerInterface { override fun getTitle(): String? = __getTitle() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLegacyController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLegacyController.kt index 0bc0b95ad9..f015a72b69 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLegacyController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLegacyController.kt @@ -16,6 +16,7 @@ import androidx.preference.PreferenceGroup import androidx.preference.PreferenceScreen import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeType +import dev.yokai.domain.base.BasePreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.changesIn @@ -29,7 +30,6 @@ import eu.kanade.tachiyomi.util.view.scrollViewWith import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset import kotlinx.coroutines.MainScope import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences import java.util.* abstract class SettingsLegacyController : PreferenceController(), SettingsControllerInterface, BackHandlerControllerInterface, BaseControllerPreferenceControllerCommonInterface { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt index aea22e49d9..55b8d93f23 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt @@ -16,6 +16,8 @@ import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceScreen import co.touchlab.kermit.Logger 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.R import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -27,7 +29,6 @@ import eu.kanade.tachiyomi.data.preference.PreferenceKeys import eu.kanade.tachiyomi.data.preference.changesIn import eu.kanade.tachiyomi.extension.ShizukuInstaller 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_ADGUARD import eu.kanade.tachiyomi.network.PREF_DOH_ALIDNS @@ -77,14 +78,11 @@ import rikka.sui.Sui import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences.ExtensionInstaller -import yokai.domain.extension.interactor.TrustExtension import java.io.File class SettingsAdvancedController : SettingsLegacyController() { private val network: NetworkHelper by injectLazy() - private val networkPreferences: NetworkPreferences by injectLazy() private val db: DatabaseHelper by injectLazy() @@ -280,7 +278,7 @@ class SettingsAdvancedController : SettingsLegacyController() { } } editTextPreference(activity) { - bindTo(networkPreferences.defaultUserAgent()) + bindTo(preferences.defaultUserAgent()) titleRes = R.string.user_agent_string onChange { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsBrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsBrowseController.kt index 7fe8ecb483..79afd510ce 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsBrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsBrowseController.kt @@ -6,6 +6,8 @@ import android.os.Build import android.provider.Settings import androidx.preference.PreferenceScreen 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.R import eu.kanade.tachiyomi.data.notification.Notifications @@ -33,8 +35,6 @@ import eu.kanade.tachiyomi.util.lang.addBetaTag import eu.kanade.tachiyomi.util.view.snack import eu.kanade.tachiyomi.util.view.withFadeTransaction import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences.ExtensionInstaller -import yokai.presentation.extension.repo.ExtensionRepoController class SettingsBrowseController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDataController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDataController.kt index f0c051cd86..8450c664bd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDataController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDataController.kt @@ -1,8 +1,8 @@ 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 yokai.presentation.settings.ComposableSettings -import yokai.presentation.settings.screen.SettingsDataScreen class SettingsDataController : SettingsComposeController() { override fun getComposableSettings(): ComposableSettings = SettingsDataScreen diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDownloadController.kt index 8bc8edbea3..5c82542fc6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsDownloadController.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.setting.controllers import android.content.Intent import androidx.preference.PreferenceScreen import com.bluelinelabs.conductor.Controller +import dev.yokai.domain.download.DownloadPreferences import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category @@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.ui.setting.triStateListPreference import eu.kanade.tachiyomi.util.lang.addBetaTag import eu.kanade.tachiyomi.util.view.withFadeTransaction import uy.kohesive.injekt.injectLazy -import yokai.domain.download.DownloadPreferences import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsDownloadController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsGeneralController.kt index a68f8f3ef3..76e8aefd71 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsGeneralController.kt @@ -9,6 +9,7 @@ import android.view.View import androidx.appcompat.app.AppCompatDelegate import androidx.core.os.LocaleListCompat import androidx.preference.PreferenceScreen +import dev.yokai.domain.base.BasePreferences import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.updater.AppDownloadInstallJob @@ -29,8 +30,7 @@ import eu.kanade.tachiyomi.ui.setting.titleRes import eu.kanade.tachiyomi.util.lang.addBetaTag import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.system.systemLangContext -import yokai.domain.base.BasePreferences -import java.util.* +import java.util.Locale import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsGeneralController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsLibraryController.kt index f8f0107387..56750540f3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsLibraryController.kt @@ -1,18 +1,12 @@ package eu.kanade.tachiyomi.ui.setting.controllers import androidx.preference.PreferenceScreen +import dev.yokai.domain.manga.interactor.GetLibraryManga import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.library.LibraryUpdateJob -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.data.preference.* import eu.kanade.tachiyomi.ui.category.CategoryController import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.ui.library.display.TabbedLibraryDisplaySheet @@ -36,7 +30,6 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import yokai.domain.manga.interactor.GetLibraryManga import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsLibraryController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsReaderController.kt index c03b434d07..f571862d83 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsReaderController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsReaderController.kt @@ -3,6 +3,9 @@ package eu.kanade.tachiyomi.ui.setting.controllers import android.content.ComponentName import android.content.Intent 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.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.changesIn @@ -30,9 +33,6 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.isTablet import eu.kanade.tachiyomi.util.view.activityBinding 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 class SettingsReaderController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt index d60a938d20..f9798ea8f8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/legacy/SettingsDataLegacyController.kt @@ -14,6 +14,8 @@ import androidx.core.net.toUri import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceScreen 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.data.backup.BackupFileValidator import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -45,8 +47,6 @@ import eu.kanade.tachiyomi.util.system.withUIContext import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.injectLazy -import yokai.domain.storage.StorageManager -import yokai.domain.storage.StoragePreferences @Deprecated("Migrating to compose") class SettingsDataLegacyController : SettingsLegacyController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt index 6ae7b0be1f..21d732ce2b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/BrowseController.kt @@ -23,6 +23,9 @@ import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeType import com.google.android.material.bottomsheet.BottomSheetBehavior 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.items.IFlexible import eu.kanade.tachiyomi.R @@ -68,10 +71,8 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.parcelize.Parcelize import uy.kohesive.injekt.injectLazy -import yokai.domain.base.BasePreferences -import yokai.domain.base.BasePreferences.ExtensionInstaller -import yokai.presentation.extension.repo.ExtensionRepoController -import java.util.* +import java.util.Date +import java.util.Locale import kotlin.math.max /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt index 79aa56c742..8571e675a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/SourceHolder.kt @@ -7,7 +7,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.SourceItemBinding import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.icon -import eu.kanade.tachiyomi.source.includeLangInName import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.view.compatToolTipText diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt index b11d1fe133..f99e815b5a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.source.browse import co.touchlab.kermit.Logger +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -39,7 +40,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import yokai.domain.ui.UiPreferences /** * Presenter of [BrowseSourceController]. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt index fe7a50c216..98c9a5c94d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/globalsearch/GlobalSearchCardAdapter.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.ui.source.globalsearch +import dev.yokai.domain.ui.UiPreferences import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import uy.kohesive.injekt.injectLazy -import yokai.domain.ui.UiPreferences /** * Adapter that holds the manga items from search results. diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/JsoupExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/JsoupExtensions.kt similarity index 100% rename from source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/JsoupExtensions.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/JsoupExtensions.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt index 3e6292406e..33df08f29d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.util.chapter import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.models.originalTitle /** * -R> = regex conversion. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt b/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt index d9590305dd..bd0c944828 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.staticCompositionLocalOf -import yokai.domain.ComposableAlertDialog +import dev.yokai.domain.ComposableAlertDialog val ProvidableCompositionLocal.currentOrThrow @Composable diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index b6f85365cb..621f3f3ab0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -17,11 +17,14 @@ import android.net.wifi.WifiManager import android.os.Build import android.os.PowerManager import android.provider.Settings +import android.util.TypedValue import android.view.View +import android.widget.Toast import androidx.annotation.AttrRes import androidx.annotation.ColorInt import androidx.annotation.ColorRes import androidx.annotation.DrawableRes +import androidx.annotation.StringRes import androidx.appcompat.app.AppCompatDelegate import androidx.browser.customtabs.CustomTabColorSchemeParams import androidx.browser.customtabs.CustomTabsIntent @@ -51,6 +54,26 @@ import kotlin.math.max 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. * @@ -102,6 +125,30 @@ fun Context.contextCompatDrawable(@DrawableRes resource: Int): Drawable? { 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 */ fun Float.dpToPxEnd(resources: Resources): Float { return this * resources.displayMetrics.density * if (resources.isLTR) 1 else -1 diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/KermitExtensions.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/KermitExtensions.kt diff --git a/core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt similarity index 94% rename from core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt index a4909a77ba..bba89d1d8e 100644 --- a/core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt @@ -1,18 +1,17 @@ -package yokai.util.lang +package eu.kanade.tachiyomi.util.system import kotlinx.coroutines.CancellableContinuation +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.launch import kotlinx.coroutines.suspendCancellableCoroutine import rx.Emitter import rx.Observable import rx.Subscriber import rx.Subscription -import kotlin.coroutines.cancellation.CancellationException import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException @@ -22,7 +21,6 @@ import kotlin.coroutines.resumeWithException suspend fun Observable.awaitSingle(): T = single().awaitOne() -@OptIn(InternalCoroutinesApi::class) private suspend fun Observable.awaitOne(): T = suspendCancellableCoroutine { cont -> cont.unsubscribeOnCancellation( subscribe( diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt similarity index 100% rename from core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt rename to app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt index 5ddb330b16..4abbe9a1f5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt @@ -9,12 +9,12 @@ import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.StaggeredGridLayoutManager +import dev.yokai.domain.ui.UiPreferences import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.library.LibraryItem import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.pxToDp import eu.kanade.tachiyomi.util.system.rootWindowInsetsCompat -import yokai.domain.ui.UiPreferences import kotlin.math.abs import kotlin.math.max import kotlin.math.pow diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt index e1847819ea..bf87207972 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/BaseTabbedScrollView.kt @@ -4,15 +4,15 @@ import android.content.Context import android.util.AttributeSet import androidx.core.widget.NestedScrollView 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.ui.library.LibraryController import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.recents.RecentsController import eu.kanade.tachiyomi.util.view.RecyclerWindowInsetsListener import uy.kohesive.injekt.injectLazy -import yokai.domain.recents.RecentsPreferences -import yokai.domain.ui.UiPreferences -import yokai.domain.ui.settings.ReaderPreferences abstract class BaseTabbedScrollView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : NestedScrollView(context, attrs) { diff --git a/app/src/main/java/yokai/core/di/DomainModule.kt b/app/src/main/java/yokai/core/di/DomainModule.kt deleted file mode 100644 index 9fe30c7eaf..0000000000 --- a/app/src/main/java/yokai/core/di/DomainModule.kt +++ /dev/null @@ -1,56 +0,0 @@ -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 { ExtensionRepoRepositoryImpl(get()) } - addFactory { CreateExtensionRepo(get()) } - addFactory { DeleteExtensionRepo(get()) } - addFactory { GetExtensionRepo(get()) } - addFactory { GetExtensionRepoCount(get()) } - addFactory { ReplaceExtensionRepo(get()) } - addFactory { UpdateExtensionRepo(get(), get()) } - - addSingletonFactory { CustomMangaRepositoryImpl(get()) } - addFactory { CreateCustomManga(get()) } - addFactory { DeleteCustomManga(get()) } - addFactory { GetCustomManga(get()) } - addFactory { RelinkCustomManga(get()) } - - addSingletonFactory { MangaRepositoryImpl(get()) } - addFactory { GetLibraryManga(get()) } - - addSingletonFactory { ChapterRepositoryImpl(get()) } - addFactory { GetAvailableScanlators(get()) } - addFactory { GetChapters(get()) } - } -} diff --git a/app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt b/app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt deleted file mode 100644 index ce10dbb934..0000000000 --- a/app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt +++ /dev/null @@ -1,31 +0,0 @@ -package yokai.core.migration.migrations - -import androidx.preference.PreferenceManager -import co.touchlab.kermit.Logger -import eu.kanade.tachiyomi.App -import eu.kanade.tachiyomi.network.NetworkPreferences -import yokai.core.migration.Migration -import yokai.core.migration.MigrationContext - -class NetworkPrefsMigration : Migration { - override val version: Float = 137f - - override suspend fun invoke(migrationContext: MigrationContext): Boolean { - val context: App = migrationContext.get() ?: return false - Logger.d { "Got context" } - val preferences: NetworkPreferences = migrationContext.get() ?: return false - Logger.d { "Got networkPref" } - val prefs = PreferenceManager.getDefaultSharedPreferences(context) - Logger.d { "Got sharedPref" } - - val dohProvider = prefs.getInt("doh_provider", -1) - Logger.d { "Got dohProvider" } - if (dohProvider > -1) { - Logger.d { "Migrating" } - preferences.dohProvider().set(dohProvider) - Logger.d { "Migrated" } - } - Logger.d { "Done" } - return true - } -} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c05e49c91b..060454eb11 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1116,6 +1116,12 @@ No file picker app found Failed to acquire persistent folder access. The app may behave unexpectedly. + + Failed to bypass Cloudflare + Please update the WebView app for better compatibility + + WebView is required for Tachiyomi + See your recently updated library entries Widget not available when app lock is enabled diff --git a/i18n/src/androidMain/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml similarity index 99% rename from i18n/src/androidMain/res/xml/locales_config.xml rename to app/src/main/res/xml/locales_config.xml index 7d6a19914d..6f3b6b49c1 100644 --- a/i18n/src/androidMain/res/xml/locales_config.xml +++ b/app/src/main/res/xml/locales_config.xml @@ -53,4 +53,4 @@ - + \ No newline at end of file diff --git a/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt b/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt index e955c886ca..d22a9e55de 100644 --- a/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt +++ b/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt @@ -1,4 +1,4 @@ -package yokai.core.migration +package dev.yokai.core.migration import io.mockk.slot import io.mockk.spyk diff --git a/build.gradle.kts b/build.gradle.kts index 3563bb292f..d97f392324 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,3 @@ -import com.android.build.gradle.BaseExtension -import com.android.build.gradle.BasePlugin -import org.gradle.api.tasks.testing.logging.TestLogEvent -import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile import java.util.* plugins { @@ -19,7 +15,6 @@ buildscript { classpath(kotlinx.serialization.gradle) classpath(libs.firebase.crashlytics.gradle) classpath(libs.sqldelight.gradle) - classpath(libs.moko.generator) } repositories { gradlePluginPortal() @@ -28,46 +23,6 @@ buildscript { } } -subprojects { - tasks.withType { - kotlinOptions { - jvmTarget = JavaVersion.VERSION_17.toString() - } - } - - tasks.withType { - useJUnitPlatform() - testLogging { - events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED) - } - } - - plugins.withType { - configure { - compileSdkVersion(AndroidConfig.compileSdk) - ndkVersion = AndroidConfig.ndk - - defaultConfig { - minSdk = AndroidConfig.minSdk - targetSdk = AndroidConfig.targetSdk - ndk { - version = AndroidConfig.ndk - } - } - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - isCoreLibraryDesugaringEnabled = true - } - - dependencies { - add("coreLibraryDesugaring", libs.desugar) - } - } - } -} - tasks.named("dependencyUpdates", com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask::class.java).configure { rejectVersionIf { val stableKeyword = listOf("RELEASE", "FINAL", "GA").any { candidate.version.uppercase(Locale.ROOT).contains(it) } diff --git a/buildSrc/src/main/kotlin/LocalesConfigPlugin.kt b/buildSrc/src/main/kotlin/LocalesConfigPlugin.kt deleted file mode 100644 index 9e5976779a..0000000000 --- a/buildSrc/src/main/kotlin/LocalesConfigPlugin.kt +++ /dev/null @@ -1,42 +0,0 @@ -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.tasks.TaskProvider -import org.gradle.kotlin.dsl.TaskContainerScope - -fun TaskContainerScope.registerLocalesConfigTask(project: Project): TaskProvider { - return with(project) { - register("generateLocalesConfig") { - val emptyResourcesElement = "\\s*|".toRegex() - val valuesPrefix = "values-?".toRegex() - - println(projectDir) - val languages = fileTree("$projectDir/src/main/res/") - .matching { - include("**/strings.xml") - } - .filterNot { - it.readText().contains(emptyResourcesElement) - } - .map { it.parentFile.name } - .sorted() - .joinToString(separator = "\n") { - val language = it - .replace(valuesPrefix, "") - .replace("-r", "-") - .takeIf(String::isNotBlank) ?: "en" - " " - } - - val content = """ - - -$languages - - """.trimIndent() - - val localeFile = file("$projectDir/src/main/res/xml/locales_config.xml") - localeFile.parentFile.mkdirs() - localeFile.writeText(content) - } - } -} diff --git a/core/build.gradle.kts b/core/build.gradle.kts deleted file mode 100644 index 3eda79fb66..0000000000 --- a/core/build.gradle.kts +++ /dev/null @@ -1,49 +0,0 @@ -plugins { - kotlin("multiplatform") - kotlin("plugin.serialization") - id("com.android.library") -} - -kotlin { - androidTarget() - sourceSets { - val commonMain by getting { - dependencies { - implementation(projects.i18n) - api(libs.bundles.logging) - } - } - val androidMain by getting { - dependencies { - api(libs.okhttp) - api(libs.okhttp.logging.interceptor) - api(libs.okhttp.dnsoverhttps) - api(libs.okhttp.brotli) - api(libs.okio) - - api(androidx.preference) - api(libs.rxjava) - api(project.dependencies.enforcedPlatform(kotlinx.coroutines.bom)) - api(kotlinx.coroutines.core) - api(kotlinx.serialization.json) - api(kotlinx.serialization.json.okio) - - implementation(libs.quickjs.android) - } - } - } -} - -android { - namespace = "yokai.core" -} - -tasks { - withType { - kotlinOptions.freeCompilerArgs += listOf( - "-Xcontext-receivers", - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-opt-in=kotlinx.serialization.ExperimentalSerializationApi", - ) - } -} diff --git a/core/src/androidMain/AndroidManifest.xml b/core/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 8072ee00db..0000000000 --- a/core/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt deleted file mode 100644 index 2fc2ef21d4..0000000000 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt +++ /dev/null @@ -1,28 +0,0 @@ -package eu.kanade.tachiyomi.util.system - -import android.content.res.Resources -import android.util.TypedValue - -/** - * 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) diff --git a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt deleted file mode 100644 index 1930e6eae7..0000000000 --- a/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt +++ /dev/null @@ -1,37 +0,0 @@ -package eu.kanade.tachiyomi.util.system - -import android.content.Context -import android.widget.Toast -import androidx.annotation.StringRes -import dev.icerock.moko.resources.StringResource -import yokai.util.lang.getMString - -/** - * 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 resource the text resource. - * @param duration the duration of the toast. Defaults to short. - */ -fun Context.toast(resource: StringResource, duration: Int = Toast.LENGTH_SHORT) { - toast(getMString(resource), duration) -} - -/** - * 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() -} diff --git a/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt b/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt deleted file mode 100644 index 4d431d9f6c..0000000000 --- a/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt +++ /dev/null @@ -1,8 +0,0 @@ -package yokai.util.lang - -import android.content.Context -import dev.icerock.moko.resources.StringResource -import dev.icerock.moko.resources.desc.Resource -import dev.icerock.moko.resources.desc.StringDesc - -fun Context.getMString(stringRes: StringResource): String = StringDesc.Resource(stringRes).toString(this) diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt deleted file mode 100644 index 8a1023b082..0000000000 --- a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt +++ /dev/null @@ -1,10 +0,0 @@ -package eu.kanade.tachiyomi.network - -import eu.kanade.tachiyomi.core.preference.PreferenceStore - -class NetworkPreferences(private val preferenceStore: PreferenceStore) { - - fun dohProvider() = preferenceStore.getInt("doh_provider", -1) - - fun defaultUserAgent() = preferenceStore.getString("default_user_agent", NetworkHelper.DEFAULT_USER_AGENT) -} diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts deleted file mode 100644 index c35a38c744..0000000000 --- a/domain/build.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "yokai.domain" -} - -dependencies { -} diff --git a/gradle.properties b/gradle.properties index a3c529f420..be89a213a4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ # AndroidX support android.enableJetifier=true android.useAndroidX=true -org.gradle.jvmargs=-Xmx4G +org.gradle.jvmargs=-Xmx2048M org.gradle.caching=true android.nonTransitiveRClass=false android.nonFinalResIds=false diff --git a/gradle/kotlinx.versions.toml b/gradle/kotlinx.versions.toml index 8c4afaf538..b6ef6bf683 100644 --- a/gradle/kotlinx.versions.toml +++ b/gradle/kotlinx.versions.toml @@ -1,13 +1,13 @@ [versions] kotlin = "1.9.24" +coroutines = "1.8.0" serialization = "1.6.2" xml_serialization = "0.86.3" [libraries] -coroutines-bom = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-bom", version = "1.8.0" } -coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android" } -coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core" } -coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test" } +coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } +coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } serialization-gradle = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization" } @@ -22,7 +22,6 @@ serialization = [ "serialization-gradle", "serialization-json", "serialization-json-okio", "serialization-protobuf", "serialization-xml", "serialization-xml-core" ] -coroutines = [ "coroutines-android", "coroutines-core" ] [plugins] android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9335bac840..6ef3370c25 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,6 @@ chucker = "3.5.2" coil3 = "3.0.0-alpha06" flexible-adapter = "c8013533" fast_adapter = "5.6.0" -moko = "0.24.0" nucleus = "3.0.0" okhttp = "5.0.0-alpha.14" shizuku = "12.1.0" @@ -60,10 +59,6 @@ junit-android = { module = "androidx.test.ext:junit", version = "1.1.5" } junrar = { module = "com.github.junrar:junrar", version = "7.5.5" } loading-button = { module = "br.com.simplepass:loading-button-android", version = "2.2.0" } mockk = { module = "io.mockk:mockk", version = "1.13.11" } - -moko-resources = { module = "dev.icerock.moko:resources", version.ref = "moko" } -moko-generator = { module = "dev.icerock.moko:resources-generator", version.ref = "moko" } - okio = { module = "com.squareup.okio:okio", version = "3.9.0" } okhttp-brotli = { module = "com.squareup.okhttp3:okhttp-brotli", version.ref = "okhttp" } okhttp-dnsoverhttps = { module = "com.squareup.okhttp3:okhttp-dnsoverhttps", version.ref = "okhttp" } diff --git a/i18n/.gitignore b/i18n/.gitignore deleted file mode 100644 index ca18adab9b..0000000000 --- a/i18n/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Generated -#locales_config.xml diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts deleted file mode 100644 index 7d719bdf4d..0000000000 --- a/i18n/build.gradle.kts +++ /dev/null @@ -1,44 +0,0 @@ -plugins { - kotlin("multiplatform") - id("com.android.library") - id("dev.icerock.mobile.multiplatform-resources") -} - -kotlin { - androidTarget() - - applyDefaultHierarchyTemplate() - - sourceSets { - val commonMain by getting { - dependencies { - api(libs.moko.resources) - } - } - val androidMain by getting { - dependsOn(commonMain) - } - } -} - -android { - namespace = "yokai.i18n" -} - -multiplatformResources { - resourcesPackage.set("yokai.i18n") -} - -tasks { - // FIXME: Migrate fully to MR -// val localesConfigTask = registerLocalesConfigTask(project) -// preBuild { -// dependsOn(localesConfigTask) -// } - - withType { - kotlinOptions.freeCompilerArgs += listOf( - "-Xexpect-actual-classes", - ) - } -} diff --git a/i18n/src/androidMain/AndroidManifest.xml b/i18n/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 8072ee00db..0000000000 --- a/i18n/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml deleted file mode 100644 index 28f17080a6..0000000000 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Failed to bypass Cloudflare - - Please update the WebView app for better compatibility - WebView is required for Tachiyomi - diff --git a/presentation-core/build.gradle.kts b/presentation-core/build.gradle.kts deleted file mode 100644 index 7c080dcdb5..0000000000 --- a/presentation-core/build.gradle.kts +++ /dev/null @@ -1,17 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "yokai.presentation.core" - - defaultConfig { - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } -} - -dependencies { - -} diff --git a/presentation-core/consumer-rules.pro b/presentation-core/consumer-rules.pro deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/presentation-core/proguard-rules.pro b/presentation-core/proguard-rules.pro deleted file mode 100644 index f1b424510d..0000000000 --- a/presentation-core/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/presentation-widget/build.gradle.kts b/presentation-widget/build.gradle.kts deleted file mode 100644 index b89a812723..0000000000 --- a/presentation-widget/build.gradle.kts +++ /dev/null @@ -1,31 +0,0 @@ -plugins { - id("com.android.library") - id("org.jetbrains.kotlin.android") -} - -android { - namespace = "yokai.presentation.widget" - - defaultConfig { - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - consumerProguardFiles("consumer-rules.pro") - } - - buildFeatures { - compose = true - } - - composeOptions { - kotlinCompilerExtensionVersion = compose.versions.compose.compiler.get() - } -} - -dependencies { - implementation(projects.core) - implementation(projects.domain) - implementation(projects.presentationCore) - - implementation(androidx.glance.appwidget) - - implementation(libs.coil3) -} diff --git a/presentation-widget/consumer-rules.pro b/presentation-widget/consumer-rules.pro deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/presentation-widget/proguard-rules.pro b/presentation-widget/proguard-rules.pro deleted file mode 100644 index f1b424510d..0000000000 --- a/presentation-widget/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/TachiyomiWidgetManager.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/TachiyomiWidgetManager.kt deleted file mode 100644 index a37fa78e07..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/TachiyomiWidgetManager.kt +++ /dev/null @@ -1,15 +0,0 @@ -package eu.kanade.tachiyomi.appwidget - -import android.content.Context -import androidx.glance.appwidget.GlanceAppWidgetManager -import eu.kanade.tachiyomi.appwidget.UpdatesGridGlanceWidget - -class TachiyomiWidgetManager { - - suspend fun Context.init() { - val manager = GlanceAppWidgetManager(this) - if (manager.getGlanceIds(UpdatesGridGlanceWidget::class.java).isNotEmpty()) { - UpdatesGridGlanceWidget().loadData() - } - } -} diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceReceiver.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceReceiver.kt deleted file mode 100644 index 4423aeebf5..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceReceiver.kt +++ /dev/null @@ -1,8 +0,0 @@ -package eu.kanade.tachiyomi.appwidget - -import androidx.glance.appwidget.GlanceAppWidget -import androidx.glance.appwidget.GlanceAppWidgetReceiver - -class UpdatesGridGlanceReceiver : GlanceAppWidgetReceiver() { - override val glanceAppWidget: GlanceAppWidget = UpdatesGridGlanceWidget().apply { loadData() } -} diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt deleted file mode 100644 index dda4a6a6d6..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt +++ /dev/null @@ -1,128 +0,0 @@ -package eu.kanade.tachiyomi.appwidget - -import android.app.Application -import android.content.Context -import android.graphics.Bitmap -import android.os.Build -import androidx.core.graphics.drawable.toBitmap -import androidx.glance.GlanceId -import androidx.glance.GlanceModifier -import androidx.glance.ImageProvider -import androidx.glance.appwidget.GlanceAppWidget -import androidx.glance.appwidget.GlanceAppWidgetManager -import androidx.glance.appwidget.SizeMode -import androidx.glance.appwidget.appWidgetBackground -import androidx.glance.appwidget.provideContent -import androidx.glance.appwidget.updateAll -import androidx.glance.background -import androidx.glance.layout.fillMaxSize -import coil3.executeBlocking -import coil3.imageLoader -import coil3.request.CachePolicy -import coil3.request.ImageRequest -import coil3.request.transformations -import coil3.size.Precision -import coil3.size.Scale -import coil3.transform.RoundedCornersTransformation -import eu.kanade.tachiyomi.appwidget.components.CoverHeight -import eu.kanade.tachiyomi.appwidget.components.CoverWidth -import eu.kanade.tachiyomi.appwidget.components.LockedWidget -import eu.kanade.tachiyomi.appwidget.components.UpdatesWidget -import eu.kanade.tachiyomi.appwidget.util.appWidgetBackgroundRadius -import eu.kanade.tachiyomi.appwidget.util.calculateRowAndColumnCount -import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import eu.kanade.tachiyomi.ui.recents.RecentsPresenter -import eu.kanade.tachiyomi.util.system.dpToPx -import eu.kanade.tachiyomi.util.system.launchIO -import kotlinx.coroutines.MainScope -import uy.kohesive.injekt.injectLazy -import java.util.* -import kotlin.math.min - -class UpdatesGridGlanceWidget : GlanceAppWidget() { - private val app: Application by injectLazy() - private val preferences: PreferencesHelper by injectLazy() - - private val coroutineScope = MainScope() - - private var data: List>? = null - - override val sizeMode = SizeMode.Exact - override suspend fun provideGlance(context: Context, id: GlanceId) { - provideContent { - // If app lock enabled, don't do anything - if (preferences.useBiometrics().get()) { - LockedWidget() - } else { - UpdatesWidget(data) - } - } - } - - fun loadData(list: List>? = null) { - coroutineScope.launchIO { - // Don't show anything when lock is active - if (preferences.useBiometrics().get()) { - updateAll(app) - return@launchIO - } - - val manager = GlanceAppWidgetManager(app) - val ids = manager.getGlanceIds(this@UpdatesGridGlanceWidget::class.java) - if (ids.isEmpty()) return@launchIO - - val (rowCount, columnCount) = ids - .flatMap { manager.getAppWidgetSizes(it) } - .maxBy { it.height.value * it.width.value } - .calculateRowAndColumnCount() - val processList = list ?: RecentsPresenter.getRecentManga(customAmount = min(50, rowCount * columnCount)) - - data = prepareList(processList, rowCount * columnCount) - ids.forEach { update(app, it) } - } - } - - private fun prepareList(processList: List>, take: Int): List> { - // Resize to cover size - val widthPx = CoverWidth.value.toInt().dpToPx - val heightPx = CoverHeight.value.toInt().dpToPx - val roundPx = app.resources.getDimension(R.dimen.appwidget_inner_radius) - return processList -// .distinctBy { it.first.id } - .sortedByDescending { it.second } - .take(take) - .map { it.first } - .map { updatesView -> - val request = ImageRequest.Builder(app) - .data(updatesView) - .memoryCachePolicy(CachePolicy.DISABLED) - .precision(Precision.EXACT) - .size(widthPx, heightPx) - .scale(Scale.FILL) - .let { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { - it.transformations(RoundedCornersTransformation(roundPx)) - } else { - it // Handled by system - } - } - .build() - Pair(updatesView.id!!, app.imageLoader.executeBlocking(request).image?.asDrawable(app.resources)?.toBitmap()) - } - } - - companion object { - val DateLimit: Calendar - get() = Calendar.getInstance().apply { - time = Date() - add(Calendar.MONTH, -3) - } - } -} - -val ContainerModifier = GlanceModifier - .fillMaxSize() - .background(ImageProvider(R.drawable.appwidget_background)) - .appWidgetBackground() - .appWidgetBackgroundRadius() diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/LockedWidget.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/LockedWidget.kt deleted file mode 100644 index 8911445446..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/LockedWidget.kt +++ /dev/null @@ -1,44 +0,0 @@ -package eu.kanade.tachiyomi.appwidget.components - -import android.content.Intent -import androidx.compose.runtime.Composable -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.glance.GlanceModifier -import androidx.glance.LocalContext -import androidx.glance.action.clickable -import androidx.glance.appwidget.action.actionStartActivity -import androidx.glance.layout.Alignment -import androidx.glance.layout.Box -import androidx.glance.layout.padding -import androidx.glance.text.Text -import androidx.glance.text.TextAlign -import androidx.glance.text.TextStyle -import androidx.glance.unit.ColorProvider -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.appwidget.ContainerModifier -import eu.kanade.tachiyomi.appwidget.util.stringResource -import eu.kanade.tachiyomi.ui.main.MainActivity - -@Composable -fun LockedWidget() { - val intent = Intent(LocalContext.current, Class.forName(MainActivity.MAIN_ACTIVITY)).apply { - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - } - Box( - modifier = GlanceModifier - .clickable(actionStartActivity(intent)) - .then(ContainerModifier) - .padding(8.dp), - contentAlignment = Alignment.Center, - ) { - Text( - text = stringResource(R.string.appwidget_unavailable_locked), - style = TextStyle( - color = ColorProvider(R.color.appwidget_on_secondary_container), - fontSize = 12.sp, - textAlign = TextAlign.Center, - ), - ) - } -} diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesMangaCover.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesMangaCover.kt deleted file mode 100644 index a9aa232d08..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesMangaCover.kt +++ /dev/null @@ -1,48 +0,0 @@ -package eu.kanade.tachiyomi.appwidget.components - -import android.graphics.Bitmap -import androidx.compose.runtime.Composable -import androidx.compose.ui.unit.dp -import androidx.glance.GlanceModifier -import androidx.glance.Image -import androidx.glance.ImageProvider -import androidx.glance.layout.Box -import androidx.glance.layout.ContentScale -import androidx.glance.layout.fillMaxSize -import androidx.glance.layout.size -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.appwidget.util.appWidgetInnerRadius - -val CoverWidth = 58.dp -val CoverHeight = 87.dp - -@Composable -fun UpdatesMangaCover( - modifier: GlanceModifier = GlanceModifier, - cover: Bitmap?, -) { - Box( - modifier = modifier - .size(width = CoverWidth, height = CoverHeight) - .appWidgetInnerRadius(), - ) { - if (cover != null) { - Image( - provider = ImageProvider(cover), - contentDescription = null, - modifier = GlanceModifier - .fillMaxSize() - .appWidgetInnerRadius(), - contentScale = ContentScale.Crop, - ) - } else { - // Enjoy placeholder - Image( - provider = ImageProvider(R.drawable.appwidget_cover_error), - contentDescription = null, - modifier = GlanceModifier.fillMaxSize(), - contentScale = ContentScale.Crop, - ) - } - } -} diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesWidget.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesWidget.kt deleted file mode 100644 index e447e47d4e..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesWidget.kt +++ /dev/null @@ -1,74 +0,0 @@ -package eu.kanade.tachiyomi.appwidget.components - -import android.content.Intent -import android.graphics.Bitmap -import androidx.compose.runtime.Composable -import androidx.compose.ui.unit.dp -import androidx.glance.GlanceModifier -import androidx.glance.LocalContext -import androidx.glance.LocalSize -import androidx.glance.action.clickable -import androidx.glance.appwidget.CircularProgressIndicator -import androidx.glance.appwidget.action.actionStartActivity -import androidx.glance.layout.Alignment -import androidx.glance.layout.Box -import androidx.glance.layout.Column -import androidx.glance.layout.Row -import androidx.glance.layout.fillMaxWidth -import androidx.glance.layout.padding -import androidx.glance.text.Text -import eu.kanade.tachiyomi.appwidget.ContainerModifier -import eu.kanade.tachiyomi.appwidget.util.calculateRowAndColumnCount -import eu.kanade.tachiyomi.appwidget.util.stringResource -import eu.kanade.tachiyomi.ui.main.SearchActivity - -@Composable -fun UpdatesWidget(data: List>?) { - val (rowCount, columnCount) = LocalSize.current.calculateRowAndColumnCount() - val clazz = Class.forName("eu.kanade.tachiyomi.ui.main.MainActivity") - val mainIntent = Intent(LocalContext.current, clazz).setAction("eu.kanade.tachiyomi.SHOW_RECENTS") - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) - Column( - modifier = ContainerModifier.clickable(actionStartActivity(mainIntent)), - verticalAlignment = Alignment.CenterVertically, - horizontalAlignment = Alignment.CenterHorizontally, - ) { - if (data == null) { - CircularProgressIndicator() - } else if (data.isEmpty()) { - Text(text = stringResource(R.string.no_recent_read_updated_manga)) - } else { - (0 until rowCount).forEach { i -> - val coverRow = (0 until columnCount).mapNotNull { j -> - data.getOrNull(j + (i * columnCount)) - } - if (coverRow.isNotEmpty()) { - Row( - modifier = GlanceModifier - .padding(vertical = 4.dp) - .fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalAlignment = Alignment.CenterVertically, - ) { - coverRow.forEach { (mangaId, cover) -> - Box( - modifier = GlanceModifier - .padding(horizontal = 3.dp), - contentAlignment = Alignment.Center, - ) { - val intent = SearchActivity.openMangaIntent(LocalContext.current, mangaId, true) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) - // https://issuetracker.google.com/issues/238793260 - .addCategory(mangaId.toString()) - UpdatesMangaCover( - modifier = GlanceModifier.clickable(actionStartActivity(intent)), - cover = cover, - ) - } - } - } - } - } - } - } -} diff --git a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/util/GlanceUtils.kt b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/util/GlanceUtils.kt deleted file mode 100644 index 5f56877211..0000000000 --- a/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/util/GlanceUtils.kt +++ /dev/null @@ -1,43 +0,0 @@ -package eu.kanade.tachiyomi.appwidget.util - -import androidx.annotation.StringRes -import androidx.compose.runtime.Composable -import androidx.compose.ui.unit.DpSize -import androidx.glance.GlanceModifier -import androidx.glance.LocalContext -import androidx.glance.appwidget.cornerRadius -import eu.kanade.tachiyomi.R - -fun GlanceModifier.appWidgetBackgroundRadius(): GlanceModifier { - return this.cornerRadius(R.dimen.appwidget_background_radius) -} - -fun GlanceModifier.appWidgetInnerRadius(): GlanceModifier { - return this.cornerRadius(R.dimen.appwidget_inner_radius) -} - -@Composable -fun stringResource(@StringRes id: Int): String { - return LocalContext.current.getString(id) -} - -/** - * Calculates row-column count. - * - * Row - * Numerator: Container height - container vertical padding - * Denominator: Cover height + cover vertical padding - * - * Column - * Numerator: Container width - container horizontal padding - * Denominator: Cover width + cover horizontal padding - * - * @return pair of row and column count - */ -fun DpSize.calculateRowAndColumnCount(): Pair { - // Hack: Size provided by Glance manager is not reliable so take at least 1 row and 1 column - // Set max to 10 children each direction because of Glance limitation - val rowCount = (height.value / 95).toInt().coerceIn(1, 10) - val columnCount = (width.value / 64).toInt().coerceIn(1, 10) - return Pair(rowCount, columnCount) -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 0be46720cc..c0a5987077 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,13 +27,5 @@ dependencyResolutionManagement { } } -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") - rootProject.name = "Yokai" include(":app") -include(":core") -include(":domain") -include(":i18n") -include(":presentation-core") -include(":presentation-widget") -include(":source-api") diff --git a/source-api/build.gradle.kts b/source-api/build.gradle.kts deleted file mode 100644 index 0cbb0380dc..0000000000 --- a/source-api/build.gradle.kts +++ /dev/null @@ -1,42 +0,0 @@ -plugins { - kotlin("multiplatform") - kotlin("plugin.serialization") - id("com.android.library") -} - -kotlin { - androidTarget() - sourceSets { - val commonMain by getting { - dependencies { - api(kotlinx.serialization.json) - api(libs.injekt.core) - api(libs.rxjava) - api(libs.jsoup) - } - } - val androidMain by getting { - dependencies { - implementation(projects.core) - api(androidx.preference) - - // Workaround for https://youtrack.jetbrains.com/issue/KT-57605 - implementation(kotlinx.coroutines.android) - implementation(project.dependencies.platform(kotlinx.coroutines.bom)) - } - } - } -} -android { - namespace = "eu.kanade.tachiyomi.source" - defaultConfig { - consumerProguardFile("consumer-proguard.pro") - } -} -tasks { - withType { - kotlinOptions.freeCompilerArgs += listOf( - "-Xexpect-actual-classes", - ) - } -} diff --git a/source-api/consumer-proguard.pro b/source-api/consumer-proguard.pro deleted file mode 100644 index aa81da4bfd..0000000000 --- a/source-api/consumer-proguard.pro +++ /dev/null @@ -1,5 +0,0 @@ --keep class eu.kanade.tachiyomi.source.model.** { public protected *; } --keep class eu.kanade.tachiyomi.source.online.** { public protected *; } --keep class eu.kanade.tachiyomi.source.** extends eu.kanade.tachiyomi.source.Source { public protected *; } - --keep,allowoptimization class eu.kanade.tachiyomi.util.JsoupExtensionsKt { public protected *; } diff --git a/source-api/src/androidMain/AndroidManifest.xml b/source-api/src/androidMain/AndroidManifest.xml deleted file mode 100644 index 8072ee00db..0000000000 --- a/source-api/src/androidMain/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt b/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt deleted file mode 100644 index 9a76345cb9..0000000000 --- a/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt +++ /dev/null @@ -1,6 +0,0 @@ -package eu.kanade.tachiyomi.util - -import rx.Observable -import yokai.util.lang.awaitSingle - -actual suspend fun Observable.awaitSingle(): T = awaitSingle() diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt deleted file mode 100644 index c0f8ef8281..0000000000 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt +++ /dev/null @@ -1,52 +0,0 @@ -package eu.kanade.tachiyomi.source.model - -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 - - 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 SMangaImpl() - } - } -} diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt deleted file mode 100644 index 91a7711cce..0000000000 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt +++ /dev/null @@ -1,24 +0,0 @@ -package eu.kanade.tachiyomi.source.model - -class SMangaImpl : SManga { - - override lateinit var url: String - - override lateinit var title: String - - override var artist: String? = null - - override var author: String? = null - - override var description: String? = null - - override var genre: String? = null - - override var status: Int = 0 - - override var thumbnail_url: String? = null - - override var update_strategy: UpdateStrategy = UpdateStrategy.ALWAYS_UPDATE - - override var initialized: Boolean = false -} diff --git a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt deleted file mode 100644 index 5b8420d412..0000000000 --- a/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt +++ /dev/null @@ -1,5 +0,0 @@ -package eu.kanade.tachiyomi.util - -import rx.Observable - -expect suspend fun Observable.awaitSingle(): T