From 2b46f94a5aba38d04bb7085bdc3f4934a7452632 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sun, 16 Jun 2024 18:39:16 +0700 Subject: [PATCH] revert: Revert "Revert "Modularize the app"" This reverts commit f59f2346dc6ae49a1506ed7d26f57cdb2c1294de. --- CHANGELOG.md | 6 +- app/build.gradle.kts | 32 +---- app/proguard-rules.pro | 24 ++-- .../java/dev/yokai/core/di/DomainModule.kt | 56 -------- app/src/main/java/eu/kanade/tachiyomi/App.kt | 14 +- .../storage/preference/PreferenceExtension.kt | 13 ++ .../data/backup/create/BackupCreator.kt | 2 +- .../data/backup/create/BackupCreatorJob.kt | 2 +- .../data/backup/models/BackupManga.kt | 4 +- .../restore/restorers/MangaBackupRestorer.kt | 2 +- .../data/database/models/ChapterImpl.kt | 13 ++ .../tachiyomi/data/database/models/Manga.kt | 51 ++++++- .../tachiyomi/data/download/DownloadCache.kt | 4 +- .../data/download/DownloadManager.kt | 2 +- .../data/download/DownloadProvider.kt | 4 +- .../tachiyomi/data/download/Downloader.kt | 12 +- .../data/library/CustomMangaManager.kt | 20 +-- .../data/library/LibraryUpdateJob.kt | 7 +- .../data/preference/PreferencesHelper.kt | 5 - .../data/updater/AppUpdateChecker.kt | 2 +- .../tachiyomi/extension/ExtensionManager.kt | 7 +- .../tachiyomi/extension/ExtensionUpdateJob.kt | 4 +- .../tachiyomi/extension/api/ExtensionApi.kt | 6 +- .../extension/util/ExtensionInstaller.kt | 2 +- .../extension/util/ExtensionLoader.kt | 2 +- .../eu/kanade/tachiyomi/source/LocalSource.kt | 12 +- .../tachiyomi/source/SourceExtensions.kt | 29 ++++ .../kanade/tachiyomi/source/model/SManga.kt | 100 -------------- .../source/models/SMangaExtensions.kt | 7 + .../tachiyomi/source/online/all/Cubari.kt | 3 +- .../tachiyomi/source/online/all/MangaDex.kt | 3 +- .../source/online/english/FoolSlide.kt | 1 + .../source/online/english/MangaPlus.kt | 1 + .../ui/base/activity/BaseActivity.kt | 2 +- .../base/controller/BaseComposeController.kt | 2 +- .../tachiyomi/ui/crash/CrashActivity.kt | 6 +- .../ui/extension/ExtensionAdapter.kt | 4 +- .../ui/extension/ExtensionBottomSheet.kt | 4 +- .../ui/library/LibraryCategoryAdapter.kt | 4 +- .../tachiyomi/ui/library/LibraryController.kt | 4 +- .../tachiyomi/ui/library/LibraryItem.kt | 2 +- .../tachiyomi/ui/library/LibraryPresenter.kt | 8 +- .../kanade/tachiyomi/ui/main/MainActivity.kt | 22 +-- .../tachiyomi/ui/main/SearchActivity.kt | 2 +- .../ui/manga/MangaDetailsPresenter.kt | 12 +- .../tachiyomi/ui/manga/MangaHeaderHolder.kt | 5 +- .../ui/migration/BaseMigrationPresenter.kt | 2 +- .../manga/design/MigrationSourceHolder.kt | 1 + .../manga/process/MigrationProcessAdapter.kt | 6 +- .../tachiyomi/ui/more/stats/StatsPresenter.kt | 2 +- .../stats/details/StatsDetailsController.kt | 4 +- .../stats/details/StatsDetailsPresenter.kt | 8 +- .../tachiyomi/ui/reader/ReaderActivity.kt | 6 +- .../tachiyomi/ui/reader/ReaderViewModel.kt | 8 +- .../ui/reader/viewer/ReaderPageImageView.kt | 2 +- .../reader/viewer/ReaderProgressIndicator.kt | 4 +- .../ui/reader/viewer/pager/PagerConfig.kt | 5 +- .../viewer/pager/PagerTransitionHolder.kt | 2 +- .../viewer/webtoon/WebtoonTransitionHolder.kt | 2 +- .../ui/recents/RecentMangaAdapter.kt | 6 +- .../tachiyomi/ui/recents/RecentsPresenter.kt | 13 +- .../ui/setting/SettingsComposeController.kt | 4 +- .../ui/setting/SettingsLegacyController.kt | 2 +- .../controllers/SettingsAdvancedController.kt | 8 +- .../controllers/SettingsBrowseController.kt | 4 +- .../controllers/SettingsDataController.kt | 4 +- .../controllers/SettingsDownloadController.kt | 2 +- .../controllers/SettingsGeneralController.kt | 4 +- .../controllers/SettingsLibraryController.kt | 11 +- .../controllers/SettingsReaderController.kt | 6 +- .../legacy/SettingsDataLegacyController.kt | 4 +- .../tachiyomi/ui/source/BrowseController.kt | 9 +- .../tachiyomi/ui/source/SourceHolder.kt | 1 + .../ui/source/browse/BrowseSourcePresenter.kt | 2 +- .../globalsearch/GlobalSearchCardAdapter.kt | 2 +- .../util/chapter/ChapterRecognition.kt | 1 + .../kanade/tachiyomi/util/compose/Locals.kt | 2 +- .../util/system/ContextExtensions.kt | 47 ------- .../tachiyomi/widget/AutofitRecyclerView.kt | 2 +- .../tachiyomi/widget/BaseTabbedScrollView.kt | 6 +- .../yokai/core/CrashlyticsLogWriter.kt | 2 +- .../java/{dev => }/yokai/core/di/AppModule.kt | 32 ++++- .../main/java/yokai/core/di/DomainModule.kt | 56 ++++++++ .../yokai/core/di/PreferenceModule.kt | 19 +-- .../yokai/core/metadata/ComicInfo.kt | 2 +- .../yokai/core/migration/Migration.kt | 2 +- .../migration/MigrationCompletedListener.kt | 2 +- .../yokai/core/migration/MigrationContext.kt | 2 +- .../core/migration/MigrationJobFactory.kt | 2 +- .../yokai/core/migration/MigrationStrategy.kt | 2 +- .../migration/MigrationStrategyFactory.kt | 2 +- .../yokai/core/migration/Migrator.kt | 2 +- .../migrations/ChapterCacheMigration.kt | 6 +- .../migrations/CoverCacheMigration.kt | 6 +- .../migrations/CustomInfoMigration.kt | 6 +- .../migration/migrations/CutoutMigration.kt | 12 +- .../core/migration/migrations/DoHMigration.kt | 6 +- .../migrations/DownloadedChaptersMigration.kt | 6 +- .../migrations/EnabledLanguageMigration.kt | 6 +- .../migrations/EvernoteJobUpgradeMigration.kt | 6 +- .../ExtensionInstallerEnumMigration.kt | 8 +- .../InternalChapterCacheUpdateMigration.kt | 6 +- .../migrations/LibrarySortMigration.kt | 6 +- .../migrations/LibraryUpdateResetMigration.kt | 6 +- .../core/migration/migrations/Migrations.kt | 5 +- .../migrations/MyAnimeListMigration.kt | 6 +- .../migrations/NetworkPrefsMigration.kt | 23 ++++ .../migration/migrations/PrefsMigration.kt | 6 +- .../migrations/ReaderUpdateMigration.kt | 6 +- .../migration/migrations/RepoJsonMigration.kt | 10 +- .../migrations/RotationTypeEnumMigration.kt | 6 +- .../migrations/RotationTypeMigration.kt | 6 +- .../migrations/SetupAppUpdateMigration.kt | 6 +- .../migrations/SetupBackupCreateMigration.kt | 6 +- .../SetupExtensionUpdateMigration.kt | 6 +- .../migrations/SetupLibraryUpdateMigration.kt | 6 +- .../migrations/ShortcutsMigration.kt | 6 +- .../migration/migrations/ThePurgeMigration.kt | 6 +- .../TrackerPrivateSettingsMigration.kt | 6 +- .../migrations/UpdateIntervalMigration.kt | 6 +- .../migrations/WorkManagerMigration.kt | 6 +- .../yokai/data/AndroidDatabaseHandler.kt | 2 +- .../{dev => }/yokai/data/DatabaseAdapter.kt | 4 +- .../{dev => }/yokai/data/DatabaseHandler.kt | 3 +- .../yokai/data/TransactionContext.kt | 6 +- .../data/chapter/ChapterRepositoryImpl.kt | 6 +- .../repo/ExtensionRepoRepositoryImpl.kt | 10 +- .../custom/CustomMangaRepositoryImpl.kt | 10 +- .../yokai/data/manga/MangaRepositoryImpl.kt | 6 +- .../yokai/domain/ComposableAlertDialog.kt | 2 +- .../java/{dev => }/yokai/domain/Result.kt | 2 +- .../{dev => }/yokai/domain/SplashState.kt | 2 +- .../yokai/domain/base/BasePreferences.kt | 2 +- .../yokai/domain/base/models/Version.kt | 2 +- .../yokai/domain/chapter/ChapterRepository.kt | 2 +- .../interactor/GetAvailableScanlators.kt | 4 +- .../domain/chapter/interactor/GetChapters.kt | 4 +- .../domain/download/DownloadPreferences.kt | 2 +- .../extension/interactor/TrustExtension.kt | 8 +- .../extension/repo/ExtensionRepoRepository.kt | 4 +- .../exception/SaveExtensionRepoException.kt | 2 +- .../repo/interactor/CreateExtensionRepo.kt | 10 +- .../repo/interactor/DeleteExtensionRepo.kt | 4 +- .../repo/interactor/GetExtensionRepo.kt | 6 +- .../repo/interactor/GetExtensionRepoCount.kt | 4 +- .../repo/interactor/ReplaceExtensionRepo.kt | 6 +- .../repo/interactor/UpdateExtensionRepo.kt | 8 +- .../extension/repo/model/ExtensionRepo.kt | 2 +- .../repo/service/ExtensionRepoService.kt | 4 +- .../library/custom/CustomMangaRepository.kt | 4 +- .../exception/SaveCustomMangaException.kt | 2 +- .../custom/interactor/CreateCustomManga.kt | 8 +- .../custom/interactor/DeleteCustomManga.kt | 4 +- .../custom/interactor/GetCustomManga.kt | 4 +- .../custom/interactor/RelinkCustomManga.kt | 4 +- .../library/custom/model/CustomMangaInfo.kt | 2 +- .../yokai/domain/manga/MangaRepository.kt | 2 +- .../manga/interactor/GetLibraryManga.kt | 4 +- .../domain/recents/RecentsPreferences.kt | 2 +- .../yokai/domain/source/SourcePreferences.kt | 2 +- .../yokai/domain/storage/StorageManager.kt | 2 +- .../domain/storage/StoragePreferences.kt | 2 +- .../yokai/domain/ui/UiPreferences.kt | 4 +- .../domain/ui/settings/ReaderPreferences.kt | 2 +- .../{dev => }/yokai/presentation/Scaffold.kt | 4 +- .../yokai/presentation/component/AppIcon.kt | 2 +- .../component/CircularProgressIndicator.kt | 2 +- .../presentation/component/EmptyScreen.kt | 2 +- .../yokai/presentation/component/Gap.kt | 2 +- .../presentation/component/LabeledCheckbox.kt | 4 +- .../yokai/presentation/component/ThemeItem.kt | 8 +- .../yokai/presentation/component/ToolTip.kt | 2 +- .../presentation/component/TrackLogoIcon.kt | 4 +- .../component/preference/Preference.kt | 2 +- .../component/preference/PreferenceCommon.kt | 4 +- .../component/preference/PreferenceItem.kt | 20 +-- .../preference/widget/BasePreferenceWidget.kt | 6 +- .../widget/EditTextPreferenceWidget.kt | 3 +- .../component/preference/widget/InfoWidget.kt | 6 +- .../preference/widget/ListPreferenceWidget.kt | 2 +- .../widget/MultiListPreferenceWidget.kt | 6 +- .../widget/PreferenceGroupHeader.kt | 2 +- .../widget/SliderPreferenceWidget.kt | 5 +- .../widget/SwitchPreferenceWidget.kt | 2 +- .../preference/widget/TextPreferenceWidget.kt | 4 +- .../widget/TrackingPreferenceWidget.kt | 6 +- .../preference/widget/TriStateListDialog.kt | 2 +- .../core/util/ModifierExtensions.kt | 4 +- .../extension/ExtensionDetailsController.kt | 2 +- .../extension/repo/ExtensionRepoController.kt | 4 +- .../extension/repo/ExtensionRepoScreen.kt | 18 +-- .../extension/repo/ExtensionRepoViewModel.kt | 14 +- .../repo/component/ExtensionRepoItem.kt | 8 +- .../presentation/onboarding/InfoScreen.kt | 7 +- .../onboarding/OnboardingController.kt | 6 +- .../onboarding/OnboardingScreen.kt | 12 +- .../onboarding/steps/OnboardingStep.kt | 2 +- .../onboarding/steps/PermissionStep.kt | 6 +- .../onboarding/steps/StorageStep.kt | 18 +-- .../onboarding/steps/ThemeStep.kt | 10 +- .../settings/ComposableSettings.kt | 4 +- .../settings/SettingsCommonWidget.kt | 16 +-- .../settings/screen/SettingsDataScreen.kt | 28 ++-- .../settings/screen/data/AlertDialogs.kt | 4 +- .../settings/screen/data/Storage.kt | 2 +- .../settings/screen/data/StorageInfo.kt | 8 +- .../yokai/presentation/theme/Constants.kt | 2 +- .../yokai/presentation/theme/Theme.kt | 2 +- .../yokai/presentation/theme/Typography.kt | 2 +- .../{dev => }/yokai/util/LewdMangaChecker.kt | 4 +- app/src/main/res/values/strings.xml | 6 - .../dev/yokai/core/migration/MigratorTest.kt | 2 +- build.gradle.kts | 45 ++++++ .../src/main/kotlin/LocalesConfigPlugin.kt | 42 ++++++ core/build.gradle.kts | 49 +++++++ core/src/androidMain/AndroidManifest.xml | 2 + .../core/preference/AndroidPreference.kt | 0 .../core/preference/AndroidPreferenceStore.kt | 0 .../tachiyomi/network/AndroidCookieJar.kt | 0 .../kanade/tachiyomi/network/DohProviders.kt | 0 .../tachiyomi/network/JavaScriptEngine.kt | 0 .../kanade/tachiyomi/network/NetworkHelper.kt | 30 ++-- .../tachiyomi/network/OkHttpExtensions.kt | 2 +- .../tachiyomi/network/ProgressResponseBody.kt | 0 .../eu/kanade/tachiyomi/network/Requests.kt | 2 +- .../interceptor/CloudflareInterceptor.kt | 9 +- .../interceptor/IgnoreGzipInterceptor.kt | 0 .../interceptor/RateLimitInterceptor.kt | 2 +- .../SpecificHostRateLimitInterceptor.kt | 2 +- .../UncaughtExceptionInterceptor.kt | 0 .../interceptor/UserAgentInterceptor.kt | 0 .../network/interceptor/WebViewInterceptor.kt | 9 +- .../util/system/CoroutinesExtensions.kt | 0 .../util/system/DensityExtensions.kt | 28 ++++ .../tachiyomi/util/system/DeviceUtil.kt | 0 .../tachiyomi/util/system/KermitExtensions.kt | 0 .../tachiyomi/util/system/ToastExtensions.kt | 37 +++++ .../util/system/WebViewClientCompat.kt | 0 .../tachiyomi/util/system/WebViewUtil.kt | 0 .../kotlin/yokai/util/lang/MokoExtensions.kt | 8 ++ .../yokai/util/lang}/RxCoroutineBridge.kt | 6 +- .../tachiyomi/core/preference/Preference.kt | 10 -- .../core/preference/PreferenceStore.kt | 0 .../tachiyomi/network/NetworkPreferences.kt | 10 ++ .../tachiyomi/network/ProgressListener.kt | 0 domain/build.gradle.kts | 11 ++ gradle.properties | 2 +- gradle/kotlinx.versions.toml | 9 +- gradle/libs.versions.toml | 5 + i18n/.gitignore | 2 + i18n/build.gradle.kts | 44 ++++++ i18n/src/androidMain/AndroidManifest.xml | 2 + .../androidMain}/res/xml/locales_config.xml | 2 +- .../moko-resources/base/strings.xml | 8 ++ presentation-core/build.gradle.kts | 17 +++ presentation-core/consumer-rules.pro | 0 presentation-core/proguard-rules.pro | 21 +++ presentation-widget/build.gradle.kts | 31 +++++ presentation-widget/consumer-rules.pro | 0 presentation-widget/proguard-rules.pro | 21 +++ .../appwidget/TachiyomiWidgetManager.kt | 15 ++ .../appwidget/UpdatesGridGlanceReceiver.kt | 8 ++ .../appwidget/UpdatesGridGlanceWidget.kt | 128 ++++++++++++++++++ .../appwidget/components/LockedWidget.kt | 44 ++++++ .../appwidget/components/UpdatesMangaCover.kt | 48 +++++++ .../appwidget/components/UpdatesWidget.kt | 74 ++++++++++ .../tachiyomi/appwidget/util/GlanceUtils.kt | 43 ++++++ settings.gradle.kts | 8 ++ source-api/build.gradle.kts | 42 ++++++ source-api/consumer-proguard.pro | 5 + .../src/androidMain/AndroidManifest.xml | 2 + .../eu/kanade/tachiyomi/util/RxExtension.kt | 6 + .../tachiyomi/source/CatalogueSource.kt | 2 +- .../tachiyomi/source/ConfigurableSource.kt | 0 .../eu/kanade/tachiyomi/source/Source.kt | 22 +-- .../kanade/tachiyomi/source/SourceFactory.kt | 0 .../tachiyomi/source/UnmeteredSource.kt | 0 .../kanade/tachiyomi/source/model/Filter.kt | 0 .../tachiyomi/source/model/FilterList.kt | 0 .../tachiyomi/source/model/MangasPage.kt | 0 .../eu/kanade/tachiyomi/source/model/Page.kt | 0 .../kanade/tachiyomi/source/model/SChapter.kt | 11 -- .../tachiyomi/source/model/SChapterImpl.kt | 0 .../kanade/tachiyomi/source/model/SManga.kt | 52 +++++++ .../tachiyomi/source/model/SMangaImpl.kt | 24 ++++ .../tachiyomi/source/model/UpdateStrategy.kt | 0 .../tachiyomi/source/online/HttpSource.kt | 15 +- .../source/online/ParsedHttpSource.kt | 0 .../kanade/tachiyomi/util/JsoupExtensions.kt | 0 .../eu/kanade/tachiyomi/util/RxExtension.kt | 5 + 290 files changed, 1655 insertions(+), 881 deletions(-) delete mode 100644 app/src/main/java/dev/yokai/core/di/DomainModule.kt create mode 100644 app/src/main/java/eu/kanade/tachiyomi/core/storage/preference/PreferenceExtension.kt create mode 100644 app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt create mode 100644 app/src/main/java/eu/kanade/tachiyomi/source/models/SMangaExtensions.kt rename app/src/main/java/{dev => }/yokai/core/CrashlyticsLogWriter.kt (97%) rename app/src/main/java/{dev => }/yokai/core/di/AppModule.kt (84%) create mode 100644 app/src/main/java/yokai/core/di/DomainModule.kt rename app/src/main/java/{dev => }/yokai/core/di/PreferenceModule.kt (76%) rename app/src/main/java/{dev => }/yokai/core/metadata/ComicInfo.kt (99%) rename app/src/main/java/{dev => }/yokai/core/migration/Migration.kt (94%) rename app/src/main/java/{dev => }/yokai/core/migration/MigrationCompletedListener.kt (60%) rename app/src/main/java/{dev => }/yokai/core/migration/MigrationContext.kt (84%) rename app/src/main/java/{dev => }/yokai/core/migration/MigrationJobFactory.kt (97%) rename app/src/main/java/{dev => }/yokai/core/migration/MigrationStrategy.kt (98%) rename app/src/main/java/{dev => }/yokai/core/migration/MigrationStrategyFactory.kt (95%) rename app/src/main/java/{dev => }/yokai/core/migration/Migrator.kt (97%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/ChapterCacheMigration.kt (82%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/CoverCacheMigration.kt (83%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/CustomInfoMigration.kt (73%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/CutoutMigration.kt (82%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/DoHMigration.kt (86%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/DownloadedChaptersMigration.kt (74%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/EnabledLanguageMigration.kt (81%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt (82%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt (87%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt (76%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/LibrarySortMigration.kt (87%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt (76%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/Migrations.kt (90%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/MyAnimeListMigration.kt (85%) create mode 100644 app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt rename app/src/main/java/{dev => }/yokai/core/migration/migrations/PrefsMigration.kt (90%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/ReaderUpdateMigration.kt (87%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/RepoJsonMigration.kt (82%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/RotationTypeEnumMigration.kt (91%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/RotationTypeMigration.kt (81%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/SetupAppUpdateMigration.kt (78%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/SetupBackupCreateMigration.kt (75%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt (75%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt (75%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/ShortcutsMigration.kt (91%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/ThePurgeMigration.kt (79%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt (86%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/UpdateIntervalMigration.kt (85%) rename app/src/main/java/{dev => }/yokai/core/migration/migrations/WorkManagerMigration.kt (87%) rename app/src/main/java/{dev => }/yokai/data/AndroidDatabaseHandler.kt (99%) rename app/src/main/java/{dev => }/yokai/data/DatabaseAdapter.kt (93%) rename app/src/main/java/{dev => }/yokai/data/DatabaseHandler.kt (94%) rename app/src/main/java/{dev => }/yokai/data/TransactionContext.kt (98%) rename app/src/main/java/{dev => }/yokai/data/chapter/ChapterRepositoryImpl.kt (89%) rename app/src/main/java/{dev => }/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt (90%) rename app/src/main/java/{dev => }/yokai/data/library/custom/CustomMangaRepositoryImpl.kt (90%) rename app/src/main/java/{dev => }/yokai/data/manga/MangaRepositoryImpl.kt (87%) rename app/src/main/java/{dev => }/yokai/domain/ComposableAlertDialog.kt (92%) rename app/src/main/java/{dev => }/yokai/domain/Result.kt (89%) rename app/src/main/java/{dev => }/yokai/domain/SplashState.kt (72%) rename app/src/main/java/{dev => }/yokai/domain/base/BasePreferences.kt (98%) rename app/src/main/java/{dev => }/yokai/domain/base/models/Version.kt (98%) rename app/src/main/java/{dev => }/yokai/domain/chapter/ChapterRepository.kt (93%) rename app/src/main/java/{dev => }/yokai/domain/chapter/interactor/GetAvailableScanlators.kt (74%) rename app/src/main/java/{dev => }/yokai/domain/chapter/interactor/GetChapters.kt (85%) rename app/src/main/java/{dev => }/yokai/domain/download/DownloadPreferences.kt (86%) rename app/src/main/java/{dev => }/yokai/domain/extension/interactor/TrustExtension.kt (84%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/ExtensionRepoRepository.kt (91%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt (86%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt (89%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt (64%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt (63%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt (58%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt (54%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt (79%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/model/ExtensionRepo.kt (78%) rename app/src/main/java/{dev => }/yokai/domain/extension/repo/service/ExtensionRepoService.kt (94%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/CustomMangaRepository.kt (90%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/exception/SaveCustomMangaException.kt (86%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/interactor/CreateCustomManga.kt (75%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/interactor/DeleteCustomManga.kt (71%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/interactor/GetCustomManga.kt (65%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/interactor/RelinkCustomManga.kt (63%) rename app/src/main/java/{dev => }/yokai/domain/library/custom/model/CustomMangaInfo.kt (95%) rename app/src/main/java/{dev => }/yokai/domain/manga/MangaRepository.kt (92%) rename app/src/main/java/{dev => }/yokai/domain/manga/interactor/GetLibraryManga.kt (79%) rename app/src/main/java/{dev => }/yokai/domain/recents/RecentsPreferences.kt (95%) rename app/src/main/java/{dev => }/yokai/domain/source/SourcePreferences.kt (87%) rename app/src/main/java/{dev => }/yokai/domain/storage/StorageManager.kt (98%) rename app/src/main/java/{dev => }/yokai/domain/storage/StoragePreferences.kt (92%) rename app/src/main/java/{dev => }/yokai/domain/ui/UiPreferences.kt (76%) rename app/src/main/java/{dev => }/yokai/domain/ui/settings/ReaderPreferences.kt (97%) rename app/src/main/java/{dev => }/yokai/presentation/Scaffold.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/component/AppIcon.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/component/CircularProgressIndicator.kt (99%) rename app/src/main/java/{dev => }/yokai/presentation/component/EmptyScreen.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/component/Gap.kt (95%) rename app/src/main/java/{dev => }/yokai/presentation/component/LabeledCheckbox.kt (94%) rename app/src/main/java/{dev => }/yokai/presentation/component/ThemeItem.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/component/ToolTip.kt (99%) rename app/src/main/java/{dev => }/yokai/presentation/component/TrackLogoIcon.kt (93%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/Preference.kt (99%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/PreferenceCommon.kt (88%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/PreferenceItem.kt (89%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt (95%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt (97%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/InfoWidget.kt (86%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt (94%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt (93%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt (79%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt (93%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt (92%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt (92%) rename app/src/main/java/{dev => }/yokai/presentation/component/preference/widget/TriStateListDialog.kt (99%) rename app/src/main/java/{dev => }/yokai/presentation/core/util/ModifierExtensions.kt (85%) rename app/src/main/java/{dev => }/yokai/presentation/extension/ExtensionDetailsController.kt (90%) rename app/src/main/java/{dev => }/yokai/presentation/extension/repo/ExtensionRepoController.kt (90%) rename app/src/main/java/{dev => }/yokai/presentation/extension/repo/ExtensionRepoScreen.kt (94%) rename app/src/main/java/{dev => }/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt (89%) rename app/src/main/java/{dev => }/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt (96%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/InfoScreen.kt (96%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/OnboardingController.kt (86%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/OnboardingScreen.kt (88%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/steps/OnboardingStep.kt (75%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/steps/PermissionStep.kt (98%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/steps/StorageStep.kt (82%) rename app/src/main/java/{dev => }/yokai/presentation/onboarding/steps/ThemeStep.kt (96%) rename app/src/main/java/{dev => }/yokai/presentation/settings/ComposableSettings.kt (90%) rename app/src/main/java/{dev => }/yokai/presentation/settings/SettingsCommonWidget.kt (90%) rename app/src/main/java/{dev => }/yokai/presentation/settings/screen/SettingsDataScreen.kt (93%) rename app/src/main/java/{dev => }/yokai/presentation/settings/screen/data/AlertDialogs.kt (97%) rename app/src/main/java/{dev => }/yokai/presentation/settings/screen/data/Storage.kt (95%) rename app/src/main/java/{dev => }/yokai/presentation/settings/screen/data/StorageInfo.kt (91%) rename app/src/main/java/{dev => }/yokai/presentation/theme/Constants.kt (91%) rename app/src/main/java/{dev => }/yokai/presentation/theme/Theme.kt (94%) rename app/src/main/java/{dev => }/yokai/presentation/theme/Typography.kt (91%) rename app/src/main/java/{dev => }/yokai/util/LewdMangaChecker.kt (95%) create mode 100644 buildSrc/src/main/kotlin/LocalesConfigPlugin.kt create mode 100644 core/build.gradle.kts create mode 100644 core/src/androidMain/AndroidManifest.xml rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/AndroidCookieJar.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/DohProviders.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/JavaScriptEngine.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/NetworkHelper.kt (68%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/OkHttpExtensions.kt (99%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/ProgressResponseBody.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/Requests.kt (97%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt (94%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt (98%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt (98%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt (94%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt (100%) create mode 100644 core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/util/system/DeviceUtil.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/util/system/KermitExtensions.kt (100%) create mode 100644 core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt (100%) rename {app/src/main/java => core/src/androidMain/kotlin}/eu/kanade/tachiyomi/util/system/WebViewUtil.kt (100%) create mode 100644 core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt rename {app/src/main/java/eu/kanade/tachiyomi/util/system => core/src/androidMain/kotlin/yokai/util/lang}/RxCoroutineBridge.kt (94%) rename {app/src/main/java => core/src/commonMain/kotlin}/eu/kanade/tachiyomi/core/preference/Preference.kt (84%) rename {app/src/main/java => core/src/commonMain/kotlin}/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt (100%) create mode 100644 core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt rename {app/src/main/java => core/src/commonMain/kotlin}/eu/kanade/tachiyomi/network/ProgressListener.kt (100%) create mode 100644 domain/build.gradle.kts create mode 100644 i18n/.gitignore create mode 100644 i18n/build.gradle.kts create mode 100644 i18n/src/androidMain/AndroidManifest.xml rename {app/src/main => i18n/src/androidMain}/res/xml/locales_config.xml (99%) create mode 100644 i18n/src/commonMain/moko-resources/base/strings.xml create mode 100644 presentation-core/build.gradle.kts create mode 100644 presentation-core/consumer-rules.pro create mode 100644 presentation-core/proguard-rules.pro create mode 100644 presentation-widget/build.gradle.kts create mode 100644 presentation-widget/consumer-rules.pro create mode 100644 presentation-widget/proguard-rules.pro create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/TachiyomiWidgetManager.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceReceiver.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/LockedWidget.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesMangaCover.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesWidget.kt create mode 100644 presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/util/GlanceUtils.kt create mode 100644 source-api/build.gradle.kts create mode 100644 source-api/consumer-proguard.pro create mode 100644 source-api/src/androidMain/AndroidManifest.xml create mode 100644 source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/CatalogueSource.kt (97%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/ConfigurableSource.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/Source.kt (67%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/SourceFactory.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/UnmeteredSource.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/Filter.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/FilterList.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/MangasPage.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/Page.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/SChapter.kt (59%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/SChapterImpl.kt (100%) create mode 100644 source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt create mode 100644 source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/online/HttpSource.kt (96%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt (100%) rename {app/src/main/java => source-api/src/commonMain/kotlin}/eu/kanade/tachiyomi/util/JsoupExtensions.kt (100%) create mode 100644 source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 286d268c63..ec643e0427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,11 +18,13 @@ ## 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 5f416ef080..57057b7cab 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -39,14 +39,9 @@ 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 = 138 versionName = "1.8.4" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled = true @@ -145,14 +140,6 @@ 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 { @@ -167,6 +154,10 @@ android { } dependencies { + implementation(projects.core) + implementation(projects.i18n) + implementation(projects.sourceApi) + // Compose implementation(compose.bundles.compose) debugImplementation(compose.ui.tooling) @@ -280,8 +271,8 @@ dependencies { implementation(kotlin("stdlib", org.jetbrains.kotlin.config.KotlinCompilerVersion.VERSION)) - implementation(kotlinx.coroutines.core) - implementation(kotlinx.coroutines.android) + implementation(platform(kotlinx.coroutines.bom)) + implementation(kotlinx.bundles.coroutines) // Text distance implementation(libs.java.string.similarity) @@ -296,8 +287,6 @@ dependencies { implementation(kotlinx.immutable) - "coreLibraryDesugaring"(libs.desugar) - // Tests testImplementation(libs.bundles.test) testRuntimeOnly(libs.bundles.test.runtime) @@ -306,13 +295,6 @@ 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 7d18bb92e9..00cf2d61bd 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,19 +1,19 @@ -dontobfuscate --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,allowoptimization class eu.kanade.** +-keep,allowoptimization class tachiyomi.** +-keep,allowoptimization class yokai.** # Keep common dependencies used in extensions --keep class androidx.preference.** { public protected *; } --keep class kotlin.** { public protected *; } +-keep,allowoptimization class androidx.preference.** { public protected *; } +-keep,allowoptimization class kotlin.** { public protected *; } -keep,allowoptimization class kotlinx.coroutines.** { public protected *; } --keep class kotlinx.serialization.** { public protected *; } --keep class okhttp3.** { public protected *; } +-keep,allowoptimization class kotlinx.serialization.** { public protected *; } +-keep,allowoptimization class kotlin.time.** { public protected *; } +-keep,allowoptimization class okhttp3.** { public protected *; } -keep,allowoptimization class okio.** { public protected *; } -keep,allowoptimization class rx.** { public protected *; } --keep class org.jsoup.** { public protected *; } +-keep,allowoptimization class org.jsoup.** { public protected *; } -keep,allowoptimization class com.google.gson.** { public protected *; } -keep,allowoptimization class app.cash.quickjs.** { public protected *; } -keep,allowoptimization class uy.kohesive.injekt.** { public protected *; } @@ -73,11 +73,11 @@ kotlinx.serialization.KSerializer serializer(...); } --keep,includedescriptorclasses class dev.yokai.**$$serializer { *; } --keepclassmembers class dev.yokai.** { +-keep,includedescriptorclasses class yokai.**$$serializer { *; } +-keepclassmembers class yokai.** { *** Companion; } --keepclasseswithmembers class dev.yokai.** { +-keepclasseswithmembers class yokai.** { kotlinx.serialization.KSerializer serializer(...); } diff --git a/app/src/main/java/dev/yokai/core/di/DomainModule.kt b/app/src/main/java/dev/yokai/core/di/DomainModule.kt deleted file mode 100644 index 0ae891ce9f..0000000000 --- a/app/src/main/java/dev/yokai/core/di/DomainModule.kt +++ /dev/null @@ -1,56 +0,0 @@ -package dev.yokai.core.di - -import dev.yokai.data.chapter.ChapterRepositoryImpl -import dev.yokai.domain.extension.repo.ExtensionRepoRepository -import dev.yokai.data.extension.repo.ExtensionRepoRepositoryImpl -import dev.yokai.data.library.custom.CustomMangaRepositoryImpl -import dev.yokai.data.manga.MangaRepositoryImpl -import dev.yokai.domain.chapter.ChapterRepository -import dev.yokai.domain.chapter.interactor.GetAvailableScanlators -import dev.yokai.domain.chapter.interactor.GetChapters -import dev.yokai.domain.extension.interactor.TrustExtension -import dev.yokai.domain.extension.repo.interactor.CreateExtensionRepo -import dev.yokai.domain.extension.repo.interactor.DeleteExtensionRepo -import dev.yokai.domain.extension.repo.interactor.GetExtensionRepo -import dev.yokai.domain.extension.repo.interactor.GetExtensionRepoCount -import dev.yokai.domain.extension.repo.interactor.ReplaceExtensionRepo -import dev.yokai.domain.extension.repo.interactor.UpdateExtensionRepo -import dev.yokai.domain.library.custom.CustomMangaRepository -import dev.yokai.domain.library.custom.interactor.CreateCustomManga -import dev.yokai.domain.library.custom.interactor.DeleteCustomManga -import dev.yokai.domain.library.custom.interactor.GetCustomManga -import dev.yokai.domain.library.custom.interactor.RelinkCustomManga -import dev.yokai.domain.manga.MangaRepository -import dev.yokai.domain.manga.interactor.GetLibraryManga -import uy.kohesive.injekt.api.InjektModule -import uy.kohesive.injekt.api.InjektRegistrar -import uy.kohesive.injekt.api.addFactory -import uy.kohesive.injekt.api.addSingletonFactory -import uy.kohesive.injekt.api.get - -class DomainModule : InjektModule { - override fun InjektRegistrar.registerInjectables() { - addFactory { TrustExtension(get(), get()) } - - addSingletonFactory { 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/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index b987a461de..8dfe4020ca 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -34,13 +34,6 @@ 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 @@ -67,6 +60,13 @@ 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/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 new file mode 100644 index 0000000000..be0b8e9773 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/core/storage/preference/PreferenceExtension.kt @@ -0,0 +1,13 @@ +package eu.kanade.tachiyomi.core.storage.preference + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.State +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.remember +import eu.kanade.tachiyomi.core.preference.Preference + +@Composable +fun 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 2beea4c0e0..1d5cfad071 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,7 +4,6 @@ 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 @@ -22,6 +21,7 @@ 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 e808c44b2e..d7d9c7b1b8 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,7 +14,6 @@ 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 @@ -24,6 +23,7 @@ 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 57d32c64df..b02d67cfbd 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,8 +1,5 @@ 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 @@ -12,6 +9,7 @@ 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 bd4c679800..bf67bfedb7 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,6 +1,5 @@ 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 @@ -18,6 +17,7 @@ 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 0daae16f5d..7017d0d14c 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,5 +1,18 @@ 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 4c63956f70..62507cf4e1 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.Locale +import java.util.* interface Manga : SManga { @@ -34,6 +34,55 @@ 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 fe5b8707ba..e7081dacef 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,7 +2,6 @@ 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 @@ -16,7 +15,8 @@ import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import java.util.concurrent.TimeUnit +import yokai.domain.storage.StorageManager +import java.util.concurrent.* /** * Cache where we dump the downloads directory from the filesystem. This class is needed because 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 b367ef10bc..d95f4aaf36 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,7 +3,6 @@ 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 @@ -18,6 +17,7 @@ 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 94798455c1..3af8726cbd 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,8 +2,6 @@ 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 @@ -17,6 +15,8 @@ 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 7de8c33063..cb933673c0 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,10 +6,6 @@ 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 @@ -52,11 +48,13 @@ 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.CRC32 -import java.util.zip.ZipEntry -import java.util.zip.ZipOutputStream +import java.util.zip.* /** * 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 9b4522f885..119173a80f 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,16 +2,6 @@ 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 @@ -26,6 +16,16 @@ 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 ff57dc1644..c3822b108c 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,7 +20,6 @@ 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 @@ -75,12 +74,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.CancellationException -import java.util.concurrent.TimeUnit -import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.* +import java.util.concurrent.atomic.* 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 02e6693495..e86b2da262 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,7 +11,6 @@ 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 @@ -401,10 +400,6 @@ 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 89a7f4552e..88a4ee5904 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,7 +3,6 @@ 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 @@ -15,6 +14,7 @@ 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 bf1a537fe1..96767cd0af 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -5,8 +5,6 @@ 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 @@ -17,7 +15,6 @@ 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 @@ -28,6 +25,8 @@ 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.* @@ -155,7 +154,7 @@ class ExtensionManager( val extensions: List = try { api.findExtensions() } catch (e: Exception) { - Logger.e(e) + Logger.e(e) { "Failed to find available extensions" } 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 deb9db4962..45e29886a0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt @@ -18,8 +18,6 @@ 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 @@ -39,6 +37,8 @@ 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 3f5d66b553..a33e307fb6 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,9 +2,6 @@ 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 @@ -21,6 +18,9 @@ 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 ba3f76a02a..bcd4fc8278 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,7 +12,6 @@ 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 @@ -47,6 +46,7 @@ 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 be326567fd..10775f75a3 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,7 +9,6 @@ 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 @@ -23,6 +22,7 @@ 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/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index 79fdf61fd8..d90d7b729d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -5,11 +5,6 @@ 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 @@ -37,10 +32,15 @@ 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.TimeUnit +import java.util.concurrent.* class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSource { companion object { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt new file mode 100644 index 0000000000..4cbf8218fc --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt @@ -0,0 +1,29 @@ +package eu.kanade.tachiyomi.source + +import android.graphics.drawable.Drawable +import eu.kanade.tachiyomi.extension.ExtensionManager +import eu.kanade.tachiyomi.extension.model.Extension +import eu.kanade.tachiyomi.source.online.HttpSource +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get + +fun Source.includeLangInName(enabledLanguages: Set, 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/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt deleted file mode 100644 index 681cf126f4..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt +++ /dev/null @@ -1,100 +0,0 @@ -package eu.kanade.tachiyomi.source.model - -import eu.kanade.tachiyomi.data.database.models.MangaImpl -import java.io.Serializable - -interface SManga : Serializable { - - var url: String - - var title: String - - var artist: String? - - var author: String? - - var description: String? - - var genre: String? - - var status: Int - - var thumbnail_url: String? - - var update_strategy: UpdateStrategy - - var initialized: Boolean - - val originalTitle: String - get() = (this as? MangaImpl)?.ogTitle ?: title - val originalAuthor: String? - get() = (this as? MangaImpl)?.ogAuthor ?: author - val originalArtist: String? - get() = (this as? MangaImpl)?.ogArtist ?: artist - val originalDescription: String? - get() = (this as? MangaImpl)?.ogDesc ?: description - val originalGenre: String? - get() = (this as? MangaImpl)?.ogGenre ?: genre - val originalStatus: Int - get() = (this as? MangaImpl)?.ogStatus ?: status - - val hasSameAuthorAndArtist: Boolean - get() = author == artist || artist.isNullOrBlank() || - author?.contains(artist ?: "", true) == true - - fun copyFrom(other: SManga) { - if (other.author != null) { - author = other.originalAuthor - } - - if (other.artist != null) { - artist = other.originalArtist - } - - if (other.description != null) { - description = other.originalDescription - } - - if (other.genre != null) { - genre = other.originalGenre - } - - if (other.thumbnail_url != null) { - thumbnail_url = other.thumbnail_url - } - - status = other.originalStatus - - update_strategy = other.update_strategy - - if (!initialized) { - initialized = other.initialized - } - } - - fun copy() = create().also { - it.url = url - it.title = title - it.artist = artist - it.author = author - it.description = description - it.genre = genre - it.status = status - it.thumbnail_url = thumbnail_url - it.initialized = initialized - } - - companion object { - const val UNKNOWN = 0 - const val ONGOING = 1 - const val COMPLETED = 2 - const val LICENSED = 3 - const val PUBLISHING_FINISHED = 4 - const val CANCELLED = 5 - const val ON_HIATUS = 6 - - fun create(): SManga { - return MangaImpl() - } - } -} 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 new file mode 100644 index 0000000000..352fc93f30 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/source/models/SMangaExtensions.kt @@ -0,0 +1,7 @@ +package eu.kanade.tachiyomi.source.models + +import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.tachiyomi.source.model.SManga + +val SManga.originalTitle: String + get() = if (this is Manga) this.originalTitle else title 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 79b24f74a0..fa460c9e87 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,6 +4,7 @@ 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 @@ -13,7 +14,7 @@ import kotlinx.coroutines.async import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.Locale +import java.util.* 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 1b98e01ad5..0f80b5b601 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,6 +4,7 @@ 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 @@ -19,7 +20,7 @@ import okhttp3.CacheControl import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import java.util.Locale +import java.util.* 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 3f7b595e68..0f006897af 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,6 +5,7 @@ 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 631e0efdf1..7a03655487 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,6 +4,7 @@ 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 c9ab2547a5..d070c78fcd 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,7 +12,6 @@ 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 @@ -22,6 +21,7 @@ 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 12d73c68b1..8f78c042ec 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 dev.yokai.presentation.theme.YokaiTheme +import 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 a34a81d8cf..151c82120a 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,9 +17,6 @@ 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 @@ -27,6 +24,9 @@ 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 4a2f38db5d..56e962497b 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 66f5fd628b..51747b9292 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,8 +12,6 @@ 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 @@ -46,6 +44,8 @@ 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 8f2ecacda8..a424533e29 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,7 +3,6 @@ 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 @@ -18,7 +17,8 @@ import eu.kanade.tachiyomi.util.system.timeSpanFromNow import eu.kanade.tachiyomi.util.system.withDefContext import kotlinx.coroutines.runBlocking import uy.kohesive.injekt.injectLazy -import java.util.Locale +import yokai.domain.ui.UiPreferences +import java.util.* /** * Adapter storing a list of manga in a certain category. 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 c41df7bfb7..7d5ece7a90 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,7 +51,6 @@ 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 @@ -130,7 +129,8 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import java.util.Locale +import yokai.domain.ui.UiPreferences +import java.util.* import kotlin.math.abs import kotlin.math.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 ac0d7a9e5f..4f90d3d102 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,7 +11,6 @@ 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 @@ -27,6 +26,7 @@ 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 46b5a97c40..a6793f04ba 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,8 +1,5 @@ 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 @@ -57,8 +54,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.GetChapters +import yokai.domain.manga.interactor.GetLibraryManga +import yokai.util.isLewd import java.util.* -import java.util.concurrent.TimeUnit +import java.util.concurrent.* 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 2bf412774f..63de0578ad 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,10 +67,6 @@ 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 @@ -143,20 +139,10 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.withContext import uy.kohesive.injekt.injectLazy -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 yokai.core.migration.Migrator +import yokai.domain.base.BasePreferences +import yokai.presentation.extension.repo.ExtensionRepoController +import yokai.presentation.onboarding.OnboardingController 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 a978c0b6f4..996cd6bd2b 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,7 +8,6 @@ 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 @@ -30,6 +29,7 @@ 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 e5eec22bc9..98fa984ca9 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,10 +10,6 @@ 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 @@ -36,6 +32,7 @@ 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 @@ -74,11 +71,14 @@ 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.Date -import java.util.Locale +import java.util.* 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 7a58bb1b80..b121bb7906 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,17 +26,18 @@ import androidx.core.widget.TextViewCompat import androidx.transition.TransitionSet import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat import coil3.request.CachePolicy -import coil3.request.placeholder import coil3.request.error +import coil3.request.placeholder import com.google.android.material.button.MaterialButton import com.google.android.material.chip.Chip import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.coil.loadManga +import eu.kanade.tachiyomi.data.database.models.Manga 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 621a144146..adefca875a 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,6 +1,5 @@ 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 @@ -18,6 +17,7 @@ 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 e48bdbc270..0bff2ed5ab 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,6 +4,7 @@ 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 d0fa10a0f3..28296d92be 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,8 +1,6 @@ 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 @@ -24,7 +22,9 @@ import kotlinx.coroutines.withContext import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy -import java.util.Date +import yokai.domain.library.custom.model.CustomMangaInfo.Companion.getMangaInfo +import yokai.domain.ui.UiPreferences +import java.util.* class MigrationProcessAdapter( 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 22b3feb365..7f11e17272 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,6 +1,5 @@ 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 @@ -21,6 +20,7 @@ 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 bba1a44ae3..427f418ee6 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,6 +32,7 @@ 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 @@ -59,8 +60,7 @@ 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.Calendar -import java.util.Locale +import java.util.* 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 5f41b95a4e..4426f2bda1 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,7 +3,6 @@ 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 @@ -19,6 +18,7 @@ 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 java.util.Calendar -import java.util.Locale -import java.util.concurrent.TimeUnit +import yokai.domain.manga.interactor.GetLibraryManga +import java.util.* +import java.util.concurrent.* 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 8e43856f43..bb86c1089c 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,9 +75,6 @@ import com.google.android.material.snackbar.Snackbar import com.google.android.material.transition.platform.MaterialContainerTransform import com.google.android.material.transition.platform.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 @@ -161,6 +158,9 @@ 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 85b7a645ae..2a93e5bc3d 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,9 +9,6 @@ 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 @@ -76,8 +73,11 @@ 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.CancellationException +import java.util.concurrent.* /** * 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 c48950eb74..1c2eaf4ad5 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,7 +29,6 @@ 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 @@ -39,6 +38,7 @@ 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 bf8a525342..19e01b2d33 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 dev.yokai.presentation.component.CombinedCircularProgressIndicator -import dev.yokai.presentation.theme.YokaiTheme +import yokai.presentation.component.CombinedCircularProgressIndicator +import 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 c383e71700..9c56531f49 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,8 +1,6 @@ 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 @@ -12,13 +10,14 @@ import eu.kanade.tachiyomi.ui.reader.viewer.navigation.EdgeNavigation import eu.kanade.tachiyomi.ui.reader.viewer.navigation.KindlishNavigation import eu.kanade.tachiyomi.ui.reader.viewer.navigation.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 fe4df22dd4..f234446a44 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,7 +12,6 @@ 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 @@ -24,6 +23,7 @@ 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 04bcef632a..c508a1c506 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,7 +11,6 @@ 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 @@ -21,6 +20,7 @@ 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 a3c07408c9..1b31dc9505 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,8 +2,6 @@ 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 @@ -16,10 +14,12 @@ 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.Locale +import java.util.* 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 c00a4f8277..7fb00484f7 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,8 +1,5 @@ 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 @@ -37,12 +34,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.Calendar -import java.util.Date -import java.util.Locale -import java.util.TreeMap -import java.util.concurrent.TimeUnit +import java.util.* +import java.util.concurrent.* 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 95ad8ef61e..9912f988fe 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 f015a72b69..0bc0b95ad9 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,7 +16,6 @@ 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 @@ -30,6 +29,7 @@ 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 55b8d93f23..aea22e49d9 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,8 +16,6 @@ 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 @@ -29,6 +27,7 @@ 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 @@ -78,11 +77,14 @@ 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() @@ -278,7 +280,7 @@ class SettingsAdvancedController : SettingsLegacyController() { } } editTextPreference(activity) { - bindTo(preferences.defaultUserAgent()) + bindTo(networkPreferences.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 79afd510ce..7fe8ecb483 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,8 +6,6 @@ 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 @@ -35,6 +33,8 @@ 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 8450c664bd..f0c051cd86 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 5c82542fc6..8bc8edbea3 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,7 +3,6 @@ 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 @@ -22,6 +21,7 @@ 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 76e8aefd71..a68f8f3ef3 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,7 +9,6 @@ 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 @@ -30,7 +29,8 @@ 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 java.util.Locale +import yokai.domain.base.BasePreferences +import java.util.* 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 56750540f3..f8f0107387 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,12 +1,18 @@ 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.* +import eu.kanade.tachiyomi.data.preference.DEVICE_BATTERY_NOT_LOW +import eu.kanade.tachiyomi.data.preference.DEVICE_CHARGING +import eu.kanade.tachiyomi.data.preference.DEVICE_ONLY_ON_WIFI +import eu.kanade.tachiyomi.data.preference.DelayedLibrarySuggestionsJob +import eu.kanade.tachiyomi.data.preference.MANGA_HAS_UNREAD +import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED +import eu.kanade.tachiyomi.data.preference.MANGA_NON_READ +import eu.kanade.tachiyomi.data.preference.changesIn import eu.kanade.tachiyomi.ui.category.CategoryController import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.ui.library.display.TabbedLibraryDisplaySheet @@ -30,6 +36,7 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.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 f571862d83..c03b434d07 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,9 +3,6 @@ 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 @@ -33,6 +30,9 @@ 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 f9798ea8f8..d60a938d20 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,8 +14,6 @@ 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 @@ -47,6 +45,8 @@ 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 21d732ce2b..6ae7b0be1f 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,9 +23,6 @@ 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 @@ -71,8 +68,10 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.parcelize.Parcelize import uy.kohesive.injekt.injectLazy -import java.util.Date -import java.util.Locale +import yokai.domain.base.BasePreferences +import yokai.domain.base.BasePreferences.ExtensionInstaller +import yokai.presentation.extension.repo.ExtensionRepoController +import java.util.* 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 8571e675a9..79aa56c742 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,6 +7,7 @@ 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 f99e815b5a..b11d1fe133 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,7 +1,6 @@ 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 @@ -40,6 +39,7 @@ 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 98c9a5c94d..fe7a50c216 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/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterRecognition.kt index 33df08f29d..3e6292406e 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,6 +2,7 @@ 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 bd0c944828..d9590305dd 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 dev.yokai.domain.ComposableAlertDialog +import 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 621f3f3ab0..b6f85365cb 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,14 +17,11 @@ 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 @@ -54,26 +51,6 @@ 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. * @@ -125,30 +102,6 @@ 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/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt index 4abbe9a1f5..5ddb330b16 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 bf87207972..e1847819ea 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/dev/yokai/core/CrashlyticsLogWriter.kt b/app/src/main/java/yokai/core/CrashlyticsLogWriter.kt similarity index 97% rename from app/src/main/java/dev/yokai/core/CrashlyticsLogWriter.kt rename to app/src/main/java/yokai/core/CrashlyticsLogWriter.kt index 16c3508d86..f8934e84fd 100644 --- a/app/src/main/java/dev/yokai/core/CrashlyticsLogWriter.kt +++ b/app/src/main/java/yokai/core/CrashlyticsLogWriter.kt @@ -1,4 +1,4 @@ -package dev.yokai.core +package yokai.core import co.touchlab.kermit.DefaultFormatter import co.touchlab.kermit.LogWriter diff --git a/app/src/main/java/dev/yokai/core/di/AppModule.kt b/app/src/main/java/yokai/core/di/AppModule.kt similarity index 84% rename from app/src/main/java/dev/yokai/core/di/AppModule.kt rename to app/src/main/java/yokai/core/di/AppModule.kt index fd2081855f..7c4fb05ce1 100644 --- a/app/src/main/java/dev/yokai/core/di/AppModule.kt +++ b/app/src/main/java/yokai/core/di/AppModule.kt @@ -1,15 +1,13 @@ -package dev.yokai.core.di +package 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 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 com.chuckerteam.chucker.api.ChuckerCollector +import com.chuckerteam.chucker.api.ChuckerInterceptor +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.cache.CoverCache @@ -35,6 +33,10 @@ import uy.kohesive.injekt.api.InjektRegistrar import uy.kohesive.injekt.api.addSingleton import uy.kohesive.injekt.api.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 { @@ -89,7 +91,23 @@ class AppModule(val app: Application) : InjektModule { addSingletonFactory { CoverCache(app) } - addSingletonFactory { NetworkHelper(app) } + addSingletonFactory { + NetworkHelper( + app, + get(), + ) { builder -> + if (BuildConfig.DEBUG) { + builder.addInterceptor( + ChuckerInterceptor.Builder(app) + .collector(ChuckerCollector(app)) + .maxContentLength(250000L) + .redactHeaders(emptySet()) + .alwaysReadResponseBody(false) + .build(), + ) + } + } + } addSingletonFactory { JavaScriptEngine(app) } diff --git a/app/src/main/java/yokai/core/di/DomainModule.kt b/app/src/main/java/yokai/core/di/DomainModule.kt new file mode 100644 index 0000000000..9fe30c7eaf --- /dev/null +++ b/app/src/main/java/yokai/core/di/DomainModule.kt @@ -0,0 +1,56 @@ +package yokai.core.di + +import uy.kohesive.injekt.api.InjektModule +import uy.kohesive.injekt.api.InjektRegistrar +import uy.kohesive.injekt.api.addFactory +import uy.kohesive.injekt.api.addSingletonFactory +import uy.kohesive.injekt.api.get +import yokai.data.chapter.ChapterRepositoryImpl +import yokai.data.extension.repo.ExtensionRepoRepositoryImpl +import yokai.data.library.custom.CustomMangaRepositoryImpl +import yokai.data.manga.MangaRepositoryImpl +import yokai.domain.chapter.ChapterRepository +import yokai.domain.chapter.interactor.GetAvailableScanlators +import yokai.domain.chapter.interactor.GetChapters +import yokai.domain.extension.interactor.TrustExtension +import yokai.domain.extension.repo.ExtensionRepoRepository +import yokai.domain.extension.repo.interactor.CreateExtensionRepo +import yokai.domain.extension.repo.interactor.DeleteExtensionRepo +import yokai.domain.extension.repo.interactor.GetExtensionRepo +import yokai.domain.extension.repo.interactor.GetExtensionRepoCount +import yokai.domain.extension.repo.interactor.ReplaceExtensionRepo +import yokai.domain.extension.repo.interactor.UpdateExtensionRepo +import yokai.domain.library.custom.CustomMangaRepository +import yokai.domain.library.custom.interactor.CreateCustomManga +import yokai.domain.library.custom.interactor.DeleteCustomManga +import yokai.domain.library.custom.interactor.GetCustomManga +import yokai.domain.library.custom.interactor.RelinkCustomManga +import yokai.domain.manga.MangaRepository +import yokai.domain.manga.interactor.GetLibraryManga + +class DomainModule : InjektModule { + override fun InjektRegistrar.registerInjectables() { + addFactory { TrustExtension(get(), get()) } + + addSingletonFactory { 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/dev/yokai/core/di/PreferenceModule.kt b/app/src/main/java/yokai/core/di/PreferenceModule.kt similarity index 76% rename from app/src/main/java/dev/yokai/core/di/PreferenceModule.kt rename to app/src/main/java/yokai/core/di/PreferenceModule.kt index 10698079c0..cd50285aa7 100644 --- a/app/src/main/java/dev/yokai/core/di/PreferenceModule.kt +++ b/app/src/main/java/yokai/core/di/PreferenceModule.kt @@ -1,22 +1,23 @@ -package dev.yokai.core.di +package 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() { @@ -36,6 +37,8 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { DownloadPreferences(get()) } + addSingletonFactory { NetworkPreferences(get()) } + addSingletonFactory { PreferencesHelper( context = application, diff --git a/app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt b/app/src/main/java/yokai/core/metadata/ComicInfo.kt similarity index 99% rename from app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt rename to app/src/main/java/yokai/core/metadata/ComicInfo.kt index a4be9ec371..268888b756 100644 --- a/app/src/main/java/dev/yokai/core/metadata/ComicInfo.kt +++ b/app/src/main/java/yokai/core/metadata/ComicInfo.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.metadata +package yokai.core.metadata import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga diff --git a/app/src/main/java/dev/yokai/core/migration/Migration.kt b/app/src/main/java/yokai/core/migration/Migration.kt similarity index 94% rename from app/src/main/java/dev/yokai/core/migration/Migration.kt rename to app/src/main/java/yokai/core/migration/Migration.kt index 16832a4f9e..d27e59d705 100644 --- a/app/src/main/java/dev/yokai/core/migration/Migration.kt +++ b/app/src/main/java/yokai/core/migration/Migration.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration interface Migration { val version: Float diff --git a/app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt b/app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt similarity index 60% rename from app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt rename to app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt index 6d3a687682..51f548b25d 100644 --- a/app/src/main/java/dev/yokai/core/migration/MigrationCompletedListener.kt +++ b/app/src/main/java/yokai/core/migration/MigrationCompletedListener.kt @@ -1,3 +1,3 @@ -package dev.yokai.core.migration +package yokai.core.migration typealias MigrationCompletedListener = () -> Unit diff --git a/app/src/main/java/dev/yokai/core/migration/MigrationContext.kt b/app/src/main/java/yokai/core/migration/MigrationContext.kt similarity index 84% rename from app/src/main/java/dev/yokai/core/migration/MigrationContext.kt rename to app/src/main/java/yokai/core/migration/MigrationContext.kt index 16c8d096b7..ceb1f37971 100644 --- a/app/src/main/java/dev/yokai/core/migration/MigrationContext.kt +++ b/app/src/main/java/yokai/core/migration/MigrationContext.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration import uy.kohesive.injekt.Injekt diff --git a/app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt b/app/src/main/java/yokai/core/migration/MigrationJobFactory.kt similarity index 97% rename from app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt rename to app/src/main/java/yokai/core/migration/MigrationJobFactory.kt index 5c66f0e94d..dc9969091c 100644 --- a/app/src/main/java/dev/yokai/core/migration/MigrationJobFactory.kt +++ b/app/src/main/java/yokai/core/migration/MigrationJobFactory.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration import co.touchlab.kermit.Logger import kotlinx.coroutines.CompletableDeferred diff --git a/app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt b/app/src/main/java/yokai/core/migration/MigrationStrategy.kt similarity index 98% rename from app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt rename to app/src/main/java/yokai/core/migration/MigrationStrategy.kt index 56e44bf8cc..2cc7ac71b2 100644 --- a/app/src/main/java/dev/yokai/core/migration/MigrationStrategy.kt +++ b/app/src/main/java/yokai/core/migration/MigrationStrategy.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt b/app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt similarity index 95% rename from app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt rename to app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt index 2094ffebb0..781a177871 100644 --- a/app/src/main/java/dev/yokai/core/migration/MigrationStrategyFactory.kt +++ b/app/src/main/java/yokai/core/migration/MigrationStrategyFactory.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration class MigrationStrategyFactory( private val factory: MigrationJobFactory, diff --git a/app/src/main/java/dev/yokai/core/migration/Migrator.kt b/app/src/main/java/yokai/core/migration/Migrator.kt similarity index 97% rename from app/src/main/java/dev/yokai/core/migration/Migrator.kt rename to app/src/main/java/yokai/core/migration/Migrator.kt index 52ecbe105f..89b83b4830 100644 --- a/app/src/main/java/dev/yokai/core/migration/Migrator.kt +++ b/app/src/main/java/yokai/core/migration/Migrator.kt @@ -1,4 +1,4 @@ -package dev.yokai.core.migration +package yokai.core.migration import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt b/app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt similarity index 82% rename from app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt index 3b2793be1d..8ad3be15b6 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/ChapterCacheMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/ChapterCacheMigration.kt @@ -1,8 +1,8 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App +import yokai.core.migration.Migration +import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt b/app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt similarity index 83% rename from app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt index ad1f809258..2ba0635cea 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/CoverCacheMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/CoverCacheMigration.kt @@ -1,8 +1,8 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App +import yokai.core.migration.Migration +import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt b/app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt similarity index 73% rename from app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt index ecc043d567..609c7f0850 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/CustomInfoMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/CustomInfoMigration.kt @@ -1,8 +1,8 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.ui.library.LibraryPresenter +import yokai.core.migration.Migration +import yokai.core.migration.MigrationContext class CustomInfoMigration : Migration { override val version: Float = 66f diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt b/app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt similarity index 82% rename from app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt index ff030c0495..f4ff91ce3f 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/CutoutMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/CutoutMigration.kt @@ -1,14 +1,14 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/DoHMigration.kt b/app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt similarity index 86% rename from app/src/main/java/dev/yokai/core/migration/migrations/DoHMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt index dc8fa5e6fe..a4c075faa0 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/DoHMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/DoHMigration.kt @@ -1,12 +1,12 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt b/app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt similarity index 74% rename from app/src/main/java/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt index 495a78b48d..617d5b4d04 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/DownloadedChaptersMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/DownloadedChaptersMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt b/app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt similarity index 81% rename from app/src/main/java/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt index 4a4d4d8589..94606f6287 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/EnabledLanguageMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/EnabledLanguageMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt b/app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt similarity index 82% rename from app/src/main/java/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt index 8156de774c..fde6f98c2e 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/EvernoteJobUpgradeMigration.kt @@ -1,11 +1,11 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt b/app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt similarity index 87% rename from app/src/main/java/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt index 1993733182..d3aada9dd1 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/ExtensionInstallerEnumMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt similarity index 76% rename from app/src/main/java/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt index ab21e51f0d..f46459c4d3 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/InternalChapterCacheUpdateMigration.kt @@ -1,8 +1,8 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App +import yokai.core.migration.Migration +import yokai.core.migration.MigrationContext import java.io.File /** diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt b/app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt similarity index 87% rename from app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt index 643c74b9a4..a93d94d81e 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/LibrarySortMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/LibrarySortMigration.kt @@ -1,11 +1,11 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt b/app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt similarity index 76% rename from app/src/main/java/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt index 82ff102477..8076de703b 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/LibraryUpdateResetMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/Migrations.kt b/app/src/main/java/yokai/core/migration/migrations/Migrations.kt similarity index 90% rename from app/src/main/java/dev/yokai/core/migration/migrations/Migrations.kt rename to app/src/main/java/yokai/core/migration/migrations/Migrations.kt index db933c0c41..67c33c0a11 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/Migrations.kt +++ b/app/src/main/java/yokai/core/migration/migrations/Migrations.kt @@ -1,8 +1,8 @@ -package dev.yokai.core.migration.migrations +package 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,4 +36,5 @@ val migrations: ImmutableList = persistentListOf( ExtensionInstallerEnumMigration(), CutoutMigration(), RepoJsonMigration(), + NetworkPrefsMigration(), ) diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt b/app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt similarity index 85% rename from app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt index 8585ba6173..c299c511c1 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/MyAnimeListMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/MyAnimeListMigration.kt @@ -1,11 +1,11 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/NetworkPrefsMigration.kt b/app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt new file mode 100644 index 0000000000..425bc9135d --- /dev/null +++ b/app/src/main/java/yokai/core/migration/migrations/NetworkPrefsMigration.kt @@ -0,0 +1,23 @@ +package yokai.core.migration.migrations + +import androidx.preference.PreferenceManager +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 = 138f + + override suspend fun invoke(migrationContext: MigrationContext): Boolean { + val context: App = migrationContext.get() ?: return false + val preferences: NetworkPreferences = migrationContext.get() ?: return false + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + + val dohProvider = prefs.getInt("doh_provider", -1) + if (dohProvider > -1) { + preferences.dohProvider().set(dohProvider) + } + return true + } +} diff --git a/app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt b/app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt similarity index 90% rename from app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt index 5c3fe365e1..7798916d35 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/PrefsMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/PrefsMigration.kt @@ -1,12 +1,12 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt similarity index 87% rename from app/src/main/java/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt index 0d3df4acab..b75355df8d 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/ReaderUpdateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/ReaderUpdateMigration.kt @@ -1,12 +1,12 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/RepoJsonMigration.kt b/app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt similarity index 82% rename from app/src/main/java/dev/yokai/core/migration/migrations/RepoJsonMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt index 2f2318bf66..9ef7b1b3d2 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/RepoJsonMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/RepoJsonMigration.kt @@ -1,13 +1,13 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt b/app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt similarity index 91% rename from app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt index 48a24fa251..ae3da7a410 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeEnumMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/RotationTypeEnumMigration.kt @@ -1,11 +1,11 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/RotationTypeMigration.kt b/app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt similarity index 81% rename from app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt index a990cbf873..d505aac434 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/RotationTypeMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/RotationTypeMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt similarity index 78% rename from app/src/main/java/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt index 6006fd171e..f0b4bf0792 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/SetupAppUpdateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/SetupAppUpdateMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt similarity index 75% rename from app/src/main/java/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt index b535e435cb..c8ae6a0c36 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/SetupBackupCreateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/SetupBackupCreateMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt similarity index 75% rename from app/src/main/java/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt index 507a5eb6d1..225d52d26f 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/SetupExtensionUpdateMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt b/app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt similarity index 75% rename from app/src/main/java/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt index fd6d3de533..029d9e91d2 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/SetupLibraryUpdateMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/ShortcutsMigration.kt b/app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt similarity index 91% rename from app/src/main/java/dev/yokai/core/migration/migrations/ShortcutsMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt index 195a638c95..5512494c40 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/ShortcutsMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/ShortcutsMigration.kt @@ -1,13 +1,13 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/ThePurgeMigration.kt b/app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt similarity index 79% rename from app/src/main/java/dev/yokai/core/migration/migrations/ThePurgeMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt index e739dd15fc..5953873ea9 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/ThePurgeMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/ThePurgeMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package 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/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt b/app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt similarity index 86% rename from app/src/main/java/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt index 6aff6401ff..a3200a4d60 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/TrackerPrivateSettingsMigration.kt @@ -1,9 +1,9 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt b/app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt similarity index 85% rename from app/src/main/java/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt index 1569b96d18..a86649a6eb 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/UpdateIntervalMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/UpdateIntervalMigration.kt @@ -1,10 +1,10 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.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/dev/yokai/core/migration/migrations/WorkManagerMigration.kt b/app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt similarity index 87% rename from app/src/main/java/dev/yokai/core/migration/migrations/WorkManagerMigration.kt rename to app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt index 9eff8814cf..2417b203d7 100644 --- a/app/src/main/java/dev/yokai/core/migration/migrations/WorkManagerMigration.kt +++ b/app/src/main/java/yokai/core/migration/migrations/WorkManagerMigration.kt @@ -1,7 +1,5 @@ -package dev.yokai.core.migration.migrations +package yokai.core.migration.migrations -import dev.yokai.core.migration.Migration -import dev.yokai.core.migration.MigrationContext import eu.kanade.tachiyomi.App import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.backup.create.BackupCreatorJob @@ -9,6 +7,8 @@ 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/dev/yokai/data/AndroidDatabaseHandler.kt b/app/src/main/java/yokai/data/AndroidDatabaseHandler.kt similarity index 99% rename from app/src/main/java/dev/yokai/data/AndroidDatabaseHandler.kt rename to app/src/main/java/yokai/data/AndroidDatabaseHandler.kt index 8ed92f3e92..e66d3b2fe8 100644 --- a/app/src/main/java/dev/yokai/data/AndroidDatabaseHandler.kt +++ b/app/src/main/java/yokai/data/AndroidDatabaseHandler.kt @@ -1,4 +1,4 @@ -package dev.yokai.data +package yokai.data import app.cash.sqldelight.Query import app.cash.sqldelight.coroutines.asFlow diff --git a/app/src/main/java/dev/yokai/data/DatabaseAdapter.kt b/app/src/main/java/yokai/data/DatabaseAdapter.kt similarity index 93% rename from app/src/main/java/dev/yokai/data/DatabaseAdapter.kt rename to app/src/main/java/yokai/data/DatabaseAdapter.kt index d26141845e..9c60ce4a38 100644 --- a/app/src/main/java/dev/yokai/data/DatabaseAdapter.kt +++ b/app/src/main/java/yokai/data/DatabaseAdapter.kt @@ -1,7 +1,7 @@ -package dev.yokai.data +package yokai.data import app.cash.sqldelight.ColumnAdapter -import java.util.Date +import java.util.* val dateAdapter = object : ColumnAdapter { override fun decode(databaseValue: Long): Date = Date(databaseValue) diff --git a/app/src/main/java/dev/yokai/data/DatabaseHandler.kt b/app/src/main/java/yokai/data/DatabaseHandler.kt similarity index 94% rename from app/src/main/java/dev/yokai/data/DatabaseHandler.kt rename to app/src/main/java/yokai/data/DatabaseHandler.kt index 5232f8cb2e..8297d8a927 100644 --- a/app/src/main/java/dev/yokai/data/DatabaseHandler.kt +++ b/app/src/main/java/yokai/data/DatabaseHandler.kt @@ -1,7 +1,6 @@ -package dev.yokai.data +package 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/dev/yokai/data/TransactionContext.kt b/app/src/main/java/yokai/data/TransactionContext.kt similarity index 98% rename from app/src/main/java/dev/yokai/data/TransactionContext.kt rename to app/src/main/java/yokai/data/TransactionContext.kt index 53e0086c1b..14e74a50d7 100644 --- a/app/src/main/java/dev/yokai/data/TransactionContext.kt +++ b/app/src/main/java/yokai/data/TransactionContext.kt @@ -1,4 +1,4 @@ -package dev.yokai.data +package 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.RejectedExecutionException -import java.util.concurrent.atomic.AtomicInteger +import java.util.concurrent.* +import java.util.concurrent.atomic.* import kotlin.coroutines.ContinuationInterceptor import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext diff --git a/app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt b/app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt similarity index 89% rename from app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt rename to app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt index 95b2375261..9d471e5f10 100644 --- a/app/src/main/java/dev/yokai/data/chapter/ChapterRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/chapter/ChapterRepositoryImpl.kt @@ -1,10 +1,10 @@ -package dev.yokai.data.chapter +package 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/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt b/app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt similarity index 90% rename from app/src/main/java/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt rename to app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt index dbcce92598..a85e870b30 100644 --- a/app/src/main/java/dev/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/extension/repo/ExtensionRepoRepositoryImpl.kt @@ -1,12 +1,12 @@ -package dev.yokai.data.extension.repo +package 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/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt b/app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt similarity index 90% rename from app/src/main/java/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt rename to app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt index 4d290162cf..b599c5c49f 100644 --- a/app/src/main/java/dev/yokai/data/library/custom/CustomMangaRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/library/custom/CustomMangaRepositoryImpl.kt @@ -1,13 +1,13 @@ -package dev.yokai.data.library.custom +package 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/dev/yokai/data/manga/MangaRepositoryImpl.kt b/app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt similarity index 87% rename from app/src/main/java/dev/yokai/data/manga/MangaRepositoryImpl.kt rename to app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt index 0874543ac6..71f190e9ff 100644 --- a/app/src/main/java/dev/yokai/data/manga/MangaRepositoryImpl.kt +++ b/app/src/main/java/yokai/data/manga/MangaRepositoryImpl.kt @@ -1,10 +1,10 @@ -package dev.yokai.data.manga +package 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/dev/yokai/domain/ComposableAlertDialog.kt b/app/src/main/java/yokai/domain/ComposableAlertDialog.kt similarity index 92% rename from app/src/main/java/dev/yokai/domain/ComposableAlertDialog.kt rename to app/src/main/java/yokai/domain/ComposableAlertDialog.kt index aaaa768a90..9be777dd38 100644 --- a/app/src/main/java/dev/yokai/domain/ComposableAlertDialog.kt +++ b/app/src/main/java/yokai/domain/ComposableAlertDialog.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain +package yokai.domain import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/app/src/main/java/dev/yokai/domain/Result.kt b/app/src/main/java/yokai/domain/Result.kt similarity index 89% rename from app/src/main/java/dev/yokai/domain/Result.kt rename to app/src/main/java/yokai/domain/Result.kt index 5267482aac..0af255791d 100644 --- a/app/src/main/java/dev/yokai/domain/Result.kt +++ b/app/src/main/java/yokai/domain/Result.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain +package yokai.domain sealed class Result { data class Success(val data: T? = null) : Result() diff --git a/app/src/main/java/dev/yokai/domain/SplashState.kt b/app/src/main/java/yokai/domain/SplashState.kt similarity index 72% rename from app/src/main/java/dev/yokai/domain/SplashState.kt rename to app/src/main/java/yokai/domain/SplashState.kt index be63e5bf26..2cf0df755e 100644 --- a/app/src/main/java/dev/yokai/domain/SplashState.kt +++ b/app/src/main/java/yokai/domain/SplashState.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain +package yokai.domain class SplashState { var shown = false diff --git a/app/src/main/java/dev/yokai/domain/base/BasePreferences.kt b/app/src/main/java/yokai/domain/base/BasePreferences.kt similarity index 98% rename from app/src/main/java/dev/yokai/domain/base/BasePreferences.kt rename to app/src/main/java/yokai/domain/base/BasePreferences.kt index d141611d19..2d2754d087 100644 --- a/app/src/main/java/dev/yokai/domain/base/BasePreferences.kt +++ b/app/src/main/java/yokai/domain/base/BasePreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.base +package yokai.domain.base import androidx.annotation.StringRes import eu.kanade.tachiyomi.R diff --git a/app/src/main/java/dev/yokai/domain/base/models/Version.kt b/app/src/main/java/yokai/domain/base/models/Version.kt similarity index 98% rename from app/src/main/java/dev/yokai/domain/base/models/Version.kt rename to app/src/main/java/yokai/domain/base/models/Version.kt index d80e95dfd8..c1c70e11f1 100644 --- a/app/src/main/java/dev/yokai/domain/base/models/Version.kt +++ b/app/src/main/java/yokai/domain/base/models/Version.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.base.models +package yokai.domain.base.models data class Version( val type: Type, diff --git a/app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt b/app/src/main/java/yokai/domain/chapter/ChapterRepository.kt similarity index 93% rename from app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt rename to app/src/main/java/yokai/domain/chapter/ChapterRepository.kt index 34c0d23e75..c241b3f291 100644 --- a/app/src/main/java/dev/yokai/domain/chapter/ChapterRepository.kt +++ b/app/src/main/java/yokai/domain/chapter/ChapterRepository.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.chapter +package yokai.domain.chapter import eu.kanade.tachiyomi.data.database.models.Chapter import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt b/app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt similarity index 74% rename from app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt rename to app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt index e5dfceb7d5..8fd46a6381 100644 --- a/app/src/main/java/dev/yokai/domain/chapter/interactor/GetAvailableScanlators.kt +++ b/app/src/main/java/yokai/domain/chapter/interactor/GetAvailableScanlators.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.chapter.interactor +package yokai.domain.chapter.interactor -import dev.yokai.domain.chapter.ChapterRepository +import yokai.domain.chapter.ChapterRepository class GetAvailableScanlators( private val chapterRepository: ChapterRepository, diff --git a/app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt b/app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt similarity index 85% rename from app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt rename to app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt index 66bb1a4bb1..66cea3f52e 100644 --- a/app/src/main/java/dev/yokai/domain/chapter/interactor/GetChapters.kt +++ b/app/src/main/java/yokai/domain/chapter/interactor/GetChapters.kt @@ -1,7 +1,7 @@ -package dev.yokai.domain.chapter.interactor +package 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/dev/yokai/domain/download/DownloadPreferences.kt b/app/src/main/java/yokai/domain/download/DownloadPreferences.kt similarity index 86% rename from app/src/main/java/dev/yokai/domain/download/DownloadPreferences.kt rename to app/src/main/java/yokai/domain/download/DownloadPreferences.kt index 67cf5d9363..6b92f6281e 100644 --- a/app/src/main/java/dev/yokai/domain/download/DownloadPreferences.kt +++ b/app/src/main/java/yokai/domain/download/DownloadPreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.download +package yokai.domain.download import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt b/app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt similarity index 84% rename from app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt rename to app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt index bfedc29ef6..356ebeb1a2 100644 --- a/app/src/main/java/dev/yokai/domain/extension/interactor/TrustExtension.kt +++ b/app/src/main/java/yokai/domain/extension/interactor/TrustExtension.kt @@ -1,12 +1,10 @@ -package dev.yokai.domain.extension.interactor +package 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 uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get +import yokai.domain.extension.repo.ExtensionRepoRepository +import yokai.domain.source.SourcePreferences class TrustExtension( private val extensionRepoRepository: ExtensionRepoRepository, diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt b/app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt similarity index 91% rename from app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt rename to app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt index 10416beafc..b64d9cfb53 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/ExtensionRepoRepository.kt +++ b/app/src/main/java/yokai/domain/extension/repo/ExtensionRepoRepository.kt @@ -1,7 +1,7 @@ -package dev.yokai.domain.extension.repo +package 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/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt b/app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt similarity index 86% rename from app/src/main/java/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt rename to app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt index bf7762a556..397705b526 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt +++ b/app/src/main/java/yokai/domain/extension/repo/exception/SaveExtensionRepoException.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.extension.repo.exception +package yokai.domain.extension.repo.exception import java.io.IOException diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt similarity index 89% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt index dedb58698b..c7e793a877 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/CreateExtensionRepo.kt @@ -1,13 +1,13 @@ -package dev.yokai.domain.extension.repo.interactor +package 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/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt similarity index 64% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt index b0882df664..19926d3589 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/DeleteExtensionRepo.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.extension.repo.interactor +package yokai.domain.extension.repo.interactor -import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import yokai.domain.extension.repo.ExtensionRepoRepository class DeleteExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt similarity index 63% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt index 52be3f55c8..150afbd9ed 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepo.kt @@ -1,8 +1,8 @@ -package dev.yokai.domain.extension.repo.interactor +package 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/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt similarity index 58% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt index e41f63498b..e753d6ab2c 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/GetExtensionRepoCount.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.extension.repo.interactor +package yokai.domain.extension.repo.interactor -import dev.yokai.domain.extension.repo.ExtensionRepoRepository +import yokai.domain.extension.repo.ExtensionRepoRepository class GetExtensionRepoCount( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt similarity index 54% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt index 37f5fcea7b..5310ff81bb 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/ReplaceExtensionRepo.kt @@ -1,7 +1,7 @@ -package dev.yokai.domain.extension.repo.interactor +package yokai.domain.extension.repo.interactor -import dev.yokai.domain.extension.repo.ExtensionRepoRepository -import dev.yokai.domain.extension.repo.model.ExtensionRepo +import yokai.domain.extension.repo.ExtensionRepoRepository +import yokai.domain.extension.repo.model.ExtensionRepo class ReplaceExtensionRepo( private val extensionRepoRepository: ExtensionRepoRepository diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt similarity index 79% rename from app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt index 19bcbe4e02..8494bc931e 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/interactor/UpdateExtensionRepo.kt @@ -1,12 +1,12 @@ -package dev.yokai.domain.extension.repo.interactor +package 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/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt b/app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt similarity index 78% rename from app/src/main/java/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt rename to app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt index fc2eaa7fb5..338ea18944 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/model/ExtensionRepo.kt +++ b/app/src/main/java/yokai/domain/extension/repo/model/ExtensionRepo.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.extension.repo.model +package yokai.domain.extension.repo.model data class ExtensionRepo( val baseUrl: String, diff --git a/app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt b/app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt similarity index 94% rename from app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt rename to app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt index 7af640dc3c..6facca5e46 100644 --- a/app/src/main/java/dev/yokai/domain/extension/repo/service/ExtensionRepoService.kt +++ b/app/src/main/java/yokai/domain/extension/repo/service/ExtensionRepoService.kt @@ -1,7 +1,6 @@ -package dev.yokai.domain.extension.repo.service +package 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 @@ -13,6 +12,7 @@ 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/dev/yokai/domain/library/custom/CustomMangaRepository.kt b/app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt similarity index 90% rename from app/src/main/java/dev/yokai/domain/library/custom/CustomMangaRepository.kt rename to app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt index a2cf529a2f..80cf303788 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/CustomMangaRepository.kt +++ b/app/src/main/java/yokai/domain/library/custom/CustomMangaRepository.kt @@ -1,7 +1,7 @@ -package dev.yokai.domain.library.custom +package 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/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt b/app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt similarity index 86% rename from app/src/main/java/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt rename to app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt index d4af3e5a18..2297c7f1dc 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/exception/SaveCustomMangaException.kt +++ b/app/src/main/java/yokai/domain/library/custom/exception/SaveCustomMangaException.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.library.custom.exception +package yokai.domain.library.custom.exception import java.io.IOException diff --git a/app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt b/app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt similarity index 75% rename from app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt rename to app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt index a1bf1f392d..f9876761cd 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/interactor/CreateCustomManga.kt +++ b/app/src/main/java/yokai/domain/library/custom/interactor/CreateCustomManga.kt @@ -1,8 +1,8 @@ -package dev.yokai.domain.library.custom.interactor +package yokai.domain.library.custom.interactor -import dev.yokai.domain.library.custom.CustomMangaRepository -import dev.yokai.domain.library.custom.exception.SaveCustomMangaException -import dev.yokai.domain.library.custom.model.CustomMangaInfo +import yokai.domain.library.custom.CustomMangaRepository +import yokai.domain.library.custom.exception.SaveCustomMangaException +import yokai.domain.library.custom.model.CustomMangaInfo class CreateCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt b/app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt similarity index 71% rename from app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt rename to app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt index 5551f4d4d7..c1c077b48f 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/interactor/DeleteCustomManga.kt +++ b/app/src/main/java/yokai/domain/library/custom/interactor/DeleteCustomManga.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.library.custom.interactor +package yokai.domain.library.custom.interactor -import dev.yokai.domain.library.custom.CustomMangaRepository +import yokai.domain.library.custom.CustomMangaRepository class DeleteCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt b/app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt similarity index 65% rename from app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt rename to app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt index a01fbfc38b..848b5ec53e 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/interactor/GetCustomManga.kt +++ b/app/src/main/java/yokai/domain/library/custom/interactor/GetCustomManga.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.library.custom.interactor +package yokai.domain.library.custom.interactor -import dev.yokai.domain.library.custom.CustomMangaRepository +import yokai.domain.library.custom.CustomMangaRepository class GetCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt b/app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt similarity index 63% rename from app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt rename to app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt index 8eaa50161f..58d322336c 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/interactor/RelinkCustomManga.kt +++ b/app/src/main/java/yokai/domain/library/custom/interactor/RelinkCustomManga.kt @@ -1,6 +1,6 @@ -package dev.yokai.domain.library.custom.interactor +package yokai.domain.library.custom.interactor -import dev.yokai.domain.library.custom.CustomMangaRepository +import yokai.domain.library.custom.CustomMangaRepository class RelinkCustomManga( private val customMangaRepository: CustomMangaRepository, diff --git a/app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt b/app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt similarity index 95% rename from app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt rename to app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt index 82b4014da0..ac658f6a6f 100644 --- a/app/src/main/java/dev/yokai/domain/library/custom/model/CustomMangaInfo.kt +++ b/app/src/main/java/yokai/domain/library/custom/model/CustomMangaInfo.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.library.custom.model +package 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/dev/yokai/domain/manga/MangaRepository.kt b/app/src/main/java/yokai/domain/manga/MangaRepository.kt similarity index 92% rename from app/src/main/java/dev/yokai/domain/manga/MangaRepository.kt rename to app/src/main/java/yokai/domain/manga/MangaRepository.kt index 5cf2a537ba..24f67af320 100644 --- a/app/src/main/java/dev/yokai/domain/manga/MangaRepository.kt +++ b/app/src/main/java/yokai/domain/manga/MangaRepository.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.manga +package 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/dev/yokai/domain/manga/interactor/GetLibraryManga.kt b/app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt similarity index 79% rename from app/src/main/java/dev/yokai/domain/manga/interactor/GetLibraryManga.kt rename to app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt index ffe03f9d5f..b2d3904107 100644 --- a/app/src/main/java/dev/yokai/domain/manga/interactor/GetLibraryManga.kt +++ b/app/src/main/java/yokai/domain/manga/interactor/GetLibraryManga.kt @@ -1,8 +1,8 @@ -package dev.yokai.domain.manga.interactor +package 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/dev/yokai/domain/recents/RecentsPreferences.kt b/app/src/main/java/yokai/domain/recents/RecentsPreferences.kt similarity index 95% rename from app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt rename to app/src/main/java/yokai/domain/recents/RecentsPreferences.kt index 7777aa8898..8f361b04b3 100644 --- a/app/src/main/java/dev/yokai/domain/recents/RecentsPreferences.kt +++ b/app/src/main/java/yokai/domain/recents/RecentsPreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.recents +package yokai.domain.recents import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.getEnum diff --git a/app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt b/app/src/main/java/yokai/domain/source/SourcePreferences.kt similarity index 87% rename from app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt rename to app/src/main/java/yokai/domain/source/SourcePreferences.kt index ee9158ad05..be863ebf5b 100644 --- a/app/src/main/java/dev/yokai/domain/source/SourcePreferences.kt +++ b/app/src/main/java/yokai/domain/source/SourcePreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.source +package yokai.domain.source import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/dev/yokai/domain/storage/StorageManager.kt b/app/src/main/java/yokai/domain/storage/StorageManager.kt similarity index 98% rename from app/src/main/java/dev/yokai/domain/storage/StorageManager.kt rename to app/src/main/java/yokai/domain/storage/StorageManager.kt index c5ab262c68..2d47d57232 100644 --- a/app/src/main/java/dev/yokai/domain/storage/StorageManager.kt +++ b/app/src/main/java/yokai/domain/storage/StorageManager.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.storage +package yokai.domain.storage import android.content.Context import androidx.core.net.toUri diff --git a/app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt b/app/src/main/java/yokai/domain/storage/StoragePreferences.kt similarity index 92% rename from app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt rename to app/src/main/java/yokai/domain/storage/StoragePreferences.kt index a8abb3fb69..a17a9178e3 100644 --- a/app/src/main/java/dev/yokai/domain/storage/StoragePreferences.kt +++ b/app/src/main/java/yokai/domain/storage/StoragePreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.storage +package yokai.domain.storage import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.core.preference.PreferenceStore diff --git a/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt b/app/src/main/java/yokai/domain/ui/UiPreferences.kt similarity index 76% rename from app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt rename to app/src/main/java/yokai/domain/ui/UiPreferences.kt index 0982f39082..64abb74567 100644 --- a/app/src/main/java/dev/yokai/domain/ui/UiPreferences.kt +++ b/app/src/main/java/yokai/domain/ui/UiPreferences.kt @@ -1,9 +1,7 @@ -package dev.yokai.domain.ui +package 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/dev/yokai/domain/ui/settings/ReaderPreferences.kt b/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt similarity index 97% rename from app/src/main/java/dev/yokai/domain/ui/settings/ReaderPreferences.kt rename to app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt index 839c4e7d21..74a87e464f 100644 --- a/app/src/main/java/dev/yokai/domain/ui/settings/ReaderPreferences.kt +++ b/app/src/main/java/yokai/domain/ui/settings/ReaderPreferences.kt @@ -1,4 +1,4 @@ -package dev.yokai.domain.ui.settings +package yokai.domain.ui.settings import androidx.annotation.StringRes import eu.kanade.tachiyomi.R diff --git a/app/src/main/java/dev/yokai/presentation/Scaffold.kt b/app/src/main/java/yokai/presentation/Scaffold.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/Scaffold.kt rename to app/src/main/java/yokai/presentation/Scaffold.kt index 9c1b75cb9a..29169a7a5f 100644 --- a/app/src/main/java/dev/yokai/presentation/Scaffold.kt +++ b/app/src/main/java/yokai/presentation/Scaffold.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation +package 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/dev/yokai/presentation/component/AppIcon.kt b/app/src/main/java/yokai/presentation/component/AppIcon.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/component/AppIcon.kt rename to app/src/main/java/yokai/presentation/component/AppIcon.kt index 33e7c275b0..b90a0b559f 100644 --- a/app/src/main/java/dev/yokai/presentation/component/AppIcon.kt +++ b/app/src/main/java/yokai/presentation/component/AppIcon.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package yokai.presentation.component import android.graphics.Bitmap import android.graphics.drawable.AdaptiveIconDrawable diff --git a/app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt b/app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt similarity index 99% rename from app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt rename to app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt index 6a85f90196..55a4b729fa 100644 --- a/app/src/main/java/dev/yokai/presentation/component/CircularProgressIndicator.kt +++ b/app/src/main/java/yokai/presentation/component/CircularProgressIndicator.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package yokai.presentation.component import androidx.compose.animation.AnimatedContent import androidx.compose.animation.core.LinearEasing diff --git a/app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt b/app/src/main/java/yokai/presentation/component/EmptyScreen.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt rename to app/src/main/java/yokai/presentation/component/EmptyScreen.kt index 6b5dfea057..dc9d4c66df 100644 --- a/app/src/main/java/dev/yokai/presentation/component/EmptyScreen.kt +++ b/app/src/main/java/yokai/presentation/component/EmptyScreen.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package yokai.presentation.component import android.content.res.Configuration import androidx.compose.foundation.Image diff --git a/app/src/main/java/dev/yokai/presentation/component/Gap.kt b/app/src/main/java/yokai/presentation/component/Gap.kt similarity index 95% rename from app/src/main/java/dev/yokai/presentation/component/Gap.kt rename to app/src/main/java/yokai/presentation/component/Gap.kt index 8d21b3cae6..69576900dc 100644 --- a/app/src/main/java/dev/yokai/presentation/component/Gap.kt +++ b/app/src/main/java/yokai/presentation/component/Gap.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package yokai.presentation.component import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.RowScope diff --git a/app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt b/app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt similarity index 94% rename from app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt rename to app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt index 6ab18fe06d..0e1d0b9ccf 100644 --- a/app/src/main/java/dev/yokai/presentation/component/LabeledCheckbox.kt +++ b/app/src/main/java/yokai/presentation/component/LabeledCheckbox.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package 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 dev.yokai.presentation.theme.Size +import yokai.presentation.theme.Size @Composable fun LabeledCheckbox( diff --git a/app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt b/app/src/main/java/yokai/presentation/component/ThemeItem.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt rename to app/src/main/java/yokai/presentation/component/ThemeItem.kt index 5821ddecf4..c2619f75c6 100644 --- a/app/src/main/java/dev/yokai/presentation/component/ThemeItem.kt +++ b/app/src/main/java/yokai/presentation/component/ThemeItem.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package 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/dev/yokai/presentation/component/ToolTip.kt b/app/src/main/java/yokai/presentation/component/ToolTip.kt similarity index 99% rename from app/src/main/java/dev/yokai/presentation/component/ToolTip.kt rename to app/src/main/java/yokai/presentation/component/ToolTip.kt index 6607e867ad..a4fd5dec64 100644 --- a/app/src/main/java/dev/yokai/presentation/component/ToolTip.kt +++ b/app/src/main/java/yokai/presentation/component/ToolTip.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package yokai.presentation.component import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.interaction.MutableInteractionSource diff --git a/app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt b/app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt similarity index 93% rename from app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt rename to app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt index cc18fac295..b08c66a54a 100644 --- a/app/src/main/java/dev/yokai/presentation/component/TrackLogoIcon.kt +++ b/app/src/main/java/yokai/presentation/component/TrackLogoIcon.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component +package 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/dev/yokai/presentation/component/preference/Preference.kt b/app/src/main/java/yokai/presentation/component/preference/Preference.kt similarity index 99% rename from app/src/main/java/dev/yokai/presentation/component/preference/Preference.kt rename to app/src/main/java/yokai/presentation/component/preference/Preference.kt index 710bae4d1a..f0b09b06fd 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/Preference.kt +++ b/app/src/main/java/yokai/presentation/component/preference/Preference.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference +package yokai.presentation.component.preference import androidx.compose.runtime.Composable import androidx.compose.runtime.remember diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt b/app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt similarity index 88% rename from app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt rename to app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt index 7a845deb05..5eb2c83b80 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceCommon.kt +++ b/app/src/main/java/yokai/presentation/component/preference/PreferenceCommon.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference +package 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.preference.collectAsState +import eu.kanade.tachiyomi.core.storage.preference.collectAsState @Composable fun storageLocationText( diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt b/app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt similarity index 89% rename from app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt rename to app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt index bdf5a58c51..e7d866c688 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/PreferenceItem.kt +++ b/app/src/main/java/yokai/presentation/component/preference/PreferenceItem.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference +package 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 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.core.storage.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/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt similarity index 95% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt index 62c9bda989..5b7e657042 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/BasePreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package 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/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt similarity index 97% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt index a2472d23f2..29d51754fb 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/EditTextPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material.icons.Icons @@ -22,7 +22,6 @@ 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/dev/yokai/presentation/component/preference/widget/InfoWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt similarity index 86% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/InfoWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt index f09b27483c..334cfd0dde 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/InfoWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/InfoWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package 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 dev.yokai.presentation.core.util.secondaryItemAlpha -import dev.yokai.presentation.theme.Size +import yokai.presentation.core.util.secondaryItemAlpha +import yokai.presentation.theme.Size @Composable internal fun InfoWidget(text: String) { diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt index 9524bc4c29..c5f63ff76f 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/ListPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Row diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt similarity index 94% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt index 672c505fad..9be0ef736f 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/MultiListPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package 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 dev.yokai.presentation.component.LabeledCheckbox -import dev.yokai.presentation.component.preference.Preference +import yokai.presentation.component.LabeledCheckbox +import yokai.presentation.component.preference.Preference @Composable fun MultiSelectListPreferenceWidget( diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt b/app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt similarity index 93% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt index f78b0b1cde..136c3e21bf 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/PreferenceGroupHeader.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt similarity index 79% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt index 82b0ff0c0f..54c4c8b7e3 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/SliderPreferenceWidget.kt @@ -1,9 +1,6 @@ -package dev.yokai.presentation.component.preference.widget +package 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/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt similarity index 93% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt index 8a66912363..89ad67b33d 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/SwitchPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package yokai.presentation.component.preference.widget import androidx.compose.foundation.layout.padding import androidx.compose.material3.Switch diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt similarity index 92% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt index cf5662c482..8a4a677d76 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/TextPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package 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 dev.yokai.presentation.core.util.secondaryItemAlpha +import yokai.presentation.core.util.secondaryItemAlpha @Composable fun TextPreferenceWidget( diff --git a/app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt b/app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt similarity index 92% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt index 76db0502ba..a902ee89df 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/TrackingPreferenceWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package 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/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt b/app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt similarity index 99% rename from app/src/main/java/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt rename to app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt index c7579ed825..4b52546aa6 100644 --- a/app/src/main/java/dev/yokai/presentation/component/preference/widget/TriStateListDialog.kt +++ b/app/src/main/java/yokai/presentation/component/preference/widget/TriStateListDialog.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.component.preference.widget +package yokai.presentation.component.preference.widget import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt b/app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt similarity index 85% rename from app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt rename to app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt index 81c98b2887..86116f4db1 100644 --- a/app/src/main/java/dev/yokai/presentation/core/util/ModifierExtensions.kt +++ b/app/src/main/java/yokai/presentation/core/util/ModifierExtensions.kt @@ -1,10 +1,10 @@ -package dev.yokai.presentation.core.util +package 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 dev.yokai.presentation.theme.SecondaryItemAlpha +import yokai.presentation.theme.SecondaryItemAlpha fun Modifier.secondaryItemAlpha(): Modifier = this.alpha(SecondaryItemAlpha) diff --git a/app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt b/app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt similarity index 90% rename from app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt rename to app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt index cba61953f4..be3968b8e3 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/ExtensionDetailsController.kt +++ b/app/src/main/java/yokai/presentation/extension/ExtensionDetailsController.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.extension +package yokai.presentation.extension import android.os.Bundle import androidx.compose.material3.Text diff --git a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt similarity index 90% rename from app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt rename to app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt index 814f92a371..f99b28c24a 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoController.kt +++ b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoController.kt @@ -1,11 +1,11 @@ -package dev.yokai.presentation.extension.repo +package 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/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt similarity index 94% rename from app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt rename to app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt index 176731ff99..c2138028c2 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoScreen.kt +++ b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoScreen.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.extension.repo +package 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/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt similarity index 89% rename from app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt rename to app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt index a5b701ca4d..dad43d22f9 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt +++ b/app/src/main/java/yokai/presentation/extension/repo/ExtensionRepoViewModel.kt @@ -1,15 +1,9 @@ -package dev.yokai.presentation.extension.repo +package 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 @@ -21,6 +15,12 @@ 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/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt b/app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt similarity index 96% rename from app/src/main/java/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt rename to app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt index 7e6fb4a5b6..8601ee9b83 100644 --- a/app/src/main/java/dev/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt +++ b/app/src/main/java/yokai/presentation/extension/repo/component/ExtensionRepoItem.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.extension.repo.component +package 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/dev/yokai/presentation/onboarding/InfoScreen.kt b/app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt similarity index 96% rename from app/src/main/java/dev/yokai/presentation/onboarding/InfoScreen.kt rename to app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt index e887afaf6e..d26622c5dc 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/InfoScreen.kt +++ b/app/src/main/java/yokai/presentation/onboarding/InfoScreen.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.onboarding +package yokai.presentation.onboarding import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.background @@ -13,7 +13,6 @@ 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 @@ -32,8 +31,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 dev.yokai.presentation.core.util.secondaryItemAlpha -import dev.yokai.presentation.theme.Size +import yokai.presentation.core.util.secondaryItemAlpha +import yokai.presentation.theme.Size @Composable fun InfoScreen( diff --git a/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt b/app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt similarity index 86% rename from app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt rename to app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt index 90284afc28..d5efeee846 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingController.kt +++ b/app/src/main/java/yokai/presentation/onboarding/OnboardingController.kt @@ -1,12 +1,12 @@ -package dev.yokai.presentation.onboarding +package yokai.presentation.onboarding import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import dev.yokai.domain.base.BasePreferences -import eu.kanade.tachiyomi.core.preference.collectAsState +import eu.kanade.tachiyomi.core.storage.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/dev/yokai/presentation/onboarding/OnboardingScreen.kt b/app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt similarity index 88% rename from app/src/main/java/dev/yokai/presentation/onboarding/OnboardingScreen.kt rename to app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt index 72f40a6df4..8c1ccd7353 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/OnboardingScreen.kt +++ b/app/src/main/java/yokai/presentation/onboarding/OnboardingScreen.kt @@ -1,6 +1,5 @@ -package dev.yokai.presentation.onboarding +package yokai.presentation.onboarding -import android.annotation.SuppressLint import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedContent import androidx.compose.foundation.background @@ -19,14 +18,13 @@ 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/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt b/app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt similarity index 75% rename from app/src/main/java/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt rename to app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt index 0ead72e670..c2d262a634 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/steps/OnboardingStep.kt +++ b/app/src/main/java/yokai/presentation/onboarding/steps/OnboardingStep.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.onboarding.steps +package yokai.presentation.onboarding.steps import androidx.compose.runtime.Composable diff --git a/app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt b/app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt similarity index 98% rename from app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt rename to app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt index 3ba699bf44..78d76190d7 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/steps/PermissionStep.kt +++ b/app/src/main/java/yokai/presentation/onboarding/steps/PermissionStep.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.onboarding.steps +package 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/dev/yokai/presentation/onboarding/steps/StorageStep.kt b/app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt similarity index 82% rename from app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt rename to app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt index 418137c76a..70e27d8933 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/steps/StorageStep.kt +++ b/app/src/main/java/yokai/presentation/onboarding/steps/StorageStep.kt @@ -1,11 +1,6 @@ -package dev.yokai.presentation.onboarding.steps +package 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 @@ -23,17 +18,14 @@ 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/dev/yokai/presentation/onboarding/steps/ThemeStep.kt b/app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt similarity index 96% rename from app/src/main/java/dev/yokai/presentation/onboarding/steps/ThemeStep.kt rename to app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt index 1e2cde5eec..08377ee5d1 100644 --- a/app/src/main/java/dev/yokai/presentation/onboarding/steps/ThemeStep.kt +++ b/app/src/main/java/yokai/presentation/onboarding/steps/ThemeStep.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.onboarding.steps +package yokai.presentation.onboarding.steps import android.app.Activity import android.content.Context @@ -22,18 +22,16 @@ 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.preference.collectAsState +import eu.kanade.tachiyomi.core.storage.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/dev/yokai/presentation/settings/ComposableSettings.kt b/app/src/main/java/yokai/presentation/settings/ComposableSettings.kt similarity index 90% rename from app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt rename to app/src/main/java/yokai/presentation/settings/ComposableSettings.kt index 6bcbd2da33..74e96a7337 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt +++ b/app/src/main/java/yokai/presentation/settings/ComposableSettings.kt @@ -1,11 +1,11 @@ -package dev.yokai.presentation.settings +package 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 dev.yokai.presentation.component.preference.Preference +import yokai.presentation.component.preference.Preference interface ComposableSettings { @Composable diff --git a/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt b/app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt similarity index 90% rename from app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt rename to app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt index cdb26bc9ce..3d6cd91655 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt +++ b/app/src/main/java/yokai/presentation/settings/SettingsCommonWidget.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.settings +package 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 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.core.storage.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/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt similarity index 93% rename from app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt rename to app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt index adc0455ad5..483a1a8998 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/SettingsDataScreen.kt @@ -1,11 +1,9 @@ -package dev.yokai.presentation.settings.screen +package 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 @@ -27,18 +25,6 @@ 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 @@ -53,7 +39,6 @@ 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 @@ -61,6 +46,17 @@ 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/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt b/app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt similarity index 97% rename from app/src/main/java/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt rename to app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt index 83c1568160..fa93bd4df5 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/screen/data/AlertDialogs.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/data/AlertDialogs.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.settings.screen.data +package yokai.presentation.settings.screen.data import android.content.Context import android.net.Uri @@ -15,7 +15,6 @@ 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 @@ -23,6 +22,7 @@ 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/dev/yokai/presentation/settings/screen/data/Storage.kt b/app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt similarity index 95% rename from app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt rename to app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt index 3e72c350ca..6306b69a40 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/screen/data/Storage.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/data/Storage.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.settings.screen.data +package yokai.presentation.settings.screen.data import android.content.Intent import android.net.Uri diff --git a/app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt b/app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt similarity index 91% rename from app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt rename to app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt index a13329f3aa..2eaad2078d 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/screen/data/StorageInfo.kt +++ b/app/src/main/java/yokai/presentation/settings/screen/data/StorageInfo.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.settings.screen.data +package 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/dev/yokai/presentation/theme/Constants.kt b/app/src/main/java/yokai/presentation/theme/Constants.kt similarity index 91% rename from app/src/main/java/dev/yokai/presentation/theme/Constants.kt rename to app/src/main/java/yokai/presentation/theme/Constants.kt index f49ac886dd..139084edac 100644 --- a/app/src/main/java/dev/yokai/presentation/theme/Constants.kt +++ b/app/src/main/java/yokai/presentation/theme/Constants.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.theme +package yokai.presentation.theme import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/dev/yokai/presentation/theme/Theme.kt b/app/src/main/java/yokai/presentation/theme/Theme.kt similarity index 94% rename from app/src/main/java/dev/yokai/presentation/theme/Theme.kt rename to app/src/main/java/yokai/presentation/theme/Theme.kt index 00abf5d108..77e10348f1 100644 --- a/app/src/main/java/dev/yokai/presentation/theme/Theme.kt +++ b/app/src/main/java/yokai/presentation/theme/Theme.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.theme +package yokai.presentation.theme import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable diff --git a/app/src/main/java/dev/yokai/presentation/theme/Typography.kt b/app/src/main/java/yokai/presentation/theme/Typography.kt similarity index 91% rename from app/src/main/java/dev/yokai/presentation/theme/Typography.kt rename to app/src/main/java/yokai/presentation/theme/Typography.kt index 3945046725..bb69ed9fe0 100644 --- a/app/src/main/java/dev/yokai/presentation/theme/Typography.kt +++ b/app/src/main/java/yokai/presentation/theme/Typography.kt @@ -1,4 +1,4 @@ -package dev.yokai.presentation.theme +package yokai.presentation.theme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Typography diff --git a/app/src/main/java/dev/yokai/util/LewdMangaChecker.kt b/app/src/main/java/yokai/util/LewdMangaChecker.kt similarity index 95% rename from app/src/main/java/dev/yokai/util/LewdMangaChecker.kt rename to app/src/main/java/yokai/util/LewdMangaChecker.kt index 2f3e084b7c..823c174316 100644 --- a/app/src/main/java/dev/yokai/util/LewdMangaChecker.kt +++ b/app/src/main/java/yokai/util/LewdMangaChecker.kt @@ -1,10 +1,10 @@ -package dev.yokai.util +package 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.Locale +import java.util.* fun Manga.isLewd(): Boolean { val sourceName = Injekt.get().get(source)?.name diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 060454eb11..c05e49c91b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1116,12 +1116,6 @@ 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/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt b/app/src/test/java/dev/yokai/core/migration/MigratorTest.kt index d22a9e55de..e955c886ca 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 dev.yokai.core.migration +package yokai.core.migration import io.mockk.slot import io.mockk.spyk diff --git a/build.gradle.kts b/build.gradle.kts index d97f392324..3563bb292f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,7 @@ +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 { @@ -15,6 +19,7 @@ buildscript { classpath(kotlinx.serialization.gradle) classpath(libs.firebase.crashlytics.gradle) classpath(libs.sqldelight.gradle) + classpath(libs.moko.generator) } repositories { gradlePluginPortal() @@ -23,6 +28,46 @@ 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 new file mode 100644 index 0000000000..9e5976779a --- /dev/null +++ b/buildSrc/src/main/kotlin/LocalesConfigPlugin.kt @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000000..3eda79fb66 --- /dev/null +++ b/core/build.gradle.kts @@ -0,0 +1,49 @@ +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 new file mode 100644 index 0000000000..8072ee00db --- /dev/null +++ b/core/src/androidMain/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreference.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/core/preference/AndroidPreferenceStore.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/AndroidCookieJar.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/AndroidCookieJar.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/DohProviders.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/DohProviders.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/JavaScriptEngine.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt similarity index 68% rename from app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt index b73ca6c50a..5fb1cd3703 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -1,10 +1,6 @@ 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 @@ -12,13 +8,14 @@ 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.TimeUnit +import java.util.concurrent.* -class NetworkHelper(val context: Context) { - - private val preferences: PreferencesHelper by injectLazy() +class NetworkHelper( + val context: Context, + private val networkPreferences: NetworkPreferences, + private val block: (OkHttpClient.Builder) -> Unit, +) { private val cacheDir = File(context.cacheDir, "network_cache") @@ -43,18 +40,9 @@ class NetworkHelper(val context: Context) { .addNetworkInterceptor(IgnoreGzipInterceptor()) .addNetworkInterceptor(BrotliInterceptor) .apply { - if (BuildConfig.DEBUG) { - addInterceptor( - ChuckerInterceptor.Builder(context) - .collector(ChuckerCollector(context)) - .maxContentLength(250000L) - .redactHeaders(emptySet()) - .alwaysReadResponseBody(false) - .build(), - ) - } + block(this) - when (preferences.dohProvider()) { + when (networkPreferences.dohProvider().get()) { PREF_DOH_CLOUDFLARE -> dohCloudflare() PREF_DOH_GOOGLE -> dohGoogle() PREF_DOH_ADGUARD -> dohAdGuard() @@ -75,7 +63,7 @@ class NetworkHelper(val context: Context) { } val defaultUserAgent - get() = preferences.defaultUserAgent().get().replace("\n", " ").trim() + get() = networkPreferences.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/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt similarity index 99% rename from app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/OkHttpExtensions.kt index e6eec02f4a..15c8839e5f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt +++ b/core/src/androidMain/kotlin/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.AtomicBoolean +import java.util.concurrent.atomic.* import kotlin.coroutines.resumeWithException val jsonMime = "application/json; charset=utf-8".toMediaType() diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/ProgressResponseBody.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/Requests.kt similarity index 97% rename from app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/Requests.kt index 6adb0de8ef..dedc62fea3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt +++ b/core/src/androidMain/kotlin/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.MINUTES +import java.util.concurrent.TimeUnit.* private val DEFAULT_CACHE_CONTROL = CacheControl.Builder().maxAge(10, MINUTES).build() private val DEFAULT_HEADERS = Headers.Builder().build() diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt similarity index 94% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt index 875bbc2c73..ca3d155395 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/CloudflareInterceptor.kt @@ -5,7 +5,6 @@ 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 @@ -15,8 +14,10 @@ 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.CountDownLatch +import java.util.concurrent.* class CloudflareInterceptor( private val context: Context, @@ -48,7 +49,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.getString(R.string.failed_to_bypass_cloudflare)) + throw IOException(context.getMString(MR.strings.failed_to_bypass_cloudflare)) } catch (e: Exception) { throw IOException(e) } @@ -130,7 +131,7 @@ class CloudflareInterceptor( if (!cloudflareBypassed) { // Prompt user to update WebView if it seems too outdated if (isWebViewOutdated) { - context.toast(R.string.please_update_webview, Toast.LENGTH_LONG) + context.toast(MR.strings.please_update_webview, Toast.LENGTH_LONG) } throw CloudflareBypassException() diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/IgnoreGzipInterceptor.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt similarity index 98% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt index 994c3c032d..e059f2b742 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/RateLimitInterceptor.kt +++ b/core/src/androidMain/kotlin/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.TimeUnit +import java.util.concurrent.* /** * An OkHttp interceptor that handles rate limiting. diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt similarity index 98% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt index b10b6904b5..a1307de1f7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/SpecificHostRateLimitInterceptor.kt +++ b/core/src/androidMain/kotlin/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.TimeUnit +import java.util.concurrent.* /** * An OkHttp interceptor that handles given url host's rate limiting. diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt similarity index 94% rename from app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt index be8db9ee5e..47018c7443 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/network/interceptor/WebViewInterceptor.kt @@ -5,7 +5,6 @@ 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 @@ -15,9 +14,9 @@ import okhttp3.Headers import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response -import java.util.Locale -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit +import yokai.i18n.MR +import java.util.* +import java.util.concurrent.* abstract class WebViewInterceptor( private val context: Context, @@ -57,7 +56,7 @@ abstract class WebViewInterceptor( if (!WebViewUtil.supportsWebView(context)) { launchUI { - context.toast(R.string.webview_is_required, Toast.LENGTH_LONG) + context.toast(MR.strings.webview_is_required, Toast.LENGTH_LONG) } return response } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/CoroutinesExtensions.kt 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 new file mode 100644 index 0000000000..2fc2ef21d4 --- /dev/null +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DensityExtensions.kt @@ -0,0 +1,28 @@ +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/app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/DeviceUtil.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/DeviceUtil.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/KermitExtensions.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/KermitExtensions.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/KermitExtensions.kt 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 new file mode 100644 index 0000000000..1930e6eae7 --- /dev/null +++ b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/ToastExtensions.kt @@ -0,0 +1,37 @@ +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/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt b/core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewUtil.kt rename to core/src/androidMain/kotlin/eu/kanade/tachiyomi/util/system/WebViewUtil.kt diff --git a/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt b/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt new file mode 100644 index 0000000000..4d431d9f6c --- /dev/null +++ b/core/src/androidMain/kotlin/yokai/util/lang/MokoExtensions.kt @@ -0,0 +1,8 @@ +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/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt b/core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt similarity index 94% rename from app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt rename to core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt index bba89d1d8e..a4909a77ba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt +++ b/core/src/androidMain/kotlin/yokai/util/lang/RxCoroutineBridge.kt @@ -1,17 +1,18 @@ -package eu.kanade.tachiyomi.util.system +package yokai.util.lang 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 @@ -21,6 +22,7 @@ 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/app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt similarity index 84% rename from app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt rename to core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt index 6addefaa11..2950d0db48 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/core/preference/Preference.kt +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/Preference.kt @@ -1,9 +1,5 @@ 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 @@ -77,9 +73,3 @@ 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/app/src/main/java/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt rename to core/src/commonMain/kotlin/eu/kanade/tachiyomi/core/preference/PreferenceStore.kt diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt new file mode 100644 index 0000000000..8a1023b082 --- /dev/null +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt @@ -0,0 +1,10 @@ +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/app/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/network/ProgressListener.kt rename to core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/ProgressListener.kt diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts new file mode 100644 index 0000000000..c35a38c744 --- /dev/null +++ b/domain/build.gradle.kts @@ -0,0 +1,11 @@ +plugins { + id("com.android.library") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "yokai.domain" +} + +dependencies { +} diff --git a/gradle.properties b/gradle.properties index be89a213a4..a3c529f420 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ # AndroidX support android.enableJetifier=true android.useAndroidX=true -org.gradle.jvmargs=-Xmx2048M +org.gradle.jvmargs=-Xmx4G org.gradle.caching=true android.nonTransitiveRClass=false android.nonFinalResIds=false diff --git a/gradle/kotlinx.versions.toml b/gradle/kotlinx.versions.toml index b6ef6bf683..8c4afaf538 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-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" } +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" } 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,6 +22,7 @@ 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 6ef3370c25..9335bac840 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,6 +3,7 @@ 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" @@ -59,6 +60,10 @@ 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 new file mode 100644 index 0000000000..ca18adab9b --- /dev/null +++ b/i18n/.gitignore @@ -0,0 +1,2 @@ +# Generated +#locales_config.xml diff --git a/i18n/build.gradle.kts b/i18n/build.gradle.kts new file mode 100644 index 0000000000..7d719bdf4d --- /dev/null +++ b/i18n/build.gradle.kts @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000000..8072ee00db --- /dev/null +++ b/i18n/src/androidMain/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/main/res/xml/locales_config.xml b/i18n/src/androidMain/res/xml/locales_config.xml similarity index 99% rename from app/src/main/res/xml/locales_config.xml rename to i18n/src/androidMain/res/xml/locales_config.xml index 6f3b6b49c1..7d6a19914d 100644 --- a/app/src/main/res/xml/locales_config.xml +++ b/i18n/src/androidMain/res/xml/locales_config.xml @@ -53,4 +53,4 @@ - \ No newline at end of file + diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml new file mode 100644 index 0000000000..28f17080a6 --- /dev/null +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -0,0 +1,8 @@ + + + + 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 new file mode 100644 index 0000000000..7c080dcdb5 --- /dev/null +++ b/presentation-core/build.gradle.kts @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/presentation-core/proguard-rules.pro b/presentation-core/proguard-rules.pro new file mode 100644 index 0000000000..f1b424510d --- /dev/null +++ b/presentation-core/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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 new file mode 100644 index 0000000000..b89a812723 --- /dev/null +++ b/presentation-widget/build.gradle.kts @@ -0,0 +1,31 @@ +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 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/presentation-widget/proguard-rules.pro b/presentation-widget/proguard-rules.pro new file mode 100644 index 0000000000..f1b424510d --- /dev/null +++ b/presentation-widget/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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 new file mode 100644 index 0000000000..a37fa78e07 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/TachiyomiWidgetManager.kt @@ -0,0 +1,15 @@ +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 new file mode 100644 index 0000000000..4423aeebf5 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceReceiver.kt @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000000..dda4a6a6d6 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/UpdatesGridGlanceWidget.kt @@ -0,0 +1,128 @@ +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 new file mode 100644 index 0000000000..8911445446 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/LockedWidget.kt @@ -0,0 +1,44 @@ +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 new file mode 100644 index 0000000000..a9aa232d08 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesMangaCover.kt @@ -0,0 +1,48 @@ +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 new file mode 100644 index 0000000000..e447e47d4e --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/components/UpdatesWidget.kt @@ -0,0 +1,74 @@ +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 new file mode 100644 index 0000000000..5f56877211 --- /dev/null +++ b/presentation-widget/src/main/java/eu/kanade/tachiyomi/appwidget/util/GlanceUtils.kt @@ -0,0 +1,43 @@ +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 c0a5987077..0be46720cc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,5 +27,13 @@ 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 new file mode 100644 index 0000000000..0cbb0380dc --- /dev/null +++ b/source-api/build.gradle.kts @@ -0,0 +1,42 @@ +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 new file mode 100644 index 0000000000..aa81da4bfd --- /dev/null +++ b/source-api/consumer-proguard.pro @@ -0,0 +1,5 @@ +-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 new file mode 100644 index 0000000000..8072ee00db --- /dev/null +++ b/source-api/src/androidMain/AndroidManifest.xml @@ -0,0 +1,2 @@ + + 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 new file mode 100644 index 0000000000..9a76345cb9 --- /dev/null +++ b/source-api/src/androidMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt @@ -0,0 +1,6 @@ +package eu.kanade.tachiyomi.util + +import rx.Observable +import yokai.util.lang.awaitSingle + +actual suspend fun Observable.awaitSingle(): T = awaitSingle() diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt similarity index 97% rename from app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/CatalogueSource.kt index 01cc4a4fc9..f65c2662a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/CatalogueSource.kt +++ b/source-api/src/commonMain/kotlin/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.system.awaitSingle +import eu.kanade.tachiyomi.util.awaitSingle import rx.Observable interface CatalogueSource : Source { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/ConfigurableSource.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/ConfigurableSource.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt similarity index 67% rename from app/src/main/java/eu/kanade/tachiyomi/source/Source.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt index b2167ee94c..fec2f89674 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/Source.kt @@ -1,15 +1,10 @@ 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.source.online.HttpSource -import eu.kanade.tachiyomi.util.system.awaitSingle +import eu.kanade.tachiyomi.util.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. @@ -66,19 +61,6 @@ 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"), @@ -101,6 +83,4 @@ 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/SourceFactory.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/SourceFactory.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/SourceFactory.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/SourceFactory.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/UnmeteredSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/UnmeteredSource.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/UnmeteredSource.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/UnmeteredSource.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/Filter.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/Filter.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/FilterList.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/FilterList.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/FilterList.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/FilterList.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/MangasPage.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/MangasPage.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/MangasPage.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/MangasPage.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt similarity index 59% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt index 756b8f2c84..f53bbe8f0a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapter.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.source.model -import eu.kanade.tachiyomi.data.database.models.ChapterImpl import java.io.Serializable interface SChapter : Serializable { @@ -23,16 +22,6 @@ 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/app/src/main/java/eu/kanade/tachiyomi/source/model/SChapterImpl.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/SChapterImpl.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapterImpl.kt 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 new file mode 100644 index 0000000000..c0f8ef8281 --- /dev/null +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SManga.kt @@ -0,0 +1,52 @@ +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 new file mode 100644 index 0000000000..91a7711cce --- /dev/null +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SMangaImpl.kt @@ -0,0 +1,24 @@ +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/app/src/main/java/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt similarity index 96% rename from app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt index 5fc6ba155b..5ee2052c4a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt @@ -1,7 +1,5 @@ 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 @@ -13,15 +11,12 @@ 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.lang.getUrlWithoutDomain -import eu.kanade.tachiyomi.util.system.awaitSingle +import eu.kanade.tachiyomi.util.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 @@ -121,12 +116,6 @@ 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. * @@ -462,7 +451,7 @@ abstract class HttpSource : CatalogueSource { fun getChapterUrl(manga: SManga?, chapter: SChapter): String? { manga ?: return null - val chapterUrl = chapter.url.getUrlWithoutDomain() + val chapterUrl = getUrlWithoutDomain(chapter.url) val mangaUrl = getMangaUrl(manga) return if (chapterUrl.isBlank()) { mangaUrl diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/ParsedHttpSource.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/JsoupExtensions.kt b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/JsoupExtensions.kt similarity index 100% rename from app/src/main/java/eu/kanade/tachiyomi/util/JsoupExtensions.kt rename to source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/JsoupExtensions.kt 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 new file mode 100644 index 0000000000..5b8420d412 --- /dev/null +++ b/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/util/RxExtension.kt @@ -0,0 +1,5 @@ +package eu.kanade.tachiyomi.util + +import rx.Observable + +expect suspend fun Observable.awaitSingle(): T