From 746934d421a1ddbfcd9d65b47f5fc1cd9c749aac Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Sat, 6 Apr 2024 14:23:07 +0300 Subject: [PATCH] Change app name from Etsudoku to Shirizu --- .idea/.name | 2 +- .idea/deploymentTargetDropDown.xml | 4 +- README.md | 6 +- app/build.gradle.kts | 6 +- .../{etsudoku => shirizu}/HiltTestRunner.kt | 2 +- .../{etsudoku => shirizu}/Instrumentation.kt | 2 +- .../{etsudoku => shirizu}/SampleData.kt | 4 +- .../settings/backup/AppBackupAgentTest.kt | 16 +-- app/src/main/AndroidManifest.xml | 4 +- .../core/exceptions/SyncApiException.kt | 6 - .../etsudoku/sections/details/DetailsEvent.kt | 5 - .../etsudoku/sections/explore/ExploreEvent.kt | 5 - .../etsudoku/sections/list/MangaListEvent.kt | 5 - .../etsudoku/sections/reader/ReaderContent.kt | 8 -- .../sections/settings/appearance/Card.kt | 88 ------------ .../sections/settings/storage/StorageEvent.kt | 5 - .../etsudoku/utils/material/Constants.kt | 3 - .../etsudoku/work/tracker/TrackingItem.kt | 8 -- .../org/xtimms/{etsudoku => shirizu}/App.kt | 16 +-- .../CompositionLocals.kt | 16 +-- .../{etsudoku => shirizu}/MainActivity.kt | 28 ++-- .../ShirizuModule.kt} | 42 +++--- .../core/AsyncImageImpl.kt | 6 +- .../core/BottomNavDestination.kt | 10 +- .../core/ModifierCollapsable.kt | 2 +- .../{etsudoku => shirizu}/core/Navigation.kt | 128 +++++++++--------- .../core/base/AlertDialogFragment.kt | 2 +- .../core/base/BaseActivity.kt | 2 +- .../core/base/event/PagedUiEvent.kt | 2 +- .../core/base/event/UiEvent.kt | 2 +- .../core/base/state/PagedUiState.kt | 2 +- .../core/base/state/UiState.kt | 2 +- .../core/base/viewmodel/BaseViewModel.kt | 12 +- .../base/viewmodel/KotatsuBaseViewModel.kt | 8 +- .../core/cache/CacheDir.kt | 2 +- .../core/cache/ContentCache.kt | 2 +- .../core/cache/ExpiringLruCache.kt | 2 +- .../core/cache/ExpiringValue.kt | 2 +- .../core/cache/MemoryContentCache.kt | 2 +- .../core/cache/PagesCache.kt | 16 +-- .../core/cache/SafeDeferred.kt | 2 +- .../core/cache/StubContentCache.kt | 2 +- .../core/components/AnimatedButton.kt | 6 +- .../core/components/AnimatedNumber.kt | 2 +- .../core/components/BackgroundProgress.kt | 6 +- .../core/components/BottomNavBar.kt | 12 +- .../core/components/Buttons.kt | 4 +- .../core/components/CheckBox.kt | 2 +- .../core/components/ContinueReadingButton.kt | 8 +- .../core/components/DetailsToolbar.kt | 2 +- .../core/components/Dialogs.kt | 4 +- .../core/components/DotSeparatorText.kt | 2 +- .../core/components/ExploreButton.kt | 2 +- .../core/components/FloatingActionButton.kt | 2 +- .../core/components/HtmlTextField.kt | 4 +- .../core/components/IconButtons.kt | 4 +- .../core/components/ListGroupHeader.kt | 2 +- .../core/components/MangaCover.kt | 4 +- .../core/components/MangaGridItem.kt | 4 +- .../core/components/NavigationRail.kt | 8 +- .../core/components/Pill.kt | 2 +- .../core/components/PreferenceItem.kt | 22 +-- .../core/components/PullRefresh.kt | 2 +- .../core/components/ReadButton.kt | 14 +- .../core/components/ScaffoldWithTopAppBar.kt | 2 +- .../core/components/ScoreIndicator.kt | 10 +- .../core/components/SearchBar.kt | 4 +- .../core/components/SettingItem.kt | 4 +- .../core/components/SourceItem.kt | 8 +- .../core/components/Tab.kt | 2 +- .../core/components/TopAppBar.kt | 26 ++-- .../core/components/effects/ListAnimation.kt | 4 +- .../core/components/effects/Snowflake.kt | 2 +- .../components/icons/ArrowDecisionOutline.kt | 2 +- .../core/components/icons/Dice.kt | 2 +- .../core/components/icons/Kotatsu.kt | 2 +- .../core/components/shape/WavyShape.kt | 2 +- .../database/DatabasePrePopulateCallback.kt | 4 +- .../core/database/ShirizuDatabase.kt} | 52 +++---- .../core/database/Tables.kt | 2 +- .../core/database/dao/BookmarksDao.kt | 6 +- .../database/dao/FavouriteCategoriesDao.kt | 4 +- .../core/database/dao/FavouritesDao.kt | 10 +- .../core/database/dao/HistoryDao.kt | 12 +- .../core/database/dao/MangaDao.kt | 10 +- .../core/database/dao/MangaSourcesDao.kt | 6 +- .../core/database/dao/SuggestionDao.kt | 6 +- .../core/database/dao/TagsDao.kt | 4 +- .../core/database/dao/TrackLogsDao.kt | 6 +- .../core/database/dao/TracksDao.kt | 6 +- .../core/database/entity/BookmarksEntity.kt | 2 +- .../core/database/entity/EntityMapping.kt | 18 +-- .../entity/FavouriteCategoryEntity.kt | 4 +- .../core/database/entity/FavouriteEntity.kt | 4 +- .../core/database/entity/HistoryEntity.kt | 4 +- .../core/database/entity/HistoryWithManga.kt | 2 +- .../core/database/entity/MangaEntity.kt | 4 +- .../core/database/entity/MangaSourceEntity.kt | 4 +- .../core/database/entity/MangaTagsEntity.kt | 4 +- .../core/database/entity/MangaWithTags.kt | 2 +- .../core/database/entity/SuggestionEntity.kt | 2 +- .../database/entity/SuggestionWithManga.kt | 2 +- .../core/database/entity/TagEntity.kt | 4 +- .../core/database/entity/TrackEntity.kt | 2 +- .../core/database/entity/TrackLogEntity.kt | 2 +- .../core/database/entity/TrackLogWithManga.kt | 2 +- .../CloudflareProtectedException.kt | 2 +- .../core/exceptions/SyncApiException.kt | 6 + .../exceptions/TooManyRequestExceptions.kt | 2 +- .../core/logs/FileLogger.kt | 8 +- .../core/logs/Loggers.kt | 2 +- .../core/logs/LoggersModule.kt | 2 +- .../core/model/Bookmark.kt | 4 +- .../core/model/FavouriteCategory.kt | 2 +- .../core/model/ListModel.kt | 2 +- .../core/model/ListSortOrder.kt | 4 +- .../core/model/LocalManga.kt | 4 +- .../{etsudoku => shirizu}/core/model/Manga.kt | 4 +- .../core/model/MangaHistory.kt | 2 +- .../core/model/MangaSource.kt | 2 +- .../core/model/MangaSuggestion.kt | 2 +- .../core/model/MangaWithHistory.kt | 2 +- .../core/model/ShelfCategory.kt | 2 +- .../core/model/TagsBlacklist.kt | 2 +- .../model/parcelable/ParcelableMangaTags.kt | 4 +- .../core/model/parcelable/ParcerableManga.kt | 6 +- .../core/motion/MaterialSharedAxis.kt | 2 +- .../core/motion/MotionConstants.kt | 2 +- .../core/motion/sharedelements/DelayExit.kt | 2 +- .../motion/sharedelements/ElementContainer.kt | 2 +- .../sharedelements/KeyframeBasedMotion.kt | 2 +- .../sharedelements/MaterialArcMotion.kt | 2 +- .../core/motion/sharedelements/MathUtils.kt | 2 +- .../core/motion/sharedelements/PathMotion.kt | 2 +- .../sharedelements/ProgressThresholds.kt | 2 +- .../motion/sharedelements/QuadraticBezier.kt | 2 +- .../motion/sharedelements/SharedElement.kt | 2 +- .../sharedelements/SharedElementsRoot.kt | 2 +- .../SharedElementsTransitionSpec.kt | 2 +- .../sharedelements/SharedMaterialContainer.kt | 2 +- .../core/network/CommonHeaders.kt | 2 +- .../core/network/HttpClients.kt | 2 +- .../core/network/NetworkModule.kt | 22 +-- .../core/network/SSLBypass.kt | 2 +- .../core/network/cookies/AndroidCookieJar.kt | 4 +- .../core/network/cookies/CookieWrapper.kt | 2 +- .../core/network/cookies/MutableCookieJar.kt | 2 +- .../network/cookies/PreferencesCookieJar.kt | 2 +- .../interceptors/CacheLimitInterceptor.kt | 4 +- .../interceptors/CloudflareInterceptor.kt | 4 +- .../interceptors/CommonHeadersInterceptor.kt | 10 +- .../network/interceptors/GZipInterceptor.kt | 4 +- .../interceptors/ImageProxyInterceptor.kt | 10 +- .../interceptors/RateLimitInterceptor.kt | 6 +- .../core/os/NetworkState.kt | 6 +- .../core/parser/LocalMangaRepository.kt | 2 +- .../core/parser/MangaDataRepository.kt | 12 +- .../core/parser/MangaIntent.kt | 10 +- .../core/parser/MangaLinkResolver.kt | 8 +- .../core/parser/MangaLoaderContextImpl.kt | 10 +- .../core/parser/MangaParser.kt | 2 +- .../core/parser/MangaRepository.kt | 6 +- .../core/parser/RemoteMangaRepository.kt | 12 +- .../core/parser/favicon/FaviconFetcher.kt | 14 +- .../core/parser/favicon/FaviconUri.kt | 2 +- .../core/parser/local/CbzFilter.kt | 4 +- .../core/parser/local/DownloadFormat.kt | 2 +- .../core/parser/local/LocalMangaRepository.kt | 26 ++-- .../core/parser/local/MangaIndex.kt | 8 +- .../core/parser/local/Qualifiers.kt | 2 +- .../core/parser/local/TempFileFilter.kt | 2 +- .../parser/local/input/LocalMangaDirInput.kt | 24 ++-- .../parser/local/input/LocalMangaInput.kt | 6 +- .../parser/local/input/LocalMangaZipInput.kt | 16 +-- .../local/output/LocalMangaDirOutput.kt | 12 +- .../parser/local/output/LocalMangaOutput.kt | 6 +- .../parser/local/output/LocalMangaUtil.kt | 2 +- .../local/output/LocalMangaZipOutput.kt | 12 +- .../core/prefs/AppSettings.kt | 12 +- .../core/prefs/KotatsuAppSettings.kt | 8 +- .../core/prefs/SourceSettings.kt | 8 +- .../core/screens/EmptyScreen.kt | 6 +- .../core/screens/InfoScreen.kt | 4 +- .../core/screens/LoadingScreen.kt | 2 +- .../core/screens/UpdateDialog.kt | 10 +- .../core/sync/SyncAccountAuthenticator.kt | 2 +- .../core/sync/SyncAdapterEntryPoint.kt | 2 +- .../core/sync/SyncAuthActivity.kt | 16 +-- .../core/sync/SyncAuthApi.kt | 8 +- .../core/sync/SyncAuthResult.kt | 2 +- .../core/sync/SyncAuthViewModel.kt | 10 +- .../core/sync/SyncAuthenticator.kt | 6 +- .../core/sync/SyncAuthenticatorService.kt | 2 +- .../core/sync/SyncController.kt | 18 +-- .../core/sync/SyncHelper.kt | 30 ++-- .../core/sync/SyncHostDialogFragment.kt | 12 +- .../core/sync/SyncInterceptor.kt | 10 +- .../core/sync/SyncProvider.kt | 18 +-- .../core/sync/SyncSettings.kt | 6 +- .../core/tracker/Tracker.kt | 22 +-- .../core/tracker/model/MangaTracking.kt | 2 +- .../core/tracker/model/MangaUpdates.kt | 4 +- .../core/tracker/model/TrackingLogItem.kt | 4 +- .../core/updates/Updater.kt | 16 +-- .../core/zip/ZipOutput.kt | 4 +- .../crash/CrashActivity.kt | 14 +- .../crash/CrashScreen.kt | 12 +- .../crash/GlobalExceptionHandler.kt | 2 +- .../data/LocalStorageManager.kt | 6 +- .../data/repository/BookmarksRepository.kt | 24 ++-- .../data/repository/ExploreRepository.kt | 6 +- .../data/repository/FavouritesRepository.kt | 28 ++-- .../data/repository/HistoryRepository.kt | 26 ++-- .../data/repository/MangaSourcesRepository.kt | 26 ++-- .../data/repository/SuggestionRepository.kt | 20 +-- .../data/repository/TrackingRepository.kt | 32 ++--- .../data/repository/backup/BackupEntry.kt | 2 +- .../repository/backup/BackupRepository.kt | 8 +- .../data/repository/backup/BackupZipInput.kt | 4 +- .../data/repository/backup/BackupZipOutput.kt | 6 +- .../data/repository/backup/CompositeResult.kt | 2 +- .../repository/backup/JsonDeserializer.kt | 16 +-- .../data/repository/backup/JsonSerializer.kt | 16 +-- .../sections/details/ChapterListItem.kt | 10 +- .../sections/details/ChaptersMapper.kt | 12 +- .../shirizu/sections/details/DetailsEvent.kt | 5 + .../sections/details/DetailsInfoHeader.kt | 28 ++-- .../sections/details/DetailsUiState.kt | 6 +- .../sections/details/DetailsView.kt | 14 +- .../sections/details/DetailsViewConstants.kt | 2 +- .../sections/details/DetailsViewModel.kt | 38 +++--- .../sections/details/FullImageView.kt | 12 +- .../sections/details/data/MangaDetails.kt | 6 +- .../sections/details/data/ReadingTime.kt | 4 +- .../details/domain/BranchComparator.kt | 4 +- .../details/domain/DetailsInteractor.kt | 8 +- .../details/domain/DetailsLoadUseCase.kt | 18 +-- .../details/domain/ReadingTimeUseCase.kt | 12 +- .../details/domain/RelatedMangaUseCase.kt | 4 +- .../sections/details/model/ChapterItem.kt | 6 +- .../sections/details/model/HistoryInfo.kt | 4 +- .../details/model/ListModelConversionExt.kt | 12 +- .../sections/details/model/MangaBranch.kt | 4 +- .../shirizu/sections/explore/ExploreEvent.kt | 5 + .../sections/explore/ExploreUiState.kt | 4 +- .../sections/explore/ExploreView.kt | 16 +-- .../sections/explore/ExploreViewModel.kt | 16 +-- .../sections/explore/SourceItemModel.kt | 4 +- .../sections/explore/data/SourcesSortOrder.kt | 4 +- .../sections/feed/FeedView.kt | 36 ++--- .../sections/feed/FeedViewItem.kt | 10 +- .../sections/feed/FeedViewModel.kt | 14 +- .../sections/feed/model/FeedItem.kt | 4 +- .../feed/model/ListModelConversionExt.kt | 4 +- .../sections/history/HistoryItem.kt | 4 +- .../sections/history/HistoryItemModel.kt | 6 +- .../sections/history/HistoryView.kt | 28 ++-- .../sections/history/HistoryViewModel.kt | 8 +- .../sections/history/SwipeActions.kt | 10 +- .../shirizu/sections/list/MangaListEvent.kt | 5 + .../sections/list/MangaListUiState.kt | 4 +- .../sections/list/MangaListView.kt | 10 +- .../sections/list/MangaListViewModel.kt | 12 +- .../shirizu/sections/reader/ReaderContent.kt | 8 ++ .../sections/reader/ReaderState.kt | 4 +- .../sections/reader/ReaderView.kt | 6 +- .../sections/reader/ReaderViewModel.kt | 18 +-- .../sections/reader/domain/ChapterPages.kt | 4 +- .../sections/reader/domain/ChaptersLoader.kt | 8 +- .../sections/reader/domain/PageLoader.kt | 48 +++---- .../sections/reader/pager/ReaderPage.kt | 2 +- .../reader/thumbnails/MangaPageFetcher.kt | 18 +-- .../sections/search/SearchView.kt | 12 +- .../sections/settings/SettingsView.kt | 12 +- .../sections/settings/SettingsViewModel.kt | 12 +- .../sections/settings/about/AboutView.kt | 24 ++-- .../sections/settings/about/LicenseView.kt | 4 +- .../settings/about/OpenSourceLicensesView.kt | 6 +- .../sections/settings/about/UpdateView.kt | 36 ++--- .../settings/advanced/AdvancedView.kt | 32 ++--- .../settings/appearance/AppearanceView.kt | 58 ++++---- .../settings/appearance/DarkThemeView.kt | 22 +-- .../settings/appearance/LanguagesView.kt | 24 ++-- .../settings/backup/AppBackupAgent.kt | 16 +-- .../settings/backup/BackupEntryModel.kt | 8 +- .../sections/settings/backup/BackupItem.kt | 10 +- .../settings/backup/BackupObserver.kt | 8 +- .../settings/backup/BackupRestoreView.kt | 22 +-- .../settings/backup/BackupViewModel.kt | 12 +- .../settings/backup/PeriodicalBackupWorker.kt | 12 +- .../settings/backup/RestoreItemsView.kt | 12 +- .../settings/backup/RestoreViewModel.kt | 18 +-- .../sections/settings/network/NetworkView.kt | 18 +-- .../settings/shelf/ShelfSettingsView.kt | 20 +-- .../shelf/categories/AddCategoryDialog.kt | 8 +- .../shelf/categories/CategoriesView.kt | 10 +- .../shelf/categories/CategoryListItem.kt | 6 +- .../categories/interactor/ReorderCategory.kt | 10 +- .../settings/sources/SourcesSettingsView.kt | 14 +- .../sources/SourcesSettingsViewModel.kt | 6 +- .../sources/catalog/SourceCatalogItem.kt | 6 +- .../sources/catalog/SourceCatalogItemModel.kt | 4 +- .../sources/catalog/SourceCatalogPage.kt | 4 +- .../catalog/SourcesCatalogListProducer.kt | 16 +-- .../sources/catalog/SourcesCatalogPager.kt | 16 +-- .../sources/catalog/SourcesCatalogTabs.kt | 6 +- .../sources/catalog/SourcesCatalogView.kt | 6 +- .../catalog/SourcesCatalogViewModel.kt | 16 +-- .../sections/settings/storage/CleanDialog.kt | 16 +-- .../sections/settings/storage/StorageEvent.kt | 5 + .../settings/storage/StorageUiState.kt | 4 +- .../sections/settings/storage/StorageView.kt | 16 +-- .../settings/storage/StorageViewModel.kt | 8 +- .../sections/shelf/FavouriteManga.kt | 12 +- .../sections/shelf/FavouriteTabModel.kt | 4 +- .../sections/shelf/LazyShelfGrid.kt | 4 +- .../sections/shelf/ShelfGrid.kt | 4 +- .../sections/shelf/ShelfItem.kt | 2 +- .../sections/shelf/ShelfManga.kt | 2 +- .../sections/shelf/ShelfPager.kt | 10 +- .../sections/shelf/ShelfTabs.kt | 8 +- .../sections/shelf/ShelfView.kt | 6 +- .../sections/shelf/ShelfViewModel.kt | 8 +- .../sections/stats/ChaptersChart.kt | 16 +-- .../sections/stats/MinMaxReadCard.kt | 14 +- .../sections/stats/StatsCard.kt | 8 +- .../sections/stats/StatsView.kt | 16 +-- .../stats/categories/CategoriesChartCard.kt | 8 +- .../sections/stats/categories/DonutChart.kt | 4 +- .../sections/stats/categories/TagAmount.kt | 4 +- .../suggestions/SuggestionMangaModel.kt | 4 +- .../sections/suggestions/SuggestionsView.kt | 8 +- .../suggestions/SuggestionsViewModel.kt | 12 +- .../ui/harmonize/blend/Blend.java | 10 +- .../ui/harmonize/hct/Cam16.java | 4 +- .../ui/harmonize/hct/CamSolver.java | 6 +- .../ui/harmonize/hct/Hct.java | 4 +- .../ui/harmonize/hct/ViewingConditions.java | 6 +- .../ui/harmonize/palettes/CorePalette.java | 4 +- .../ui/harmonize/palettes/TonalPalette.java | 4 +- .../ui/harmonize/utils/ColorUtils.java | 2 +- .../ui/harmonize/utils/MathUtils.java | 2 +- .../ui/monet/ColorSpec.kt | 2 +- .../{etsudoku => shirizu}/ui/monet/Monet.kt | 4 +- .../ui/monet/PaletteStyle.kt | 2 +- .../ui/monet/TonalPalettes.kt | 4 +- .../{etsudoku => shirizu}/ui/theme/Color.kt | 8 +- .../{etsudoku => shirizu}/ui/theme/Theme.kt | 6 +- .../{etsudoku => shirizu}/ui/theme/Type.kt | 4 +- .../utils/AlphanumComparator.kt | 2 +- .../utils/CancellableSource.kt | 2 +- .../utils/CoilImageGetter.kt | 2 +- .../utils/CompositeMutex.kt | 2 +- .../utils/CompositeMutex2.kt | 2 +- .../utils/CrashLogUtil.kt | 16 +-- .../{etsudoku => shirizu}/utils/DeviceUtil.kt | 2 +- .../utils/DomainValidator.kt | 6 +- .../{etsudoku => shirizu}/utils/Event.kt | 2 +- .../utils/ExtraCloseableSource.kt | 2 +- .../utils/FileSequence.kt | 6 +- .../{etsudoku => shirizu}/utils/FileSize.kt | 4 +- .../utils/ImageFileFilter.kt | 2 +- .../utils/MediatorStateFlow.kt | 2 +- .../utils/MetricAffectingSpan.kt | 2 +- .../utils/ProgressResponseBody.kt | 2 +- .../utils/RetainedLifecycleCoroutineScope.kt | 2 +- .../utils/ReversibleAction.kt | 2 +- .../utils/ReversibleHandle.kt | 4 +- .../utils/ShareHelper.kt | 8 +- .../utils/StringArrayNavType.kt | 2 +- .../utils/WebViewUtil.kt | 2 +- .../utils/composable/Bitmap.kt | 2 +- .../utils/composable/LazyListState.kt | 2 +- .../utils/composable/Modifier.kt | 4 +- .../utils/iterator/CloseableIterator.kt | 2 +- .../utils/iterator/MappingIterator.kt | 2 +- .../utils/lang/Bundle.kt | 2 +- .../{etsudoku => shirizu}/utils/lang/Coil.kt | 2 +- .../utils/lang/Collections.kt | 2 +- .../utils/lang/Coroutines.kt | 4 +- .../{etsudoku => shirizu}/utils/lang/Date.kt | 4 +- .../utils/lang/EventFlow.kt | 4 +- .../{etsudoku => shirizu}/utils/lang/Flow.kt | 2 +- .../utils/lang/FlowObserver.kt | 4 +- .../{etsudoku => shirizu}/utils/lang/IO.kt | 6 +- .../utils/lang/Primitive.kt | 8 +- .../utils/lang/String.kt | 2 +- .../utils/lang/WorkManager.kt | 2 +- .../utils/material/Color.kt | 6 +- .../shirizu/utils/material/Constants.kt | 3 + .../utils/progress/ProgressDeferred.kt | 2 +- .../utils/system/Android.kt | 2 +- .../utils/system/Context.kt | 2 +- .../utils/system/Cursor.kt | 2 +- .../utils/system/File.kt | 6 +- .../utils/system/Http.kt | 2 +- .../utils/system/Intent.kt | 4 +- .../utils/system/Locale.kt | 4 +- .../utils/system/Network.kt | 2 +- .../utils/system/PaddingValues.kt | 2 +- .../utils/system/Preferences.kt | 2 +- .../utils/system/Throwable.kt | 12 +- .../utils/system/Toast.kt | 4 +- .../{etsudoku => shirizu}/utils/system/Uri.kt | 2 +- .../work/PeriodicWorkScheduler.kt | 2 +- .../work/WorkScheduleManager.kt | 8 +- .../work/suggestions/SuggestionsWorker.kt | 38 +++--- .../work/tracker/TrackWorker.kt | 30 ++-- .../tracker/TrackerNotificationChannels.kt | 6 +- .../shirizu/work/tracker/TrackingItem.kt | 8 ++ ..._stat_etsudoku.png => ic_stat_shirizu.png} | Bin ..._stat_etsudoku.png => ic_stat_shirizu.png} | Bin .../splash_branding_image.xml | 12 ++ .../res/drawable-night-v31/splash_icon.xml | 38 ++++++ .../main/res/drawable-night/splash_icon.xml | 13 ++ app/src/main/res/drawable-nodpi/ookami.webp | Bin 37160 -> 0 bytes .../drawable-v31/splash_branding_image.xml | 12 ++ app/src/main/res/drawable-v31/splash_icon.xml | 38 ++++++ ..._stat_etsudoku.png => ic_stat_shirizu.png} | Bin ..._stat_etsudoku.png => ic_stat_shirizu.png} | Bin ..._stat_etsudoku.png => ic_stat_shirizu.png} | Bin app/src/main/res/drawable/splash_icon.xml | 13 ++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 8245 -> 4194 bytes .../mipmap-hdpi/ic_launcher_background.png | Bin 18140 -> 852 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 6270 -> 3725 bytes .../mipmap-hdpi/ic_launcher_monochrome.png | Bin 3530 -> 3725 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 4582 -> 2653 bytes .../mipmap-mdpi/ic_launcher_background.png | Bin 9845 -> 459 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 3348 -> 2081 bytes .../mipmap-mdpi/ic_launcher_monochrome.png | Bin 1833 -> 2081 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 12199 -> 6155 bytes .../mipmap-xhdpi/ic_launcher_background.png | Bin 23291 -> 1317 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 8218 -> 4828 bytes .../mipmap-xhdpi/ic_launcher_monochrome.png | Bin 4545 -> 4828 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 21760 -> 9350 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 45895 -> 2949 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 15748 -> 9278 bytes .../mipmap-xxhdpi/ic_launcher_monochrome.png | Bin 8750 -> 9278 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 32729 -> 13770 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 61320 -> 4232 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 20377 -> 11677 bytes .../mipmap-xxxhdpi/ic_launcher_monochrome.png | Bin 11136 -> 11677 bytes .../main/res/values-night/splash_theme.xml | 11 ++ app/src/main/res/values-ru/strings.xml | 2 +- app/src/main/res/values-v31/themes.xml | 8 +- app/src/main/res/values/constants.xml | 6 +- app/src/main/res/values/splash_theme.xml | 11 ++ app/src/main/res/values/strings.xml | 4 +- app/src/main/res/values/themes.xml | 8 +- .../{etsudoku => shirizu}/ExampleUnitTest.kt | 2 +- .../repository/backup/JsonSerializerTest.kt | 12 +- settings.gradle.kts | 2 +- 452 files changed, 1792 insertions(+), 1744 deletions(-) rename app/src/androidTest/java/org/xtimms/{etsudoku => shirizu}/HiltTestRunner.kt (93%) rename app/src/androidTest/java/org/xtimms/{etsudoku => shirizu}/Instrumentation.kt (88%) rename app/src/androidTest/java/org/xtimms/{etsudoku => shirizu}/SampleData.kt (95%) rename app/src/androidTest/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/AppBackupAgentTest.kt (88%) delete mode 100644 app/src/main/java/org/xtimms/etsudoku/core/exceptions/SyncApiException.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsEvent.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreEvent.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListEvent.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderContent.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/Card.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageEvent.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/utils/material/Constants.kt delete mode 100644 app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackingItem.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/App.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/CompositionLocals.kt (80%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/MainActivity.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku/EtsudokuModule.kt => shirizu/ShirizuModule.kt} (77%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/AsyncImageImpl.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/BottomNavDestination.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/ModifierCollapsable.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/Navigation.kt (76%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/AlertDialogFragment.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/BaseActivity.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/event/PagedUiEvent.kt (55%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/event/UiEvent.kt (66%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/state/PagedUiState.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/state/UiState.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/viewmodel/BaseViewModel.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/base/viewmodel/KotatsuBaseViewModel.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/CacheDir.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/ContentCache.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/ExpiringLruCache.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/ExpiringValue.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/MemoryContentCache.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/PagesCache.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/SafeDeferred.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/cache/StubContentCache.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/AnimatedButton.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/AnimatedNumber.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/BackgroundProgress.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/BottomNavBar.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/Buttons.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/CheckBox.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ContinueReadingButton.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/DetailsToolbar.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/Dialogs.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/DotSeparatorText.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ExploreButton.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/FloatingActionButton.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/HtmlTextField.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/IconButtons.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ListGroupHeader.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/MangaCover.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/MangaGridItem.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/NavigationRail.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/Pill.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/PreferenceItem.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/PullRefresh.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ReadButton.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ScaffoldWithTopAppBar.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/ScoreIndicator.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/SearchBar.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/SettingItem.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/SourceItem.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/Tab.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/TopAppBar.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/effects/ListAnimation.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/effects/Snowflake.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/icons/ArrowDecisionOutline.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/icons/Dice.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/icons/Kotatsu.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/components/shape/WavyShape.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/DatabasePrePopulateCallback.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku/core/database/EtsudokuDatabase.kt => shirizu/core/database/ShirizuDatabase.kt} (52%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/Tables.kt (68%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/BookmarksDao.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/FavouriteCategoriesDao.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/FavouritesDao.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/HistoryDao.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/MangaDao.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/MangaSourcesDao.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/SuggestionDao.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/TagsDao.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/TrackLogsDao.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/dao/TracksDao.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/BookmarksEntity.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/EntityMapping.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/FavouriteCategoryEntity.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/FavouriteEntity.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/HistoryEntity.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/HistoryWithManga.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/MangaEntity.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/MangaSourceEntity.kt (78%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/MangaTagsEntity.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/MangaWithTags.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/SuggestionEntity.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/SuggestionWithManga.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/TagEntity.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/TrackEntity.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/TrackLogEntity.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/database/entity/TrackLogWithManga.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/exceptions/CloudflareProtectedException.kt (72%) create mode 100644 app/src/main/java/org/xtimms/shirizu/core/exceptions/SyncApiException.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/exceptions/TooManyRequestExceptions.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/logs/FileLogger.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/logs/Loggers.kt (71%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/logs/LoggersModule.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/Bookmark.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/FavouriteCategory.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/ListModel.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/ListSortOrder.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/LocalManga.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/Manga.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/MangaHistory.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/MangaSource.kt (72%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/MangaSuggestion.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/MangaWithHistory.kt (76%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/ShelfCategory.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/TagsBlacklist.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/parcelable/ParcelableMangaTags.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/model/parcelable/ParcerableManga.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/MaterialSharedAxis.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/MotionConstants.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/DelayExit.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/ElementContainer.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/KeyframeBasedMotion.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/MaterialArcMotion.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/MathUtils.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/PathMotion.kt (68%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/ProgressThresholds.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/QuadraticBezier.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/SharedElement.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/SharedElementsRoot.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/SharedElementsTransitionSpec.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/motion/sharedelements/SharedMaterialContainer.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/CommonHeaders.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/HttpClients.kt (69%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/NetworkModule.kt (75%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/SSLBypass.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/cookies/AndroidCookieJar.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/cookies/CookieWrapper.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/cookies/MutableCookieJar.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/cookies/PreferencesCookieJar.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/CacheLimitInterceptor.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/CloudflareInterceptor.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/CommonHeadersInterceptor.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/GZipInterceptor.kt (78%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/ImageProxyInterceptor.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/network/interceptors/RateLimitInterceptor.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/os/NetworkState.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/LocalMangaRepository.kt (50%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaDataRepository.kt (77%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaIntent.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaLinkResolver.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaLoaderContextImpl.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaParser.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/MangaRepository.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/RemoteMangaRepository.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/favicon/FaviconFetcher.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/favicon/FaviconUri.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/CbzFilter.kt (77%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/DownloadFormat.kt (62%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/LocalMangaRepository.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/MangaIndex.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/Qualifiers.kt (50%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/TempFileFilter.kt (80%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/input/LocalMangaDirInput.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/input/LocalMangaInput.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/input/LocalMangaZipInput.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/output/LocalMangaDirOutput.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/output/LocalMangaOutput.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/output/LocalMangaUtil.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/parser/local/output/LocalMangaZipOutput.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/prefs/AppSettings.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/prefs/KotatsuAppSettings.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/prefs/SourceSettings.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/screens/EmptyScreen.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/screens/InfoScreen.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/screens/LoadingScreen.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/screens/UpdateDialog.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAccountAuthenticator.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAdapterEntryPoint.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthActivity.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthApi.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthResult.kt (75%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthViewModel.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthenticator.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncAuthenticatorService.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncController.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncHelper.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncHostDialogFragment.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncInterceptor.kt (80%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncProvider.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/sync/SyncSettings.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/tracker/Tracker.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/tracker/model/MangaTracking.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/tracker/model/MangaUpdates.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/tracker/model/TrackingLogItem.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/updates/Updater.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/core/zip/ZipOutput.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/crash/CrashActivity.kt (80%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/crash/CrashScreen.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/crash/GlobalExceptionHandler.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/LocalStorageManager.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/BookmarksRepository.kt (81%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/ExploreRepository.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/FavouritesRepository.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/HistoryRepository.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/MangaSourcesRepository.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/SuggestionRepository.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/TrackingRepository.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/BackupEntry.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/BackupRepository.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/BackupZipInput.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/BackupZipOutput.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/CompositeResult.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/JsonDeserializer.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/JsonSerializer.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/ChapterListItem.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/ChaptersMapper.kt (85%) create mode 100644 app/src/main/java/org/xtimms/shirizu/sections/details/DetailsEvent.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/DetailsInfoHeader.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/DetailsUiState.kt (66%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/DetailsView.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/DetailsViewConstants.kt (72%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/DetailsViewModel.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/FullImageView.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/data/MangaDetails.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/data/ReadingTime.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/domain/BranchComparator.kt (56%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/domain/DetailsInteractor.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/domain/DetailsLoadUseCase.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/domain/ReadingTimeUseCase.kt (78%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/domain/RelatedMangaUseCase.kt (81%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/model/ChapterItem.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/model/HistoryInfo.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/model/ListModelConversionExt.kt (55%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/details/model/MangaBranch.kt (77%) create mode 100644 app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreEvent.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/explore/ExploreUiState.kt (81%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/explore/ExploreView.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/explore/ExploreViewModel.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/explore/SourceItemModel.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/explore/data/SourcesSortOrder.kt (71%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/feed/FeedView.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/feed/FeedViewItem.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/feed/FeedViewModel.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/feed/model/FeedItem.kt (77%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/feed/model/ListModelConversionExt.kt (61%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/history/HistoryItem.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/history/HistoryItemModel.kt (66%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/history/HistoryView.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/history/HistoryViewModel.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/history/SwipeActions.kt (98%) create mode 100644 app/src/main/java/org/xtimms/shirizu/sections/list/MangaListEvent.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/list/MangaListUiState.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/list/MangaListView.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/list/MangaListViewModel.kt (93%) create mode 100644 app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderContent.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/ReaderState.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/ReaderView.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/ReaderViewModel.kt (71%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/domain/ChapterPages.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/domain/ChaptersLoader.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/domain/PageLoader.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/pager/ReaderPage.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/reader/thumbnails/MangaPageFetcher.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/search/SearchView.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/SettingsView.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/SettingsViewModel.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/about/AboutView.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/about/LicenseView.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/about/OpenSourceLicensesView.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/about/UpdateView.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/advanced/AdvancedView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/appearance/AppearanceView.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/appearance/DarkThemeView.kt (80%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/appearance/LanguagesView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/AppBackupAgent.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/BackupEntryModel.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/BackupItem.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/BackupObserver.kt (71%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/BackupRestoreView.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/BackupViewModel.kt (78%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/PeriodicalBackupWorker.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/RestoreItemsView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/backup/RestoreViewModel.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/network/NetworkView.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/shelf/ShelfSettingsView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/shelf/categories/AddCategoryDialog.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/shelf/categories/CategoriesView.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/shelf/categories/CategoryListItem.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/shelf/categories/interactor/ReorderCategory.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/SourcesSettingsView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/SourcesSettingsViewModel.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourceCatalogItem.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourceCatalogItemModel.kt (78%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourceCatalogPage.kt (73%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourcesCatalogListProducer.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourcesCatalogPager.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourcesCatalogTabs.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourcesCatalogView.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/sources/catalog/SourcesCatalogViewModel.kt (87%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/storage/CleanDialog.kt (91%) create mode 100644 app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageEvent.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/storage/StorageUiState.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/storage/StorageView.kt (90%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/settings/storage/StorageViewModel.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/FavouriteManga.kt (62%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/FavouriteTabModel.kt (72%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/LazyShelfGrid.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfGrid.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfItem.kt (81%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfManga.kt (74%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfPager.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfTabs.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfView.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/shelf/ShelfViewModel.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/ChaptersChart.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/MinMaxReadCard.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/StatsCard.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/StatsView.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/categories/CategoriesChartCard.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/categories/DonutChart.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/stats/categories/TagAmount.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/suggestions/SuggestionMangaModel.kt (72%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/suggestions/SuggestionsView.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/sections/suggestions/SuggestionsViewModel.kt (75%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/blend/Blend.java (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/hct/Cam16.java (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/hct/CamSolver.java (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/hct/Hct.java (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/hct/ViewingConditions.java (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/palettes/CorePalette.java (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/palettes/TonalPalette.java (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/utils/ColorUtils.java (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/harmonize/utils/MathUtils.java (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/monet/ColorSpec.kt (75%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/monet/Monet.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/monet/PaletteStyle.kt (99%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/monet/TonalPalettes.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/theme/Color.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/theme/Theme.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/ui/theme/Type.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/AlphanumComparator.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/CancellableSource.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/CoilImageGetter.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/CompositeMutex.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/CompositeMutex2.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/CrashLogUtil.kt (72%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/DeviceUtil.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/DomainValidator.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/Event.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ExtraCloseableSource.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/FileSequence.kt (68%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/FileSize.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ImageFileFilter.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/MediatorStateFlow.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/MetricAffectingSpan.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ProgressResponseBody.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/RetainedLifecycleCoroutineScope.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ReversibleAction.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ReversibleHandle.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/ShareHelper.kt (86%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/StringArrayNavType.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/WebViewUtil.kt (91%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/composable/Bitmap.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/composable/LazyListState.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/composable/Modifier.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/iterator/CloseableIterator.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/iterator/MappingIterator.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Bundle.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Coil.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Collections.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Coroutines.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Date.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/EventFlow.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Flow.kt (96%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/FlowObserver.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/IO.kt (82%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/Primitive.kt (70%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/String.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/lang/WorkManager.kt (88%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/material/Color.kt (95%) create mode 100644 app/src/main/java/org/xtimms/shirizu/utils/material/Constants.kt rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/progress/ProgressDeferred.kt (89%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Android.kt (98%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Context.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Cursor.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/File.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Http.kt (97%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Intent.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Locale.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Network.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/PaddingValues.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Preferences.kt (92%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Throwable.kt (85%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Toast.kt (83%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/utils/system/Uri.kt (95%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/work/PeriodicWorkScheduler.kt (79%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/work/WorkScheduleManager.kt (84%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/work/suggestions/SuggestionsWorker.kt (93%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/work/tracker/TrackWorker.kt (94%) rename app/src/main/java/org/xtimms/{etsudoku => shirizu}/work/tracker/TrackerNotificationChannels.kt (96%) create mode 100644 app/src/main/java/org/xtimms/shirizu/work/tracker/TrackingItem.kt rename app/src/main/res/drawable-hdpi/{ic_stat_etsudoku.png => ic_stat_shirizu.png} (100%) rename app/src/main/res/drawable-mdpi/{ic_stat_etsudoku.png => ic_stat_shirizu.png} (100%) create mode 100644 app/src/main/res/drawable-night-v31/splash_branding_image.xml create mode 100644 app/src/main/res/drawable-night-v31/splash_icon.xml create mode 100644 app/src/main/res/drawable-night/splash_icon.xml delete mode 100644 app/src/main/res/drawable-nodpi/ookami.webp create mode 100644 app/src/main/res/drawable-v31/splash_branding_image.xml create mode 100644 app/src/main/res/drawable-v31/splash_icon.xml rename app/src/main/res/drawable-xhdpi/{ic_stat_etsudoku.png => ic_stat_shirizu.png} (100%) rename app/src/main/res/drawable-xxhdpi/{ic_stat_etsudoku.png => ic_stat_shirizu.png} (100%) rename app/src/main/res/drawable-xxxhdpi/{ic_stat_etsudoku.png => ic_stat_shirizu.png} (100%) create mode 100644 app/src/main/res/drawable/splash_icon.xml create mode 100644 app/src/main/res/values-night/splash_theme.xml create mode 100644 app/src/main/res/values/splash_theme.xml rename app/src/test/java/org/xtimms/{etsudoku => shirizu}/ExampleUnitTest.kt (91%) rename app/src/test/java/org/xtimms/{etsudoku => shirizu}/data/repository/backup/JsonSerializerTest.kt (88%) diff --git a/.idea/.name b/.idea/.name index b036ce5..0d10ea7 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1 +1 @@ -Etsudoku \ No newline at end of file +Shirizu \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index d5945b4..7084d2c 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -13,12 +13,12 @@ - + - + diff --git a/README.md b/README.md index e45dc80..d2e906a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@
- Etsudoku logo + Shirizu logo -# Etsudoku +# Shirizu
-Etsudoku (閲読) - An attempt to write an Android manga reading application on Jetpack Compose using the [Kotatsu parser library](https://github.com/KotatsuApp/kotatsu-parsers). +Shirizu (シリーズ, from Japanese - series) - An attempt to write an Android manga reading application on Jetpack Compose using the [Kotatsu parser library](https://github.com/KotatsuApp/kotatsu-parsers). ## Is it possible to use it now? diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f4388ab..cbe8652 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,11 +19,11 @@ val acraAuthLogin: String = gradleLocalProperties(rootDir).getProperty("authLogi val acraAuthPassword: String = gradleLocalProperties(rootDir).getProperty("authPassword") ?: "\"acra_password\"" android { - namespace = "org.xtimms.etsudoku" + namespace = "org.xtimms.shirizu" compileSdk = 34 defaultConfig { - applicationId = "org.xtimms.etsudoku" + applicationId = "org.xtimms.shirizu" minSdk = 26 targetSdk = 34 versionCode = 1 @@ -37,7 +37,7 @@ android { buildConfigField("String", "ACRA_AUTH_LOGIN", acraAuthLogin) buildConfigField("String", "ACRA_AUTH_PASSWORD", acraAuthPassword) - testInstrumentationRunner = "org.xtimms.etsudoku.HiltTestRunner" + testInstrumentationRunner = "org.xtimms.shirizu.HiltTestRunner" vectorDrawables { useSupportLibrary = true } diff --git a/app/src/androidTest/java/org/xtimms/etsudoku/HiltTestRunner.kt b/app/src/androidTest/java/org/xtimms/shirizu/HiltTestRunner.kt similarity index 93% rename from app/src/androidTest/java/org/xtimms/etsudoku/HiltTestRunner.kt rename to app/src/androidTest/java/org/xtimms/shirizu/HiltTestRunner.kt index 2f389f4..76a3d01 100644 --- a/app/src/androidTest/java/org/xtimms/etsudoku/HiltTestRunner.kt +++ b/app/src/androidTest/java/org/xtimms/shirizu/HiltTestRunner.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.app.Application import android.content.Context diff --git a/app/src/androidTest/java/org/xtimms/etsudoku/Instrumentation.kt b/app/src/androidTest/java/org/xtimms/shirizu/Instrumentation.kt similarity index 88% rename from app/src/androidTest/java/org/xtimms/etsudoku/Instrumentation.kt rename to app/src/androidTest/java/org/xtimms/shirizu/Instrumentation.kt index 1b1b458..45c5a9d 100644 --- a/app/src/androidTest/java/org/xtimms/etsudoku/Instrumentation.kt +++ b/app/src/androidTest/java/org/xtimms/shirizu/Instrumentation.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.app.Instrumentation import kotlin.coroutines.resume diff --git a/app/src/androidTest/java/org/xtimms/etsudoku/SampleData.kt b/app/src/androidTest/java/org/xtimms/shirizu/SampleData.kt similarity index 95% rename from app/src/androidTest/java/org/xtimms/etsudoku/SampleData.kt rename to app/src/androidTest/java/org/xtimms/shirizu/SampleData.kt index da6ad4d..10df7b5 100644 --- a/app/src/androidTest/java/org/xtimms/etsudoku/SampleData.kt +++ b/app/src/androidTest/java/org/xtimms/shirizu/SampleData.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import androidx.test.platform.app.InstrumentationRegistry import com.squareup.moshi.FromJson @@ -11,7 +11,7 @@ import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import okio.buffer import okio.source import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.FavouriteCategory +import org.xtimms.shirizu.core.model.FavouriteCategory import java.util.Date import kotlin.reflect.KClass diff --git a/app/src/androidTest/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgentTest.kt b/app/src/androidTest/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgentTest.kt similarity index 88% rename from app/src/androidTest/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgentTest.kt rename to app/src/androidTest/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgentTest.kt index c9c1ec8..a21af73 100644 --- a/app/src/androidTest/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgentTest.kt +++ b/app/src/androidTest/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgentTest.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.content.res.AssetManager import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -12,12 +12,12 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith -import org.xtimms.etsudoku.SampleData -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.toMangaTags -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.data.repository.backup.BackupRepository +import org.xtimms.shirizu.SampleData +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.toMangaTags +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.data.repository.backup.BackupRepository import java.io.File import javax.inject.Inject @@ -38,7 +38,7 @@ class AppBackupAgentTest { lateinit var backupRepository: BackupRepository @Inject - lateinit var database: EtsudokuDatabase + lateinit var database: ShirizuDatabase @Before fun setUp() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fc1cac8..da2e8ac 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,7 +35,7 @@ android:label="@string/app_name" android:largeHeap="true" android:supportsRtl="true" - android:theme="@style/Theme.Etsudoku.Starting" + android:theme="@style/Theme.Shirizu" android:networkSecurityConfig="@xml/network_security_config" tools:targetApi="tiramisu"> @@ -43,7 +43,7 @@ android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" - android:theme="@style/Theme.Etsudoku"> + android:theme="@style/Theme.Shirizu.SplashTheme"> diff --git a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/SyncApiException.kt b/app/src/main/java/org/xtimms/etsudoku/core/exceptions/SyncApiException.kt deleted file mode 100644 index ee5c9bb..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/SyncApiException.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.xtimms.etsudoku.core.exceptions - -class SyncApiException( - message: String, - val code: Int, -) : RuntimeException(message) \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsEvent.kt b/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsEvent.kt deleted file mode 100644 index 53a1cce..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.xtimms.etsudoku.sections.details - -import org.xtimms.etsudoku.core.base.event.UiEvent - -interface DetailsEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreEvent.kt b/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreEvent.kt deleted file mode 100644 index bd5faba..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.xtimms.etsudoku.sections.explore - -import org.xtimms.etsudoku.core.base.event.UiEvent - -interface ExploreEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListEvent.kt b/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListEvent.kt deleted file mode 100644 index 3194ec5..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.xtimms.etsudoku.sections.list - -import org.xtimms.etsudoku.core.base.event.PagedUiEvent - -interface MangaListEvent : PagedUiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderContent.kt b/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderContent.kt deleted file mode 100644 index 4fb877e..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderContent.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.xtimms.etsudoku.sections.reader - -import org.xtimms.etsudoku.sections.reader.pager.ReaderPage - -data class ReaderContent( - val pages: List, - val state: ReaderState? -) \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/Card.kt b/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/Card.kt deleted file mode 100644 index 87f55a0..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/Card.kt +++ /dev/null @@ -1,88 +0,0 @@ -package org.xtimms.etsudoku.sections.settings.appearance - -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.ElevatedCard -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.PreviewLightDark -import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme - -@Composable -fun MangaCard( - modifier: Modifier = Modifier, - title: String = "Ookami to Koushinryou", - author: String = "Hasekura Isuna", - thumbnailUrl: Any = "", - showCancelButton: Boolean = false, - onCancel: () -> Unit = {}, - onClick: () -> Unit = {}, - progress: Float = 75f, -) { - ElevatedCard( - modifier = modifier - .height(136.dp) - .fillMaxWidth(), - onClick = onClick, - shape = MaterialTheme.shapes.small, - ) { - Row( - modifier = Modifier.fillMaxWidth() - ) { - Image( - modifier = Modifier - .padding() - .fillMaxHeight() - .clip(MaterialTheme.shapes.small), - painter = painterResource(id = R.drawable.ookami), - contentDescription = null - ) - Column( - modifier = Modifier - .weight(1f) - .padding(horizontal = 12.dp, vertical = 8.dp) - .fillMaxWidth(), - verticalArrangement = Arrangement.Top - ) { - Text( - text = title, - style = MaterialTheme.typography.titleLarge, - color = MaterialTheme.colorScheme.onSurface, - maxLines = 2, - overflow = TextOverflow.Ellipsis - ) - if (author != "null") Text( - modifier = Modifier.padding(top = 3.dp), - text = author, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) - } - } - } -} - -@PreviewLightDark -@Composable -fun MangaCardPreview() { - EtsudokuTheme { - MangaCard( - thumbnailUrl = "https://spice-and-wolf.com/special/img/visual_january.jpg" - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageEvent.kt b/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageEvent.kt deleted file mode 100644 index a547644..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.xtimms.etsudoku.sections.settings.storage - -import org.xtimms.etsudoku.core.base.event.UiEvent - -interface StorageEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/material/Constants.kt b/app/src/main/java/org/xtimms/etsudoku/utils/material/Constants.kt deleted file mode 100644 index b6fea3e..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/utils/material/Constants.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.xtimms.etsudoku.utils.material - -const val SecondaryItemAlpha = .78f \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackingItem.kt b/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackingItem.kt deleted file mode 100644 index 6b9c4fe..0000000 --- a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackingItem.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.xtimms.etsudoku.work.tracker - -import org.xtimms.etsudoku.core.tracker.model.MangaTracking - -data class TrackingItem( - val tracking: MangaTracking, - val channelId: String?, -) \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/App.kt b/app/src/main/java/org/xtimms/shirizu/App.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/App.kt rename to app/src/main/java/org/xtimms/shirizu/App.kt index c850930..b8d6e67 100644 --- a/app/src/main/java/org/xtimms/etsudoku/App.kt +++ b/app/src/main/java/org/xtimms/shirizu/App.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.app.Application import android.content.Context @@ -20,12 +20,12 @@ import org.acra.data.StringFormat import org.acra.ktx.initAcra import org.acra.sender.HttpSender import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.KotatsuAppSettings -import org.xtimms.etsudoku.core.updates.Updater -import org.xtimms.etsudoku.utils.lang.processLifecycleScope -import org.xtimms.etsudoku.work.WorkScheduleManager +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.KotatsuAppSettings +import org.xtimms.shirizu.core.updates.Updater +import org.xtimms.shirizu.utils.lang.processLifecycleScope +import org.xtimms.shirizu.work.WorkScheduleManager import javax.inject.Inject import javax.inject.Provider @@ -33,7 +33,7 @@ import javax.inject.Provider class App : Application(), Configuration.Provider { @Inject - lateinit var database: Provider + lateinit var database: Provider @Inject lateinit var settings: KotatsuAppSettings diff --git a/app/src/main/java/org/xtimms/etsudoku/CompositionLocals.kt b/app/src/main/java/org/xtimms/shirizu/CompositionLocals.kt similarity index 80% rename from app/src/main/java/org/xtimms/etsudoku/CompositionLocals.kt rename to app/src/main/java/org/xtimms/shirizu/CompositionLocals.kt index 3cc9ea3..435ec68 100644 --- a/app/src/main/java/org/xtimms/etsudoku/CompositionLocals.kt +++ b/app/src/main/java/org/xtimms/shirizu/CompositionLocals.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.os.Build import androidx.compose.foundation.layout.PaddingValues @@ -11,13 +11,13 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.ui.theme.SEED -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.DarkThemePreference -import org.xtimms.etsudoku.core.prefs.paletteStyles -import org.xtimms.etsudoku.ui.monet.LocalTonalPalettes -import org.xtimms.etsudoku.ui.monet.PaletteStyle -import org.xtimms.etsudoku.ui.monet.TonalPalettes.Companion.toTonalPalettes +import org.xtimms.shirizu.ui.theme.SEED +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.DarkThemePreference +import org.xtimms.shirizu.core.prefs.paletteStyles +import org.xtimms.shirizu.ui.monet.LocalTonalPalettes +import org.xtimms.shirizu.ui.monet.PaletteStyle +import org.xtimms.shirizu.ui.monet.TonalPalettes.Companion.toTonalPalettes data class BottomSheetScrollState( val topPadding: Dp, diff --git a/app/src/main/java/org/xtimms/etsudoku/MainActivity.kt b/app/src/main/java/org/xtimms/shirizu/MainActivity.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/MainActivity.kt rename to app/src/main/java/org/xtimms/shirizu/MainActivity.kt index 172c537..c90083c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/MainActivity.kt +++ b/app/src/main/java/org/xtimms/shirizu/MainActivity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.Manifest import android.content.Intent @@ -58,18 +58,18 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking -import org.xtimms.etsudoku.core.Navigation -import org.xtimms.etsudoku.core.components.BottomNavBar -import org.xtimms.etsudoku.core.components.ContinueReadingButton -import org.xtimms.etsudoku.core.components.NavigationRail -import org.xtimms.etsudoku.core.components.TopAppBar -import org.xtimms.etsudoku.core.logs.FileLogger -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.screens.UpdateDialogImpl -import org.xtimms.etsudoku.core.updates.Updater -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.system.setLanguage -import org.xtimms.etsudoku.utils.system.suspendToast +import org.xtimms.shirizu.core.Navigation +import org.xtimms.shirizu.core.components.BottomNavBar +import org.xtimms.shirizu.core.components.ContinueReadingButton +import org.xtimms.shirizu.core.components.NavigationRail +import org.xtimms.shirizu.core.components.TopAppBar +import org.xtimms.shirizu.core.logs.FileLogger +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.screens.UpdateDialogImpl +import org.xtimms.shirizu.core.updates.Updater +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.system.setLanguage +import org.xtimms.shirizu.utils.system.suspendToast import javax.inject.Inject @OptIn(ExperimentalMaterial3WindowSizeClassApi::class) @@ -142,7 +142,7 @@ class MainActivity : ComponentActivity() { } if (isReady.value) { SettingsProvider { - EtsudokuTheme( + ShirizuTheme( darkTheme = LocalDarkTheme.current.isDarkTheme(), isDynamicColorEnabled = LocalDynamicColorSwitch.current, isHighContrastModeEnabled = LocalDarkTheme.current.isHighContrastModeEnabled, diff --git a/app/src/main/java/org/xtimms/etsudoku/EtsudokuModule.kt b/app/src/main/java/org/xtimms/shirizu/ShirizuModule.kt similarity index 77% rename from app/src/main/java/org/xtimms/etsudoku/EtsudokuModule.kt rename to app/src/main/java/org/xtimms/shirizu/ShirizuModule.kt index 2ca9ab1..ae7d76b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/EtsudokuModule.kt +++ b/app/src/main/java/org/xtimms/shirizu/ShirizuModule.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku +package org.xtimms.shirizu import android.app.Application import android.content.Context @@ -20,28 +20,28 @@ import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.asSharedFlow import okhttp3.OkHttpClient import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.core.cache.ContentCache -import org.xtimms.etsudoku.core.cache.MemoryContentCache -import org.xtimms.etsudoku.core.cache.StubContentCache -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.network.MangaHttpClient -import org.xtimms.etsudoku.core.network.interceptors.ImageProxyInterceptor -import org.xtimms.etsudoku.core.os.NetworkState -import org.xtimms.etsudoku.core.parser.MangaLoaderContextImpl -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.favicon.FaviconFetcher -import org.xtimms.etsudoku.core.parser.local.LocalStorageChanges -import org.xtimms.etsudoku.sections.reader.thumbnails.MangaPageFetcher -import org.xtimms.etsudoku.utils.CoilImageGetter -import org.xtimms.etsudoku.utils.system.connectivityManager -import org.xtimms.etsudoku.utils.system.isLowRamDevice +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.core.cache.ContentCache +import org.xtimms.shirizu.core.cache.MemoryContentCache +import org.xtimms.shirizu.core.cache.StubContentCache +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.network.MangaHttpClient +import org.xtimms.shirizu.core.network.interceptors.ImageProxyInterceptor +import org.xtimms.shirizu.core.os.NetworkState +import org.xtimms.shirizu.core.parser.MangaLoaderContextImpl +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.favicon.FaviconFetcher +import org.xtimms.shirizu.core.parser.local.LocalStorageChanges +import org.xtimms.shirizu.sections.reader.thumbnails.MangaPageFetcher +import org.xtimms.shirizu.utils.CoilImageGetter +import org.xtimms.shirizu.utils.system.connectivityManager +import org.xtimms.shirizu.utils.system.isLowRamDevice import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) -interface EtsudokuModule { +interface ShirizuModule { @Binds fun bindMangaLoaderContext(mangaLoaderContextImpl: MangaLoaderContextImpl): MangaLoaderContext @@ -61,8 +61,8 @@ interface EtsudokuModule { @Singleton fun provideMangaDatabase( @ApplicationContext context: Context, - ): EtsudokuDatabase { - return EtsudokuDatabase(context) + ): ShirizuDatabase { + return ShirizuDatabase(context) } @Provides diff --git a/app/src/main/java/org/xtimms/etsudoku/core/AsyncImageImpl.kt b/app/src/main/java/org/xtimms/shirizu/core/AsyncImageImpl.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/AsyncImageImpl.kt rename to app/src/main/java/org/xtimms/shirizu/core/AsyncImageImpl.kt index d8127ca..3f3236e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/AsyncImageImpl.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/AsyncImageImpl.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core +package org.xtimms.shirizu.core import androidx.compose.foundation.Image import androidx.compose.runtime.Composable @@ -14,8 +14,8 @@ import androidx.compose.ui.res.painterResource import coil.ImageLoader import coil.compose.AsyncImage import coil.compose.AsyncImagePainter -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.utils.composable.rememberResourceBitmapPainter +import org.xtimms.shirizu.R +import org.xtimms.shirizu.utils.composable.rememberResourceBitmapPainter @Composable fun AsyncImageImpl( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/BottomNavDestination.kt b/app/src/main/java/org/xtimms/shirizu/core/BottomNavDestination.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/BottomNavDestination.kt rename to app/src/main/java/org/xtimms/shirizu/core/BottomNavDestination.kt index 7569295..1d5af18 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/BottomNavDestination.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/BottomNavDestination.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core +package org.xtimms.shirizu.core import androidx.annotation.StringRes import androidx.compose.material.icons.Icons @@ -11,10 +11,10 @@ import androidx.compose.material.icons.outlined.LocalLibrary import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.sections.explore.EXPLORE_DESTINATION -import org.xtimms.etsudoku.sections.history.HISTORY_DESTINATION -import org.xtimms.etsudoku.sections.shelf.SHELF_DESTINATION +import org.xtimms.shirizu.R +import org.xtimms.shirizu.sections.explore.EXPLORE_DESTINATION +import org.xtimms.shirizu.sections.history.HISTORY_DESTINATION +import org.xtimms.shirizu.sections.shelf.SHELF_DESTINATION sealed class BottomNavDestination( val value: String, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/ModifierCollapsable.kt b/app/src/main/java/org/xtimms/shirizu/core/ModifierCollapsable.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/ModifierCollapsable.kt rename to app/src/main/java/org/xtimms/shirizu/core/ModifierCollapsable.kt index 3941b9d..74836bb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/ModifierCollapsable.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/ModifierCollapsable.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core +package org.xtimms.shirizu.core import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.AnimationVector1D diff --git a/app/src/main/java/org/xtimms/etsudoku/core/Navigation.kt b/app/src/main/java/org/xtimms/shirizu/core/Navigation.kt similarity index 76% rename from app/src/main/java/org/xtimms/etsudoku/core/Navigation.kt rename to app/src/main/java/org/xtimms/shirizu/core/Navigation.kt index 3af70d2..9b77fd7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/Navigation.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/Navigation.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core +package org.xtimms.shirizu.core import android.graphics.Path import android.view.animation.PathInterpolator @@ -20,69 +20,69 @@ import androidx.navigation.compose.composable import androidx.navigation.navArgument import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.logs.FileLogger -import org.xtimms.etsudoku.sections.details.DETAILS_DESTINATION -import org.xtimms.etsudoku.sections.details.DetailsView -import org.xtimms.etsudoku.sections.details.FULL_POSTER_DESTINATION -import org.xtimms.etsudoku.sections.details.FullImageView -import org.xtimms.etsudoku.sections.details.MANGA_ID_ARGUMENT -import org.xtimms.etsudoku.sections.details.PICTURES_ARGUMENT -import org.xtimms.etsudoku.sections.explore.ExploreView -import org.xtimms.etsudoku.sections.feed.FEED_DESTINATION -import org.xtimms.etsudoku.sections.feed.FeedView -import org.xtimms.etsudoku.sections.history.HistoryView -import org.xtimms.etsudoku.sections.list.LIST_DESTINATION -import org.xtimms.etsudoku.sections.list.MangaListView -import org.xtimms.etsudoku.sections.list.PROVIDER_ARGUMENT -import org.xtimms.etsudoku.sections.reader.READER_DESTINATION -import org.xtimms.etsudoku.sections.reader.ReaderView -import org.xtimms.etsudoku.sections.search.SEARCH_DESTINATION -import org.xtimms.etsudoku.sections.search.SearchHostView -import org.xtimms.etsudoku.sections.settings.SETTINGS_DESTINATION -import org.xtimms.etsudoku.sections.settings.SettingsView -import org.xtimms.etsudoku.sections.settings.about.ABOUT_DESTINATION -import org.xtimms.etsudoku.sections.settings.about.AboutView -import org.xtimms.etsudoku.sections.settings.about.LICENSES_DESTINATION -import org.xtimms.etsudoku.sections.settings.about.LICENSE_CONTENT_ARGUMENT -import org.xtimms.etsudoku.sections.settings.about.LICENSE_DESTINATION -import org.xtimms.etsudoku.sections.settings.about.LICENSE_NAME_ARGUMENT -import org.xtimms.etsudoku.sections.settings.about.LICENSE_WEBSITE_ARGUMENT -import org.xtimms.etsudoku.sections.settings.about.LicenseView -import org.xtimms.etsudoku.sections.settings.about.OpenSourceLicensesView -import org.xtimms.etsudoku.sections.settings.about.UPDATES_DESTINATION -import org.xtimms.etsudoku.sections.settings.about.UpdateView -import org.xtimms.etsudoku.sections.settings.advanced.ADVANCED_DESTINATION -import org.xtimms.etsudoku.sections.settings.advanced.AdvancedView -import org.xtimms.etsudoku.sections.settings.appearance.APPEARANCE_DESTINATION -import org.xtimms.etsudoku.sections.settings.appearance.AppearanceView -import org.xtimms.etsudoku.sections.settings.appearance.DARK_THEME_DESTINATION -import org.xtimms.etsudoku.sections.settings.appearance.DarkThemeView -import org.xtimms.etsudoku.sections.settings.appearance.LANGUAGES_DESTINATION -import org.xtimms.etsudoku.sections.settings.appearance.LanguagesView -import org.xtimms.etsudoku.sections.settings.backup.BACKUP_RESTORE_DESTINATION -import org.xtimms.etsudoku.sections.settings.backup.BackupRestoreView -import org.xtimms.etsudoku.sections.settings.backup.RESTORE_ARGUMENT -import org.xtimms.etsudoku.sections.settings.backup.RESTORE_DESTINATION -import org.xtimms.etsudoku.sections.settings.backup.RestoreItemsView -import org.xtimms.etsudoku.sections.settings.network.NETWORK_DESTINATION -import org.xtimms.etsudoku.sections.settings.network.NetworkView -import org.xtimms.etsudoku.sections.settings.shelf.SHELF_SETTINGS_DESTINATION -import org.xtimms.etsudoku.sections.settings.shelf.ShelfSettingsView -import org.xtimms.etsudoku.sections.settings.shelf.categories.CATEGORIES_DESTINATION -import org.xtimms.etsudoku.sections.settings.shelf.categories.CategoriesView -import org.xtimms.etsudoku.sections.settings.sources.SOURCES_DESTINATION -import org.xtimms.etsudoku.sections.settings.sources.SourcesView -import org.xtimms.etsudoku.sections.settings.sources.catalog.CATALOG_DESTINATION -import org.xtimms.etsudoku.sections.settings.sources.catalog.SourcesCatalogView -import org.xtimms.etsudoku.sections.settings.storage.STORAGE_DESTINATION -import org.xtimms.etsudoku.sections.settings.storage.StorageView -import org.xtimms.etsudoku.sections.shelf.ShelfView -import org.xtimms.etsudoku.sections.stats.STATS_DESTINATION -import org.xtimms.etsudoku.sections.stats.StatsView -import org.xtimms.etsudoku.sections.suggestions.SUGGESTIONS_DESTINATION -import org.xtimms.etsudoku.sections.suggestions.SuggestionsView -import org.xtimms.etsudoku.utils.StringArrayNavType -import org.xtimms.etsudoku.utils.lang.removeFirstAndLast +import org.xtimms.shirizu.core.logs.FileLogger +import org.xtimms.shirizu.sections.details.DETAILS_DESTINATION +import org.xtimms.shirizu.sections.details.DetailsView +import org.xtimms.shirizu.sections.details.FULL_POSTER_DESTINATION +import org.xtimms.shirizu.sections.details.FullImageView +import org.xtimms.shirizu.sections.details.MANGA_ID_ARGUMENT +import org.xtimms.shirizu.sections.details.PICTURES_ARGUMENT +import org.xtimms.shirizu.sections.explore.ExploreView +import org.xtimms.shirizu.sections.feed.FEED_DESTINATION +import org.xtimms.shirizu.sections.feed.FeedView +import org.xtimms.shirizu.sections.history.HistoryView +import org.xtimms.shirizu.sections.list.LIST_DESTINATION +import org.xtimms.shirizu.sections.list.MangaListView +import org.xtimms.shirizu.sections.list.PROVIDER_ARGUMENT +import org.xtimms.shirizu.sections.reader.READER_DESTINATION +import org.xtimms.shirizu.sections.reader.ReaderView +import org.xtimms.shirizu.sections.search.SEARCH_DESTINATION +import org.xtimms.shirizu.sections.search.SearchHostView +import org.xtimms.shirizu.sections.settings.SETTINGS_DESTINATION +import org.xtimms.shirizu.sections.settings.SettingsView +import org.xtimms.shirizu.sections.settings.about.ABOUT_DESTINATION +import org.xtimms.shirizu.sections.settings.about.AboutView +import org.xtimms.shirizu.sections.settings.about.LICENSES_DESTINATION +import org.xtimms.shirizu.sections.settings.about.LICENSE_CONTENT_ARGUMENT +import org.xtimms.shirizu.sections.settings.about.LICENSE_DESTINATION +import org.xtimms.shirizu.sections.settings.about.LICENSE_NAME_ARGUMENT +import org.xtimms.shirizu.sections.settings.about.LICENSE_WEBSITE_ARGUMENT +import org.xtimms.shirizu.sections.settings.about.LicenseView +import org.xtimms.shirizu.sections.settings.about.OpenSourceLicensesView +import org.xtimms.shirizu.sections.settings.about.UPDATES_DESTINATION +import org.xtimms.shirizu.sections.settings.about.UpdateView +import org.xtimms.shirizu.sections.settings.advanced.ADVANCED_DESTINATION +import org.xtimms.shirizu.sections.settings.advanced.AdvancedView +import org.xtimms.shirizu.sections.settings.appearance.APPEARANCE_DESTINATION +import org.xtimms.shirizu.sections.settings.appearance.AppearanceView +import org.xtimms.shirizu.sections.settings.appearance.DARK_THEME_DESTINATION +import org.xtimms.shirizu.sections.settings.appearance.DarkThemeView +import org.xtimms.shirizu.sections.settings.appearance.LANGUAGES_DESTINATION +import org.xtimms.shirizu.sections.settings.appearance.LanguagesView +import org.xtimms.shirizu.sections.settings.backup.BACKUP_RESTORE_DESTINATION +import org.xtimms.shirizu.sections.settings.backup.BackupRestoreView +import org.xtimms.shirizu.sections.settings.backup.RESTORE_ARGUMENT +import org.xtimms.shirizu.sections.settings.backup.RESTORE_DESTINATION +import org.xtimms.shirizu.sections.settings.backup.RestoreItemsView +import org.xtimms.shirizu.sections.settings.network.NETWORK_DESTINATION +import org.xtimms.shirizu.sections.settings.network.NetworkView +import org.xtimms.shirizu.sections.settings.shelf.SHELF_SETTINGS_DESTINATION +import org.xtimms.shirizu.sections.settings.shelf.ShelfSettingsView +import org.xtimms.shirizu.sections.settings.shelf.categories.CATEGORIES_DESTINATION +import org.xtimms.shirizu.sections.settings.shelf.categories.CategoriesView +import org.xtimms.shirizu.sections.settings.sources.SOURCES_DESTINATION +import org.xtimms.shirizu.sections.settings.sources.SourcesView +import org.xtimms.shirizu.sections.settings.sources.catalog.CATALOG_DESTINATION +import org.xtimms.shirizu.sections.settings.sources.catalog.SourcesCatalogView +import org.xtimms.shirizu.sections.settings.storage.STORAGE_DESTINATION +import org.xtimms.shirizu.sections.settings.storage.StorageView +import org.xtimms.shirizu.sections.shelf.ShelfView +import org.xtimms.shirizu.sections.stats.STATS_DESTINATION +import org.xtimms.shirizu.sections.stats.StatsView +import org.xtimms.shirizu.sections.suggestions.SUGGESTIONS_DESTINATION +import org.xtimms.shirizu.sections.suggestions.SuggestionsView +import org.xtimms.shirizu.utils.StringArrayNavType +import org.xtimms.shirizu.utils.lang.removeFirstAndLast const val DURATION_ENTER = 400 const val DURATION_EXIT = 200 diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/AlertDialogFragment.kt b/app/src/main/java/org/xtimms/shirizu/core/base/AlertDialogFragment.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/base/AlertDialogFragment.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/AlertDialogFragment.kt index 605da44..341ca3c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/AlertDialogFragment.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/AlertDialogFragment.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base +package org.xtimms.shirizu.core.base import android.app.Dialog import android.os.Bundle diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/BaseActivity.kt b/app/src/main/java/org/xtimms/shirizu/core/base/BaseActivity.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/base/BaseActivity.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/BaseActivity.kt index 8fd850a..a31dafc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/BaseActivity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/BaseActivity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base +package org.xtimms.shirizu.core.base import android.content.Intent import android.content.res.Configuration diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/event/PagedUiEvent.kt b/app/src/main/java/org/xtimms/shirizu/core/base/event/PagedUiEvent.kt similarity index 55% rename from app/src/main/java/org/xtimms/etsudoku/core/base/event/PagedUiEvent.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/event/PagedUiEvent.kt index dcfde69..5c9356f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/event/PagedUiEvent.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/event/PagedUiEvent.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.event +package org.xtimms.shirizu.core.base.event interface PagedUiEvent : UiEvent { fun loadMore() diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/event/UiEvent.kt b/app/src/main/java/org/xtimms/shirizu/core/base/event/UiEvent.kt similarity index 66% rename from app/src/main/java/org/xtimms/etsudoku/core/base/event/UiEvent.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/event/UiEvent.kt index 096f134..f76ebca 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/event/UiEvent.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/event/UiEvent.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.event +package org.xtimms.shirizu.core.base.event interface UiEvent { fun showMessage(message: String?) diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/state/PagedUiState.kt b/app/src/main/java/org/xtimms/shirizu/core/base/state/PagedUiState.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/core/base/state/PagedUiState.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/state/PagedUiState.kt index 9458a6a..a284862 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/state/PagedUiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/state/PagedUiState.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.state +package org.xtimms.shirizu.core.base.state abstract class PagedUiState : UiState() { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/state/UiState.kt b/app/src/main/java/org/xtimms/shirizu/core/base/state/UiState.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/base/state/UiState.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/state/UiState.kt index 0f0e310..b1b9050 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/state/UiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/state/UiState.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.state +package org.xtimms.shirizu.core.base.state abstract class UiState { abstract val isLoading: Boolean diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/BaseViewModel.kt b/app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/BaseViewModel.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/BaseViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/BaseViewModel.kt index 942a5e5..7005381 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/BaseViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/BaseViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.viewmodel +package org.xtimms.shirizu.core.base.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -11,11 +11,11 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import org.xtimms.etsudoku.core.base.event.UiEvent -import org.xtimms.etsudoku.core.base.state.UiState -import org.xtimms.etsudoku.utils.lang.EventFlow -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call +import org.xtimms.shirizu.core.base.event.UiEvent +import org.xtimms.shirizu.core.base.state.UiState +import org.xtimms.shirizu.utils.lang.EventFlow +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.cancellation.CancellationException diff --git a/app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/KotatsuBaseViewModel.kt b/app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/KotatsuBaseViewModel.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/KotatsuBaseViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/KotatsuBaseViewModel.kt index 89c205d..3db9fe1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/base/viewmodel/KotatsuBaseViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/base/viewmodel/KotatsuBaseViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.base.viewmodel +package org.xtimms.shirizu.core.base.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -17,9 +17,9 @@ import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import org.xtimms.etsudoku.utils.lang.EventFlow -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call +import org.xtimms.shirizu.utils.lang.EventFlow +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext import kotlin.coroutines.cancellation.CancellationException diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/CacheDir.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/CacheDir.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/CacheDir.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/CacheDir.kt index a2f7047..beecbc9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/CacheDir.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/CacheDir.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache enum class CacheDir(val dir: String) { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/ContentCache.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/ContentCache.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/ContentCache.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/ContentCache.kt index 2e201fa..21d0a91 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/ContentCache.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/ContentCache.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaPage diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringLruCache.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringLruCache.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringLruCache.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringLruCache.kt index e8bc371..8d1f768 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringLruCache.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringLruCache.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import androidx.collection.LruCache import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringValue.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringValue.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringValue.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringValue.kt index ffef8c9..3c6a5f1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/ExpiringValue.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/ExpiringValue.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import android.os.SystemClock import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/MemoryContentCache.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/MemoryContentCache.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/MemoryContentCache.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/MemoryContentCache.kt index 19a1401..bec6d8f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/MemoryContentCache.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/MemoryContentCache.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import android.app.Application import android.content.ComponentCallbacks2 diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/PagesCache.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/PagesCache.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/PagesCache.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/PagesCache.kt index dc65337..f13e671 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/PagesCache.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/PagesCache.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import android.content.Context import android.graphics.Bitmap @@ -13,13 +13,13 @@ import okio.buffer import okio.sink import org.koitharu.kotatsu.parsers.util.SuspendLazy import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.utils.FileSize -import org.xtimms.etsudoku.utils.lang.longHashCode -import org.xtimms.etsudoku.utils.lang.writeAllCancellable -import org.xtimms.etsudoku.utils.system.compressToPNG -import org.xtimms.etsudoku.utils.system.subdir -import org.xtimms.etsudoku.utils.system.takeIfReadable -import org.xtimms.etsudoku.utils.system.takeIfWriteable +import org.xtimms.shirizu.utils.FileSize +import org.xtimms.shirizu.utils.lang.longHashCode +import org.xtimms.shirizu.utils.lang.writeAllCancellable +import org.xtimms.shirizu.utils.system.compressToPNG +import org.xtimms.shirizu.utils.system.subdir +import org.xtimms.shirizu.utils.system.takeIfReadable +import org.xtimms.shirizu.utils.system.takeIfWriteable import java.io.File import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/SafeDeferred.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/SafeDeferred.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/SafeDeferred.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/SafeDeferred.kt index 632592b..a38922a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/SafeDeferred.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/SafeDeferred.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import kotlinx.coroutines.Deferred diff --git a/app/src/main/java/org/xtimms/etsudoku/core/cache/StubContentCache.kt b/app/src/main/java/org/xtimms/shirizu/core/cache/StubContentCache.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/cache/StubContentCache.kt rename to app/src/main/java/org/xtimms/shirizu/core/cache/StubContentCache.kt index 21d9380..f2ad5da 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/cache/StubContentCache.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/cache/StubContentCache.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.cache +package org.xtimms.shirizu.core.cache import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaPage diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedButton.kt b/app/src/main/java/org/xtimms/shirizu/core/components/AnimatedButton.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedButton.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/AnimatedButton.kt index 6ca2e69..19dbb75 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedButton.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/AnimatedButton.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.ExperimentalFoundationApi @@ -31,7 +31,7 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.min -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.ui.theme.ShirizuTheme import java.lang.Integer.MAX_VALUE import kotlin.math.min @@ -105,7 +105,7 @@ fun AnimatedButton( @Preview(name = "Icon") @Composable private fun PreviewWithIcon() { - EtsudokuTheme { + ShirizuTheme { AnimatedButton( type = ButtonType.PRIMARY, icon = Icons.Outlined.Edit diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedNumber.kt b/app/src/main/java/org/xtimms/shirizu/core/components/AnimatedNumber.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedNumber.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/AnimatedNumber.kt index 7850196..4f076f7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/AnimatedNumber.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/AnimatedNumber.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/BackgroundProgress.kt b/app/src/main/java/org/xtimms/shirizu/core/components/BackgroundProgress.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/components/BackgroundProgress.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/BackgroundProgress.kt index 5b88049..0e01841 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/BackgroundProgress.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/BackgroundProgress.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.TweenSpec @@ -14,8 +14,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.times -import org.xtimms.etsudoku.core.components.shape.WavyShape -import org.xtimms.etsudoku.utils.lang.clamp +import org.xtimms.shirizu.core.components.shape.WavyShape +import org.xtimms.shirizu.utils.lang.clamp @Composable fun BackgroundProgress( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/BottomNavBar.kt b/app/src/main/java/org/xtimms/shirizu/core/components/BottomNavBar.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/core/components/BottomNavBar.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/BottomNavBar.kt index 0f516e0..7bbf32d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/BottomNavBar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/BottomNavBar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.Animatable @@ -19,11 +19,11 @@ import androidx.navigation.NavController import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.compose.currentBackStackEntryAsState import kotlinx.coroutines.launch -import org.xtimms.etsudoku.core.BottomNavDestination -import org.xtimms.etsudoku.core.BottomNavDestination.Companion.Icon -import org.xtimms.etsudoku.sections.explore.EXPLORE_DESTINATION -import org.xtimms.etsudoku.sections.history.HISTORY_DESTINATION -import org.xtimms.etsudoku.sections.shelf.SHELF_DESTINATION +import org.xtimms.shirizu.core.BottomNavDestination +import org.xtimms.shirizu.core.BottomNavDestination.Companion.Icon +import org.xtimms.shirizu.sections.explore.EXPLORE_DESTINATION +import org.xtimms.shirizu.sections.history.HISTORY_DESTINATION +import org.xtimms.shirizu.sections.shelf.SHELF_DESTINATION @Composable fun BottomNavBar( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/Buttons.kt b/app/src/main/java/org/xtimms/shirizu/core/components/Buttons.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/components/Buttons.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/Buttons.kt index 6205777..2f1707c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/Buttons.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/Buttons.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -12,7 +12,7 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R @Composable fun ConfirmButton( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/CheckBox.kt b/app/src/main/java/org/xtimms/shirizu/core/components/CheckBox.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/CheckBox.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/CheckBox.kt index 2cf2299..921348a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/CheckBox.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/CheckBox.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ContinueReadingButton.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ContinueReadingButton.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ContinueReadingButton.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ContinueReadingButton.kt index 3c7863d..4508d9e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ContinueReadingButton.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ContinueReadingButton.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.animateFloatAsState @@ -23,9 +23,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.navigation.NavController import androidx.navigation.compose.currentBackStackEntryAsState -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.sections.history.HISTORY_DESTINATION -import org.xtimms.etsudoku.sections.reader.READER_DESTINATION +import org.xtimms.shirizu.R +import org.xtimms.shirizu.sections.history.HISTORY_DESTINATION +import org.xtimms.shirizu.sections.reader.READER_DESTINATION @Composable fun ContinueReadingButton( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/DetailsToolbar.kt b/app/src/main/java/org/xtimms/shirizu/core/components/DetailsToolbar.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/core/components/DetailsToolbar.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/DetailsToolbar.kt index 5360a4f..1c81644 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/DetailsToolbar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/DetailsToolbar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.core.animateDpAsState import androidx.compose.foundation.background diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/Dialogs.kt b/app/src/main/java/org/xtimms/shirizu/core/components/Dialogs.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/Dialogs.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/Dialogs.kt index df23875..e3e2a2d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/Dialogs.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/Dialogs.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -34,7 +34,7 @@ private val ButtonsCrossAxisSpacing = Arrangement.spacedBy(12.dp, Alignment.Top) @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable -fun EtsudokuDialog( +fun ShirizuDialog( onDismissRequest: () -> Unit, confirmButton: @Composable () -> Unit, modifier: Modifier = Modifier, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/DotSeparatorText.kt b/app/src/main/java/org/xtimms/shirizu/core/components/DotSeparatorText.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/components/DotSeparatorText.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/DotSeparatorText.kt index 4954b25..dc897e2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/DotSeparatorText.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/DotSeparatorText.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.material3.Text import androidx.compose.runtime.Composable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ExploreButton.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ExploreButton.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ExploreButton.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ExploreButton.kt index db27509..118ac74 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ExploreButton.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ExploreButton.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.height diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/FloatingActionButton.kt b/app/src/main/java/org/xtimms/shirizu/core/components/FloatingActionButton.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/FloatingActionButton.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/FloatingActionButton.kt index 8faacf6..40c84a5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/FloatingActionButton.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/FloatingActionButton.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.CubicBezierEasing diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/HtmlTextField.kt b/app/src/main/java/org/xtimms/shirizu/core/components/HtmlTextField.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/components/HtmlTextField.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/HtmlTextField.kt index 207727e..a62a9e2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/HtmlTextField.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/HtmlTextField.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import android.text.Spanned import android.text.style.BulletSpan @@ -28,7 +28,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.sp import androidx.core.text.HtmlCompat -import org.xtimms.etsudoku.utils.spanStyle +import org.xtimms.shirizu.utils.spanStyle private const val URL_TAG = "url_tag" diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/IconButtons.kt b/app/src/main/java/org/xtimms/shirizu/core/components/IconButtons.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/IconButtons.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/IconButtons.kt index 0fce17a..3670580 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/IconButtons.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/IconButtons.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons @@ -14,7 +14,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R @Composable fun BackIconButton( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ListGroupHeader.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ListGroupHeader.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ListGroupHeader.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ListGroupHeader.kt index cf459ec..2b1c3b1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ListGroupHeader.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ListGroupHeader.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/MangaCover.kt b/app/src/main/java/org/xtimms/shirizu/core/components/MangaCover.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/components/MangaCover.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/MangaCover.kt index 92bd531..d4a5591 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/MangaCover.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/MangaCover.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.Image import androidx.compose.foundation.clickable @@ -14,7 +14,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.semantics.Role import coil.ImageLoader import coil.compose.AsyncImage -import org.xtimms.etsudoku.core.AsyncImageImpl +import org.xtimms.shirizu.core.AsyncImageImpl enum class MangaCover(val ratio: Float) { Square(1f / 1f), diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/MangaGridItem.kt b/app/src/main/java/org/xtimms/shirizu/core/components/MangaGridItem.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/MangaGridItem.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/MangaGridItem.kt index 7d28c48..428bd96 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/MangaGridItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/MangaGridItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background @@ -33,7 +33,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.AsyncImageImpl +import org.xtimms.shirizu.core.AsyncImageImpl private const val GridSelectedCoverAlpha = 0.76f diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/NavigationRail.kt b/app/src/main/java/org/xtimms/shirizu/core/components/NavigationRail.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/components/NavigationRail.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/NavigationRail.kt index fe63dc6..7b030c7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/NavigationRail.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/NavigationRail.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -19,9 +19,9 @@ import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.compose.currentBackStackEntryAsState -import org.xtimms.etsudoku.core.BottomNavDestination -import org.xtimms.etsudoku.core.BottomNavDestination.Companion.Icon -import org.xtimms.etsudoku.sections.search.SEARCH_DESTINATION +import org.xtimms.shirizu.core.BottomNavDestination +import org.xtimms.shirizu.core.BottomNavDestination.Companion.Icon +import org.xtimms.shirizu.sections.search.SEARCH_DESTINATION @Composable fun NavigationRail( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/Pill.kt b/app/src/main/java/org/xtimms/shirizu/core/components/Pill.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/Pill.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/Pill.kt index b58f6c4..c9b7896 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/Pill.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/Pill.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/PreferenceItem.kt b/app/src/main/java/org/xtimms/shirizu/core/components/PreferenceItem.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/PreferenceItem.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/PreferenceItem.kt index 0131ce5..75b3b8b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/PreferenceItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/PreferenceItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -65,14 +65,14 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.xtimms.etsudoku.ui.theme.FixedAccentColors -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.ui.monet.LocalTonalPalettes -import org.xtimms.etsudoku.ui.monet.TonalPalettes.Companion.toTonalPalettes -import org.xtimms.etsudoku.ui.theme.PreviewThemeLight -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.ui.theme.applyOpacity -import org.xtimms.etsudoku.utils.FileSize +import org.xtimms.shirizu.ui.theme.FixedAccentColors +import org.xtimms.shirizu.R +import org.xtimms.shirizu.ui.monet.LocalTonalPalettes +import org.xtimms.shirizu.ui.monet.TonalPalettes.Companion.toTonalPalettes +import org.xtimms.shirizu.ui.theme.PreviewThemeLight +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.ui.theme.applyOpacity +import org.xtimms.shirizu.utils.FileSize private const val horizontal = 8 private const val vertical = 16 @@ -754,7 +754,7 @@ fun PreferenceStorageItem( @Composable @Preview(showBackground = true) fun PreferenceStorageHeaderPreview() { - EtsudokuTheme { + ShirizuTheme { PreferenceStorageHeader() } } @@ -762,7 +762,7 @@ fun PreferenceStorageHeaderPreview() { @Composable @Preview(showBackground = true) fun PreferenceStorageItemPreview() { - EtsudokuTheme { + ShirizuTheme { PreferenceStorageItem(title = "Saved manga", icon = Icons.Outlined.Save, total = 0F) } } diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/PullRefresh.kt b/app/src/main/java/org/xtimms/shirizu/core/components/PullRefresh.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/core/components/PullRefresh.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/PullRefresh.kt index 80990ff..82a8fbd 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/PullRefresh.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/PullRefresh.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.core.animate import androidx.compose.foundation.layout.Box diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ReadButton.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ReadButton.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ReadButton.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ReadButton.kt index c668a0d..ce66056 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ReadButton.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ReadButton.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import android.content.res.Configuration.UI_MODE_NIGHT_YES import androidx.compose.animation.AnimatedContent @@ -46,10 +46,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.model.MangaHistory -import org.xtimms.etsudoku.sections.details.model.HistoryInfo -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.model.MangaHistory +import org.xtimms.shirizu.sections.details.model.HistoryInfo +import org.xtimms.shirizu.ui.theme.ShirizuTheme import java.time.Instant @Composable @@ -198,7 +198,7 @@ fun Modifier.drawWithLayer(block: ContentDrawScope.() -> Unit) = this.then( @Preview @Composable private fun Preview() { - EtsudokuTheme { + ShirizuTheme { Row { ReadButton( HistoryInfo( @@ -222,7 +222,7 @@ private fun Preview() { @Preview(name = "Night mode", uiMode = UI_MODE_NIGHT_YES) @Composable private fun PreviewNightMode() { - EtsudokuTheme { + ShirizuTheme { Row { ReadButton( HistoryInfo( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ScaffoldWithTopAppBar.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ScaffoldWithTopAppBar.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ScaffoldWithTopAppBar.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ScaffoldWithTopAppBar.kt index 46793a8..6aa4a54 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ScaffoldWithTopAppBar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ScaffoldWithTopAppBar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.RowScope diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/ScoreIndicator.kt b/app/src/main/java/org/xtimms/shirizu/core/components/ScoreIndicator.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/components/ScoreIndicator.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/ScoreIndicator.kt index b78cd1b..c95456c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/ScoreIndicator.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/ScoreIndicator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding @@ -15,9 +15,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.lang.toStringPositiveValueOrUnknown +import org.xtimms.shirizu.R +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.lang.toStringPositiveValueOrUnknown @Composable fun SmallScoreIndicator( @@ -48,7 +48,7 @@ fun SmallScoreIndicator( @Preview(showBackground = true) @Composable fun SmallScoreIndicatorPreview() { - EtsudokuTheme { + ShirizuTheme { SmallScoreIndicator(score = 1f) } } \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/SearchBar.kt b/app/src/main/java/org/xtimms/shirizu/core/components/SearchBar.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/SearchBar.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/SearchBar.kt index 89ab8e0..8ff8f99 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/SearchBar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/SearchBar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.animateContentSize import androidx.compose.animation.core.Spring @@ -25,7 +25,7 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R @Composable @OptIn(ExperimentalMaterial3Api::class) diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/SettingItem.kt b/app/src/main/java/org/xtimms/shirizu/core/components/SettingItem.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/components/SettingItem.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/SettingItem.kt index ff6031e..d8a1507 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/SettingItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/SettingItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.animation.AnimatedContent import androidx.compose.animation.SizeTransform @@ -20,7 +20,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.ui.theme.applyOpacity +import org.xtimms.shirizu.ui.theme.applyOpacity @Composable fun SettingTitle(text: String) { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/SourceItem.kt b/app/src/main/java/org/xtimms/shirizu/core/components/SourceItem.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/components/SourceItem.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/SourceItem.kt index 3374b62..cdc7b22 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/SourceItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/SourceItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import android.net.Uri import androidx.compose.foundation.clickable @@ -24,8 +24,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.net.toUri import coil.ImageLoader -import org.xtimms.etsudoku.core.AsyncImageImpl -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.core.AsyncImageImpl +import org.xtimms.shirizu.ui.theme.ShirizuTheme @Composable fun SourceItem( @@ -77,7 +77,7 @@ fun SourceItem( @Preview @Composable fun SourceItemPreview() { - EtsudokuTheme { + ShirizuTheme { SourceItem( coil = ImageLoader(LocalContext.current), faviconUrl = "".toUri(), diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/Tab.kt b/app/src/main/java/org/xtimms/shirizu/core/components/Tab.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/Tab.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/Tab.kt index bafff82..45bb90d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/Tab.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/Tab.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Row diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/TopAppBar.kt b/app/src/main/java/org/xtimms/shirizu/core/components/TopAppBar.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/components/TopAppBar.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/TopAppBar.kt index d06e061..2a367fc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/TopAppBar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/TopAppBar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components +package org.xtimms.shirizu.core.components import android.graphics.Path import android.view.animation.PathInterpolator @@ -84,18 +84,18 @@ import androidx.compose.ui.unit.dp import androidx.navigation.NavController import androidx.navigation.NavHostController import androidx.navigation.compose.currentBackStackEntryAsState -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.DURATION_ENTER -import org.xtimms.etsudoku.core.DURATION_EXIT -import org.xtimms.etsudoku.core.initialOffset -import org.xtimms.etsudoku.core.toEasing -import org.xtimms.etsudoku.sections.explore.EXPLORE_DESTINATION -import org.xtimms.etsudoku.sections.feed.FEED_DESTINATION -import org.xtimms.etsudoku.sections.history.HISTORY_DESTINATION -import org.xtimms.etsudoku.sections.search.SEARCH_DESTINATION -import org.xtimms.etsudoku.sections.settings.SETTINGS_DESTINATION -import org.xtimms.etsudoku.sections.shelf.SHELF_DESTINATION -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.DURATION_ENTER +import org.xtimms.shirizu.core.DURATION_EXIT +import org.xtimms.shirizu.core.initialOffset +import org.xtimms.shirizu.core.toEasing +import org.xtimms.shirizu.sections.explore.EXPLORE_DESTINATION +import org.xtimms.shirizu.sections.feed.FEED_DESTINATION +import org.xtimms.shirizu.sections.history.HISTORY_DESTINATION +import org.xtimms.shirizu.sections.search.SEARCH_DESTINATION +import org.xtimms.shirizu.sections.settings.SETTINGS_DESTINATION +import org.xtimms.shirizu.sections.shelf.SHELF_DESTINATION +import org.xtimms.shirizu.ui.theme.ShirizuTheme import java.time.LocalDate import java.time.format.DateTimeFormatter diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/effects/ListAnimation.kt b/app/src/main/java/org/xtimms/shirizu/core/components/effects/ListAnimation.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/components/effects/ListAnimation.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/effects/ListAnimation.kt index b7646fe..fae1ab9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/effects/ListAnimation.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/effects/ListAnimation.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.effects +package org.xtimms.shirizu.core.components.effects import android.annotation.SuppressLint import androidx.compose.animation.AnimatedVisibility @@ -22,7 +22,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListUpdateCallback import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel import java.time.Instant enum class RowEntityType { Header, Item } diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/effects/Snowflake.kt b/app/src/main/java/org/xtimms/shirizu/core/components/effects/Snowflake.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/components/effects/Snowflake.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/effects/Snowflake.kt index 21d0344..0ebd216 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/effects/Snowflake.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/effects/Snowflake.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.effects +package org.xtimms.shirizu.core.components.effects import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.RepeatMode diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/ArrowDecisionOutline.kt b/app/src/main/java/org/xtimms/shirizu/core/components/icons/ArrowDecisionOutline.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/components/icons/ArrowDecisionOutline.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/icons/ArrowDecisionOutline.kt index 2f885b1..75c4188 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/ArrowDecisionOutline.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/icons/ArrowDecisionOutline.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.icons +package org.xtimms.shirizu.core.components.icons import androidx.compose.material.icons.Icons import androidx.compose.material.icons.materialIcon diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/Dice.kt b/app/src/main/java/org/xtimms/shirizu/core/components/icons/Dice.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/icons/Dice.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/icons/Dice.kt index 483bf20..f7419f8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/Dice.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/icons/Dice.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.icons +package org.xtimms.shirizu.core.components.icons import androidx.compose.material.icons.Icons import androidx.compose.material.icons.materialIcon diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/Kotatsu.kt b/app/src/main/java/org/xtimms/shirizu/core/components/icons/Kotatsu.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/core/components/icons/Kotatsu.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/icons/Kotatsu.kt index 75c4635..c57df6c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/icons/Kotatsu.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/icons/Kotatsu.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.icons +package org.xtimms.shirizu.core.components.icons import androidx.compose.material.icons.Icons import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/org/xtimms/etsudoku/core/components/shape/WavyShape.kt b/app/src/main/java/org/xtimms/shirizu/core/components/shape/WavyShape.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/components/shape/WavyShape.kt rename to app/src/main/java/org/xtimms/shirizu/core/components/shape/WavyShape.kt index 628478d..81a39f2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/components/shape/WavyShape.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/components/shape/WavyShape.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.components.shape +package org.xtimms.shirizu.core.components.shape import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Rect diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/DatabasePrePopulateCallback.kt b/app/src/main/java/org/xtimms/shirizu/core/database/DatabasePrePopulateCallback.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/database/DatabasePrePopulateCallback.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/DatabasePrePopulateCallback.kt index ea2df28..9f7b221 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/DatabasePrePopulateCallback.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/DatabasePrePopulateCallback.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.core.database +package org.xtimms.shirizu.core.database import android.content.res.Resources import androidx.room.RoomDatabase import androidx.sqlite.db.SupportSQLiteDatabase import org.koitharu.kotatsu.parsers.model.SortOrder -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R class DatabasePrePopulateCallback(private val resources: Resources) : RoomDatabase.Callback() { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/EtsudokuDatabase.kt b/app/src/main/java/org/xtimms/shirizu/core/database/ShirizuDatabase.kt similarity index 52% rename from app/src/main/java/org/xtimms/etsudoku/core/database/EtsudokuDatabase.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/ShirizuDatabase.kt index 79ba219..9781166 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/EtsudokuDatabase.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/ShirizuDatabase.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database +package org.xtimms.shirizu.core.database import android.content.Context import androidx.room.Database @@ -10,28 +10,28 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.isActive import kotlinx.coroutines.launch -import org.xtimms.etsudoku.core.database.dao.BookmarksDao -import org.xtimms.etsudoku.core.database.dao.FavouriteCategoriesDao -import org.xtimms.etsudoku.core.database.dao.FavouritesDao -import org.xtimms.etsudoku.core.database.dao.HistoryDao -import org.xtimms.etsudoku.core.database.dao.MangaDao -import org.xtimms.etsudoku.core.database.dao.MangaSourcesDao -import org.xtimms.etsudoku.core.database.dao.SuggestionDao -import org.xtimms.etsudoku.core.database.dao.TagsDao -import org.xtimms.etsudoku.core.database.dao.TrackLogsDao -import org.xtimms.etsudoku.core.database.dao.TracksDao -import org.xtimms.etsudoku.core.database.entity.BookmarkEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.HistoryEntity -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.MangaSourceEntity -import org.xtimms.etsudoku.core.database.entity.MangaTagsEntity -import org.xtimms.etsudoku.core.database.entity.SuggestionEntity -import org.xtimms.etsudoku.core.database.entity.TagEntity -import org.xtimms.etsudoku.core.database.entity.TrackEntity -import org.xtimms.etsudoku.core.database.entity.TrackLogEntity -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.core.database.dao.BookmarksDao +import org.xtimms.shirizu.core.database.dao.FavouriteCategoriesDao +import org.xtimms.shirizu.core.database.dao.FavouritesDao +import org.xtimms.shirizu.core.database.dao.HistoryDao +import org.xtimms.shirizu.core.database.dao.MangaDao +import org.xtimms.shirizu.core.database.dao.MangaSourcesDao +import org.xtimms.shirizu.core.database.dao.SuggestionDao +import org.xtimms.shirizu.core.database.dao.TagsDao +import org.xtimms.shirizu.core.database.dao.TrackLogsDao +import org.xtimms.shirizu.core.database.dao.TracksDao +import org.xtimms.shirizu.core.database.entity.BookmarkEntity +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.HistoryEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.MangaSourceEntity +import org.xtimms.shirizu.core.database.entity.MangaTagsEntity +import org.xtimms.shirizu.core.database.entity.SuggestionEntity +import org.xtimms.shirizu.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.TrackEntity +import org.xtimms.shirizu.core.database.entity.TrackLogEntity +import org.xtimms.shirizu.utils.lang.processLifecycleScope const val DATABASE_VERSION = 1 @@ -51,7 +51,7 @@ const val DATABASE_VERSION = 1 ], version = DATABASE_VERSION ) -abstract class EtsudokuDatabase : RoomDatabase() { +abstract class ShirizuDatabase : RoomDatabase() { abstract fun getTagsDao(): TagsDao @@ -75,8 +75,8 @@ abstract class EtsudokuDatabase : RoomDatabase() { } -fun EtsudokuDatabase(context: Context): EtsudokuDatabase = Room - .databaseBuilder(context, EtsudokuDatabase::class.java, "etsudoku-db") +fun ShirizuDatabase(context: Context): ShirizuDatabase = Room + .databaseBuilder(context, ShirizuDatabase::class.java, "shirizu-db") .addCallback(DatabasePrePopulateCallback(context.resources)) .build() diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/Tables.kt b/app/src/main/java/org/xtimms/shirizu/core/database/Tables.kt similarity index 68% rename from app/src/main/java/org/xtimms/etsudoku/core/database/Tables.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/Tables.kt index e650a65..3352224 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/Tables.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/Tables.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database +package org.xtimms.shirizu.core.database const val TABLE_MANGA = "manga" const val TABLE_TAGS = "tags" diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/BookmarksDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/BookmarksDao.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/BookmarksDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/BookmarksDao.kt index 84e1306..a67b892 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/BookmarksDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/BookmarksDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Delete @@ -7,8 +7,8 @@ import androidx.room.Query import androidx.room.Transaction import androidx.room.Upsert import kotlinx.coroutines.flow.Flow -import org.xtimms.etsudoku.core.database.entity.BookmarkEntity -import org.xtimms.etsudoku.core.database.entity.MangaWithTags +import org.xtimms.shirizu.core.database.entity.BookmarkEntity +import org.xtimms.shirizu.core.database.entity.MangaWithTags @Dao abstract class BookmarksDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouriteCategoriesDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouriteCategoriesDao.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouriteCategoriesDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouriteCategoriesDao.kt index 78a472a..6066174 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouriteCategoriesDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouriteCategoriesDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Insert @@ -6,7 +6,7 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Upsert import kotlinx.coroutines.flow.Flow -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity @Dao abstract class FavouriteCategoriesDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouritesDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouritesDao.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouritesDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouritesDao.kt index c04df58..31e706f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/FavouritesDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/FavouritesDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Insert @@ -11,10 +11,10 @@ import androidx.sqlite.db.SimpleSQLiteQuery import androidx.sqlite.db.SupportSQLiteQuery import kotlinx.coroutines.flow.Flow import org.intellij.lang.annotations.Language -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.model.ListSortOrder -import org.xtimms.etsudoku.sections.shelf.FavouriteManga +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.model.ListSortOrder +import org.xtimms.shirizu.sections.shelf.FavouriteManga @Dao abstract class FavouritesDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/HistoryDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/HistoryDao.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/HistoryDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/HistoryDao.kt index f0a9519..02c2692 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/HistoryDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/HistoryDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Insert @@ -10,11 +10,11 @@ import androidx.sqlite.db.SimpleSQLiteQuery import androidx.sqlite.db.SupportSQLiteQuery import kotlinx.coroutines.flow.Flow import org.intellij.lang.annotations.Language -import org.xtimms.etsudoku.core.database.entity.HistoryEntity -import org.xtimms.etsudoku.core.database.entity.HistoryWithManga -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.TagEntity -import org.xtimms.etsudoku.core.model.ListSortOrder +import org.xtimms.shirizu.core.database.entity.HistoryEntity +import org.xtimms.shirizu.core.database.entity.HistoryWithManga +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.TagEntity +import org.xtimms.shirizu.core.model.ListSortOrder @Dao abstract class HistoryDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaDao.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaDao.kt index a53850f..78b689d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Delete @@ -8,10 +8,10 @@ import androidx.room.Query import androidx.room.Transaction import androidx.room.Update import androidx.room.Upsert -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.MangaTagsEntity -import org.xtimms.etsudoku.core.database.entity.MangaWithTags -import org.xtimms.etsudoku.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.MangaTagsEntity +import org.xtimms.shirizu.core.database.entity.MangaWithTags +import org.xtimms.shirizu.core.database.entity.TagEntity @Dao abstract class MangaDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaSourcesDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaSourcesDao.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaSourcesDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaSourcesDao.kt index b616dc0..135d3eb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/MangaSourcesDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/MangaSourcesDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Query @@ -9,8 +9,8 @@ import androidx.sqlite.db.SimpleSQLiteQuery import androidx.sqlite.db.SupportSQLiteQuery import kotlinx.coroutines.flow.Flow import org.intellij.lang.annotations.Language -import org.xtimms.etsudoku.core.database.entity.MangaSourceEntity -import org.xtimms.etsudoku.sections.explore.data.SourcesSortOrder +import org.xtimms.shirizu.core.database.entity.MangaSourceEntity +import org.xtimms.shirizu.sections.explore.data.SourcesSortOrder @Dao abstract class MangaSourcesDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/SuggestionDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/SuggestionDao.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/SuggestionDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/SuggestionDao.kt index fd9a88a..fd120fb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/SuggestionDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/SuggestionDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Insert @@ -7,8 +7,8 @@ import androidx.room.Query import androidx.room.Transaction import androidx.room.Update import kotlinx.coroutines.flow.Flow -import org.xtimms.etsudoku.core.database.entity.SuggestionEntity -import org.xtimms.etsudoku.core.database.entity.SuggestionWithManga +import org.xtimms.shirizu.core.database.entity.SuggestionEntity +import org.xtimms.shirizu.core.database.entity.SuggestionWithManga @Dao abstract class SuggestionDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TagsDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TagsDao.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/TagsDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/TagsDao.kt index ca23847..ea25b86 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TagsDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TagsDao.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Query import androidx.room.Upsert -import org.xtimms.etsudoku.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.TagEntity @Dao abstract class TagsDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TrackLogsDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TrackLogsDao.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/TrackLogsDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/TrackLogsDao.kt index 3929702..64d926d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TrackLogsDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TrackLogsDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.Insert @@ -6,8 +6,8 @@ import androidx.room.OnConflictStrategy import androidx.room.Query import androidx.room.Transaction import kotlinx.coroutines.flow.Flow -import org.xtimms.etsudoku.core.database.entity.TrackLogEntity -import org.xtimms.etsudoku.core.database.entity.TrackLogWithManga +import org.xtimms.shirizu.core.database.entity.TrackLogEntity +import org.xtimms.shirizu.core.database.entity.TrackLogWithManga @Dao interface TrackLogsDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TracksDao.kt b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TracksDao.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/dao/TracksDao.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/dao/TracksDao.kt index c057e72..4fc1ff0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/dao/TracksDao.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/dao/TracksDao.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.dao +package org.xtimms.shirizu.core.database.dao import androidx.room.Dao import androidx.room.MapColumn @@ -6,8 +6,8 @@ import androidx.room.Query import androidx.room.Transaction import androidx.room.Upsert import kotlinx.coroutines.flow.Flow -import org.xtimms.etsudoku.core.database.entity.MangaWithTags -import org.xtimms.etsudoku.core.database.entity.TrackEntity +import org.xtimms.shirizu.core.database.entity.MangaWithTags +import org.xtimms.shirizu.core.database.entity.TrackEntity @Dao abstract class TracksDao { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/BookmarksEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/BookmarksEntity.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/BookmarksEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/BookmarksEntity.kt index e04423e..5e6b368 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/BookmarksEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/BookmarksEntity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/EntityMapping.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/EntityMapping.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/EntityMapping.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/EntityMapping.kt index cdace44..c0776cb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/EntityMapping.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/EntityMapping.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaState @@ -6,14 +6,14 @@ import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.toTitleCase -import org.xtimms.etsudoku.core.model.Bookmark -import org.xtimms.etsudoku.core.model.FavouriteCategory -import org.xtimms.etsudoku.core.model.ListSortOrder -import org.xtimms.etsudoku.core.model.MangaHistory -import org.xtimms.etsudoku.core.model.MangaSource -import org.xtimms.etsudoku.core.tracker.model.TrackingLogItem -import org.xtimms.etsudoku.sections.shelf.FavouriteManga -import org.xtimms.etsudoku.utils.lang.longHashCode +import org.xtimms.shirizu.core.model.Bookmark +import org.xtimms.shirizu.core.model.FavouriteCategory +import org.xtimms.shirizu.core.model.ListSortOrder +import org.xtimms.shirizu.core.model.MangaHistory +import org.xtimms.shirizu.core.model.MangaSource +import org.xtimms.shirizu.core.tracker.model.TrackingLogItem +import org.xtimms.shirizu.sections.shelf.FavouriteManga +import org.xtimms.shirizu.utils.lang.longHashCode import java.time.Instant // Entity to model diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteCategoryEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteCategoryEntity.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteCategoryEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteCategoryEntity.kt index 0eae11a..01eaa9b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteCategoryEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteCategoryEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITE_CATEGORIES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITE_CATEGORIES @Entity(tableName = TABLE_FAVOURITE_CATEGORIES) data class FavouriteCategoryEntity( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteEntity.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteEntity.kt index eb6db38..be41642 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/FavouriteEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/FavouriteEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITES @Entity( tableName = TABLE_FAVOURITES, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryEntity.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryEntity.kt index 14b433d..c145297 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryEntity.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey import androidx.room.PrimaryKey -import org.xtimms.etsudoku.core.database.TABLE_HISTORY +import org.xtimms.shirizu.core.database.TABLE_HISTORY @Entity( tableName = TABLE_HISTORY, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryWithManga.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryWithManga.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryWithManga.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryWithManga.kt index e1ad231..a283036 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/HistoryWithManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/HistoryWithManga.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.Embedded import androidx.room.Junction diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaEntity.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaEntity.kt index 19cb873..5ddcf4e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import org.xtimms.etsudoku.core.database.TABLE_MANGA +import org.xtimms.shirizu.core.database.TABLE_MANGA @Entity(tableName = TABLE_MANGA) data class MangaEntity( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaSourceEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaSourceEntity.kt similarity index 78% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaSourceEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaSourceEntity.kt index 40d2cce..b2afa5b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaSourceEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaSourceEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import org.xtimms.etsudoku.core.database.TABLE_SOURCES +import org.xtimms.shirizu.core.database.TABLE_SOURCES @Entity(tableName = TABLE_SOURCES) data class MangaSourceEntity( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaTagsEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaTagsEntity.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaTagsEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaTagsEntity.kt index bc0bfad..21f5b79 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaTagsEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaTagsEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey -import org.xtimms.etsudoku.core.database.TABLE_MANGA_TAGS +import org.xtimms.shirizu.core.database.TABLE_MANGA_TAGS @Entity( tableName = TABLE_MANGA_TAGS, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaWithTags.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaWithTags.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaWithTags.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaWithTags.kt index 47d6080..b8e73e0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/MangaWithTags.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/MangaWithTags.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.Embedded import androidx.room.Junction diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionEntity.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionEntity.kt index d0cdfd4..920e587 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionEntity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.annotation.FloatRange import androidx.room.ColumnInfo diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionWithManga.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionWithManga.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionWithManga.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionWithManga.kt index 82a7409..e721eb7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/SuggestionWithManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/SuggestionWithManga.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.Embedded import androidx.room.Junction diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TagEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TagEntity.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/TagEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/TagEntity.kt index 4c41b78..d8eeeee 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TagEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TagEntity.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -import org.xtimms.etsudoku.core.database.TABLE_TAGS +import org.xtimms.shirizu.core.database.TABLE_TAGS @Entity(tableName = TABLE_TAGS) data class TagEntity( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackEntity.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackEntity.kt index 2ace75a..27bb9ac 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackEntity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogEntity.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogEntity.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogEntity.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogEntity.kt index 4e0c7a1..8ca53d8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogEntity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogEntity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.ColumnInfo import androidx.room.Entity diff --git a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogWithManga.kt b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogWithManga.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogWithManga.kt rename to app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogWithManga.kt index 9547846..537aab6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/database/entity/TrackLogWithManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/database/entity/TrackLogWithManga.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.database.entity +package org.xtimms.shirizu.core.database.entity import androidx.room.Embedded import androidx.room.Junction diff --git a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/CloudflareProtectedException.kt b/app/src/main/java/org/xtimms/shirizu/core/exceptions/CloudflareProtectedException.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/core/exceptions/CloudflareProtectedException.kt rename to app/src/main/java/org/xtimms/shirizu/core/exceptions/CloudflareProtectedException.kt index 3ec0e48..da5a194 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/CloudflareProtectedException.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/exceptions/CloudflareProtectedException.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.exceptions +package org.xtimms.shirizu.core.exceptions import okhttp3.Headers import okio.IOException diff --git a/app/src/main/java/org/xtimms/shirizu/core/exceptions/SyncApiException.kt b/app/src/main/java/org/xtimms/shirizu/core/exceptions/SyncApiException.kt new file mode 100644 index 0000000..94dc28a --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/core/exceptions/SyncApiException.kt @@ -0,0 +1,6 @@ +package org.xtimms.shirizu.core.exceptions + +class SyncApiException( + message: String, + val code: Int, +) : RuntimeException(message) \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/TooManyRequestExceptions.kt b/app/src/main/java/org/xtimms/shirizu/core/exceptions/TooManyRequestExceptions.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/core/exceptions/TooManyRequestExceptions.kt rename to app/src/main/java/org/xtimms/shirizu/core/exceptions/TooManyRequestExceptions.kt index 7f1d1d3..ea72103 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/exceptions/TooManyRequestExceptions.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/exceptions/TooManyRequestExceptions.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.exceptions +package org.xtimms.shirizu.core.exceptions import okio.IOException import java.time.Instant diff --git a/app/src/main/java/org/xtimms/etsudoku/core/logs/FileLogger.kt b/app/src/main/java/org/xtimms/shirizu/core/logs/FileLogger.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/logs/FileLogger.kt rename to app/src/main/java/org/xtimms/shirizu/core/logs/FileLogger.kt index c5b67b9..6cbf189 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/logs/FileLogger.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/logs/FileLogger.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.logs +package org.xtimms.shirizu.core.logs import android.content.Context import androidx.annotation.WorkerThread @@ -14,9 +14,9 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.utils.lang.processLifecycleScope -import org.xtimms.etsudoku.utils.system.subdir +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.system.subdir import java.io.File import java.io.FileOutputStream import java.time.LocalDateTime diff --git a/app/src/main/java/org/xtimms/etsudoku/core/logs/Loggers.kt b/app/src/main/java/org/xtimms/shirizu/core/logs/Loggers.kt similarity index 71% rename from app/src/main/java/org/xtimms/etsudoku/core/logs/Loggers.kt rename to app/src/main/java/org/xtimms/shirizu/core/logs/Loggers.kt index aeea3a5..f576261 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/logs/Loggers.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/logs/Loggers.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.logs +package org.xtimms.shirizu.core.logs import javax.inject.Qualifier diff --git a/app/src/main/java/org/xtimms/etsudoku/core/logs/LoggersModule.kt b/app/src/main/java/org/xtimms/shirizu/core/logs/LoggersModule.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/logs/LoggersModule.kt rename to app/src/main/java/org/xtimms/shirizu/core/logs/LoggersModule.kt index 34bd8fe..d9fba9f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/logs/LoggersModule.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/logs/LoggersModule.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.logs +package org.xtimms.shirizu.core.logs import android.content.Context import androidx.collection.arraySetOf diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/Bookmark.kt b/app/src/main/java/org/xtimms/shirizu/core/model/Bookmark.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/model/Bookmark.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/Bookmark.kt index 83ff2e1..a0f7c00 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/Bookmark.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/Bookmark.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaPage -import org.xtimms.etsudoku.utils.hasImageExtension +import org.xtimms.shirizu.utils.hasImageExtension import java.time.Instant data class Bookmark( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/FavouriteCategory.kt b/app/src/main/java/org/xtimms/shirizu/core/model/FavouriteCategory.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/model/FavouriteCategory.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/FavouriteCategory.kt index 9da2371..abc18f8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/FavouriteCategory.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/FavouriteCategory.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/ListModel.kt b/app/src/main/java/org/xtimms/shirizu/core/model/ListModel.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/core/model/ListModel.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/ListModel.kt index 4f97c7d..329d97a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/ListModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/ListModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model interface ListModel { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/ListSortOrder.kt b/app/src/main/java/org/xtimms/shirizu/core/model/ListSortOrder.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/model/ListSortOrder.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/ListSortOrder.kt index e2b2186..a9434c5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/ListSortOrder.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/ListSortOrder.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import androidx.annotation.StringRes -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R import org.koitharu.kotatsu.parsers.util.find import java.util.EnumSet diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/LocalManga.kt b/app/src/main/java/org/xtimms/shirizu/core/model/LocalManga.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/model/LocalManga.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/LocalManga.kt index d95ac7c..1f8b8e1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/LocalManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/LocalManga.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import androidx.core.net.toFile import androidx.core.net.toUri import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaTag -import org.xtimms.etsudoku.utils.system.creationTime +import org.xtimms.shirizu.utils.system.creationTime import java.io.File data class LocalManga( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/Manga.kt b/app/src/main/java/org/xtimms/shirizu/core/model/Manga.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/model/Manga.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/Manga.kt index 6ee72e8..66e6000 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/Manga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/Manga.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import androidx.core.os.LocaleListCompat import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.utils.system.iterator +import org.xtimms.shirizu.utils.system.iterator import java.text.DecimalFormat import java.text.DecimalFormatSymbols diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaHistory.kt b/app/src/main/java/org/xtimms/shirizu/core/model/MangaHistory.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/core/model/MangaHistory.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/MangaHistory.kt index cf12c42..d2a89c3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaHistory.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/MangaHistory.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaSource.kt b/app/src/main/java/org/xtimms/shirizu/core/model/MangaSource.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/core/model/MangaSource.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/MangaSource.kt index e1309e5..228bda3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaSource.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/MangaSource.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaSource diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaSuggestion.kt b/app/src/main/java/org/xtimms/shirizu/core/model/MangaSuggestion.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/core/model/MangaSuggestion.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/MangaSuggestion.kt index 191a644..05facbc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaSuggestion.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/MangaSuggestion.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import androidx.annotation.FloatRange import org.koitharu.kotatsu.parsers.model.Manga diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaWithHistory.kt b/app/src/main/java/org/xtimms/shirizu/core/model/MangaWithHistory.kt similarity index 76% rename from app/src/main/java/org/xtimms/etsudoku/core/model/MangaWithHistory.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/MangaWithHistory.kt index 4764dcc..04c897e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/MangaWithHistory.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/MangaWithHistory.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import org.koitharu.kotatsu.parsers.model.Manga diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/ShelfCategory.kt b/app/src/main/java/org/xtimms/shirizu/core/model/ShelfCategory.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/model/ShelfCategory.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/ShelfCategory.kt index 1b3dba6..61bd02c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/ShelfCategory.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/ShelfCategory.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import java.io.Serializable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/TagsBlacklist.kt b/app/src/main/java/org/xtimms/shirizu/core/model/TagsBlacklist.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/model/TagsBlacklist.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/TagsBlacklist.kt index 7ff4ab1..14be948 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/TagsBlacklist.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/TagsBlacklist.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model +package org.xtimms.shirizu.core.model import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaTag diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcelableMangaTags.kt b/app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcelableMangaTags.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcelableMangaTags.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcelableMangaTags.kt index cd1920e..70ec851 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcelableMangaTags.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcelableMangaTags.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model.parcelable +package org.xtimms.shirizu.core.model.parcelable import android.os.Parcel import android.os.Parcelable @@ -6,7 +6,7 @@ import kotlinx.parcelize.Parceler import kotlinx.parcelize.Parcelize import kotlinx.parcelize.TypeParceler import org.koitharu.kotatsu.parsers.model.MangaTag -import org.xtimms.etsudoku.utils.lang.readSerializableCompat +import org.xtimms.shirizu.utils.lang.readSerializableCompat object MangaTagParceler : Parceler { override fun create(parcel: Parcel) = MangaTag( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcerableManga.kt b/app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcerableManga.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcerableManga.kt rename to app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcerableManga.kt index f1ca97e..c5ff57c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/model/parcelable/ParcerableManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/model/parcelable/ParcerableManga.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.model.parcelable +package org.xtimms.shirizu.core.model.parcelable import android.os.Parcel import android.os.Parcelable @@ -6,8 +6,8 @@ import androidx.core.os.ParcelCompat import kotlinx.parcelize.Parceler import kotlinx.parcelize.Parcelize import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.utils.lang.readParcelableCompat -import org.xtimms.etsudoku.utils.lang.readSerializableCompat +import org.xtimms.shirizu.utils.lang.readParcelableCompat +import org.xtimms.shirizu.utils.lang.readSerializableCompat @Parcelize data class ParcelableManga( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/MaterialSharedAxis.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/MaterialSharedAxis.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/MaterialSharedAxis.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/MaterialSharedAxis.kt index aedce3d..47bcbb1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/MaterialSharedAxis.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/MaterialSharedAxis.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion +package org.xtimms.shirizu.core.motion import androidx.compose.animation.ContentTransform import androidx.compose.animation.EnterTransition diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/MotionConstants.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/MotionConstants.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/MotionConstants.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/MotionConstants.kt index 92b9e44..a7884d5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/MotionConstants.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/MotionConstants.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion +package org.xtimms.shirizu.core.motion import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/DelayExit.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/DelayExit.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/DelayExit.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/DelayExit.kt index 8e01389..5e507b0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/DelayExit.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/DelayExit.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ElementContainer.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ElementContainer.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ElementContainer.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ElementContainer.kt index f0f1d9b..6b7b12e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ElementContainer.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ElementContainer.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/KeyframeBasedMotion.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/KeyframeBasedMotion.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/KeyframeBasedMotion.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/KeyframeBasedMotion.kt index 31d39c8..08b2ecb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/KeyframeBasedMotion.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/KeyframeBasedMotion.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.lerp diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MaterialArcMotion.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MaterialArcMotion.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MaterialArcMotion.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MaterialArcMotion.kt index b68ad8e..fda3c0e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MaterialArcMotion.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MaterialArcMotion.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.ui.geometry.Offset diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MathUtils.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MathUtils.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MathUtils.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MathUtils.kt index 40d3dee..0aa41a9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/MathUtils.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/MathUtils.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Rect diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/PathMotion.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/PathMotion.kt similarity index 68% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/PathMotion.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/PathMotion.kt index 5d34f6a..6fca21a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/PathMotion.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/PathMotion.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.lerp diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ProgressThresholds.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ProgressThresholds.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ProgressThresholds.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ProgressThresholds.kt index 9f6c1e4..eaca76a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/ProgressThresholds.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/ProgressThresholds.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/QuadraticBezier.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/QuadraticBezier.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/QuadraticBezier.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/QuadraticBezier.kt index cb5446b..fc7ae7e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/QuadraticBezier.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/QuadraticBezier.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.ui.geometry.Offset diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElement.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElement.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElement.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElement.kt index 95d095a..bdedc94 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElement.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElement.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.size diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsRoot.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsRoot.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsRoot.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsRoot.kt index 33887a9..be70513 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsRoot.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsRoot.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import android.view.Choreographer import androidx.compose.animation.core.Animatable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsTransitionSpec.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsTransitionSpec.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsTransitionSpec.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsTransitionSpec.kt index 7348763..359eb35 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedElementsTransitionSpec.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedElementsTransitionSpec.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.animation.core.AnimationConstants import androidx.compose.animation.core.Easing diff --git a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedMaterialContainer.kt b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedMaterialContainer.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedMaterialContainer.kt rename to app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedMaterialContainer.kt index d9a5e56..7c66e7b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/motion/sharedelements/SharedMaterialContainer.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/motion/sharedelements/SharedMaterialContainer.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.motion.sharedelements +package org.xtimms.shirizu.core.motion.sharedelements import androidx.compose.animation.core.AnimationConstants import androidx.compose.animation.core.Easing diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/CommonHeaders.kt b/app/src/main/java/org/xtimms/shirizu/core/network/CommonHeaders.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/network/CommonHeaders.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/CommonHeaders.kt index 5861787..29fb611 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/CommonHeaders.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/CommonHeaders.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network +package org.xtimms.shirizu.core.network import okhttp3.CacheControl diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/HttpClients.kt b/app/src/main/java/org/xtimms/shirizu/core/network/HttpClients.kt similarity index 69% rename from app/src/main/java/org/xtimms/etsudoku/core/network/HttpClients.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/HttpClients.kt index 7def503..93911c6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/HttpClients.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/HttpClients.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network +package org.xtimms.shirizu.core.network import javax.inject.Qualifier diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/NetworkModule.kt b/app/src/main/java/org/xtimms/shirizu/core/network/NetworkModule.kt similarity index 75% rename from app/src/main/java/org/xtimms/etsudoku/core/network/NetworkModule.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/NetworkModule.kt index 3059ecb..526b6df 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/NetworkModule.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/NetworkModule.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network +package org.xtimms.shirizu.core.network import android.content.Context import android.util.AndroidRuntimeException @@ -11,16 +11,16 @@ import dagger.hilt.components.SingletonComponent import okhttp3.Cache import okhttp3.CookieJar import okhttp3.OkHttpClient -import org.xtimms.etsudoku.core.network.cookies.AndroidCookieJar -import org.xtimms.etsudoku.core.network.cookies.MutableCookieJar -import org.xtimms.etsudoku.core.network.cookies.PreferencesCookieJar -import org.xtimms.etsudoku.core.network.interceptors.CacheLimitInterceptor -import org.xtimms.etsudoku.core.network.interceptors.CloudflareInterceptor -import org.xtimms.etsudoku.core.network.interceptors.CommonHeadersInterceptor -import org.xtimms.etsudoku.core.network.interceptors.GZipInterceptor -import org.xtimms.etsudoku.core.network.interceptors.RateLimitInterceptor -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.data.LocalStorageManager +import org.xtimms.shirizu.core.network.cookies.AndroidCookieJar +import org.xtimms.shirizu.core.network.cookies.MutableCookieJar +import org.xtimms.shirizu.core.network.cookies.PreferencesCookieJar +import org.xtimms.shirizu.core.network.interceptors.CacheLimitInterceptor +import org.xtimms.shirizu.core.network.interceptors.CloudflareInterceptor +import org.xtimms.shirizu.core.network.interceptors.CommonHeadersInterceptor +import org.xtimms.shirizu.core.network.interceptors.GZipInterceptor +import org.xtimms.shirizu.core.network.interceptors.RateLimitInterceptor +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.data.LocalStorageManager import java.util.concurrent.TimeUnit import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/SSLBypass.kt b/app/src/main/java/org/xtimms/shirizu/core/network/SSLBypass.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/network/SSLBypass.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/SSLBypass.kt index bd65bb7..9b3aa40 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/SSLBypass.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/SSLBypass.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network +package org.xtimms.shirizu.core.network import android.annotation.SuppressLint import okhttp3.OkHttpClient diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/AndroidCookieJar.kt b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/AndroidCookieJar.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/network/cookies/AndroidCookieJar.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/cookies/AndroidCookieJar.kt index 765caa3..aebef49 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/AndroidCookieJar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/AndroidCookieJar.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.core.network.cookies +package org.xtimms.shirizu.core.network.cookies import android.webkit.CookieManager import androidx.annotation.WorkerThread import androidx.core.util.Predicate import okhttp3.Cookie import okhttp3.HttpUrl -import org.xtimms.etsudoku.utils.system.newBuilder +import org.xtimms.shirizu.utils.system.newBuilder import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/CookieWrapper.kt b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/CookieWrapper.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/network/cookies/CookieWrapper.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/cookies/CookieWrapper.kt index 5c4a9b5..7fa3295 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/CookieWrapper.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/CookieWrapper.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network.cookies +package org.xtimms.shirizu.core.network.cookies import android.util.Base64 import okhttp3.Cookie diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/MutableCookieJar.kt b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/MutableCookieJar.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/network/cookies/MutableCookieJar.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/cookies/MutableCookieJar.kt index ec52974..1859d1d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/MutableCookieJar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/MutableCookieJar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network.cookies +package org.xtimms.shirizu.core.network.cookies import androidx.annotation.WorkerThread import androidx.core.util.Predicate diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/PreferencesCookieJar.kt b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/PreferencesCookieJar.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/network/cookies/PreferencesCookieJar.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/cookies/PreferencesCookieJar.kt index 6de3059..27efd28 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/cookies/PreferencesCookieJar.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/cookies/PreferencesCookieJar.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network.cookies +package org.xtimms.shirizu.core.network.cookies import android.content.Context import androidx.annotation.WorkerThread diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CacheLimitInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CacheLimitInterceptor.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CacheLimitInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CacheLimitInterceptor.kt index 229df8b..325384a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CacheLimitInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CacheLimitInterceptor.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import okhttp3.CacheControl import okhttp3.Interceptor import okhttp3.Response -import org.xtimms.etsudoku.core.network.CommonHeaders +import org.xtimms.shirizu.core.network.CommonHeaders import java.util.concurrent.TimeUnit class CacheLimitInterceptor : Interceptor { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CloudflareInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CloudflareInterceptor.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CloudflareInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CloudflareInterceptor.kt index 08b3675..b5cd5f4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CloudflareInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CloudflareInterceptor.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import okhttp3.Interceptor import okhttp3.Response import okhttp3.internal.closeQuietly import org.jsoup.Jsoup import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.exceptions.CloudflareProtectedException +import org.xtimms.shirizu.core.exceptions.CloudflareProtectedException import java.net.HttpURLConnection.HTTP_FORBIDDEN import java.net.HttpURLConnection.HTTP_UNAVAILABLE diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CommonHeadersInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CommonHeadersInterceptor.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CommonHeadersInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CommonHeadersInterceptor.kt index 65701a8..8afb7de 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/CommonHeadersInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/CommonHeadersInterceptor.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import android.util.Log import dagger.Lazy @@ -9,10 +9,10 @@ import okhttp3.Response import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.mergeWith -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.network.CommonHeaders -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.RemoteMangaRepository +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.network.CommonHeaders +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.RemoteMangaRepository import java.net.IDN import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/GZipInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/GZipInterceptor.kt similarity index 78% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/GZipInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/GZipInterceptor.kt index 86c8172..9a80cb6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/GZipInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/GZipInterceptor.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import okhttp3.Interceptor import okhttp3.Response import okio.IOException -import org.xtimms.etsudoku.core.network.CommonHeaders.CONTENT_ENCODING +import org.xtimms.shirizu.core.network.CommonHeaders.CONTENT_ENCODING class GZipInterceptor : Interceptor { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/ImageProxyInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/ImageProxyInterceptor.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/ImageProxyInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/ImageProxyInterceptor.kt index 0274e38..28f9ba0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/ImageProxyInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/ImageProxyInterceptor.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import android.util.Log import androidx.collection.ArraySet @@ -15,10 +15,10 @@ import okhttp3.Request import okhttp3.Response import org.koitharu.kotatsu.parsers.util.await import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.utils.system.ensureSuccess -import org.xtimms.etsudoku.utils.system.isHttpOrHttps +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.utils.system.ensureSuccess +import org.xtimms.shirizu.utils.system.isHttpOrHttps import java.util.Collections import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/RateLimitInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/RateLimitInterceptor.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/RateLimitInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/network/interceptors/RateLimitInterceptor.kt index c15f5f9..e55e02d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/network/interceptors/RateLimitInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/network/interceptors/RateLimitInterceptor.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.core.network.interceptors +package org.xtimms.shirizu.core.network.interceptors import okhttp3.Interceptor import okhttp3.Response import okhttp3.internal.closeQuietly -import org.xtimms.etsudoku.core.exceptions.TooManyRequestExceptions -import org.xtimms.etsudoku.core.network.CommonHeaders +import org.xtimms.shirizu.core.exceptions.TooManyRequestExceptions +import org.xtimms.shirizu.core.network.CommonHeaders import java.time.Instant import java.time.ZonedDateTime import java.time.format.DateTimeFormatter diff --git a/app/src/main/java/org/xtimms/etsudoku/core/os/NetworkState.kt b/app/src/main/java/org/xtimms/shirizu/core/os/NetworkState.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/os/NetworkState.kt rename to app/src/main/java/org/xtimms/shirizu/core/os/NetworkState.kt index c5a51c0..64c9e9b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/os/NetworkState.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/os/NetworkState.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.core.os +package org.xtimms.shirizu.core.os import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import android.net.NetworkRequest import kotlinx.coroutines.flow.first -import org.xtimms.etsudoku.utils.MediatorStateFlow -import org.xtimms.etsudoku.utils.system.isOnline +import org.xtimms.shirizu.utils.MediatorStateFlow +import org.xtimms.shirizu.utils.system.isOnline class NetworkState( private val connectivityManager: ConnectivityManager, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/LocalMangaRepository.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/LocalMangaRepository.kt similarity index 50% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/LocalMangaRepository.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/LocalMangaRepository.kt index bfabbd5..d189030 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/LocalMangaRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/LocalMangaRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser private const val MAX_PARALLELISM = 4 diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaDataRepository.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaDataRepository.kt similarity index 77% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaDataRepository.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaDataRepository.kt index 1898c18..cfa029a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaDataRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaDataRepository.kt @@ -1,18 +1,18 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import androidx.room.withTransaction import dagger.Reusable import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.toEntities -import org.xtimms.etsudoku.core.database.entity.toEntity -import org.xtimms.etsudoku.core.database.entity.toManga +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.toEntities +import org.xtimms.shirizu.core.database.entity.toEntity +import org.xtimms.shirizu.core.database.entity.toManga import javax.inject.Inject import javax.inject.Provider @Reusable class MangaDataRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, private val resolverProvider: Provider, ) { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaIntent.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaIntent.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaIntent.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaIntent.kt index f44c41f..3c18f3c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaIntent.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaIntent.kt @@ -1,14 +1,14 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.lifecycle.SavedStateHandle import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.MainActivity -import org.xtimms.etsudoku.core.model.parcelable.ParcelableManga -import org.xtimms.etsudoku.utils.lang.getParcelableCompat -import org.xtimms.etsudoku.utils.lang.getParcelableExtraCompat +import org.xtimms.shirizu.MainActivity +import org.xtimms.shirizu.core.model.parcelable.ParcelableManga +import org.xtimms.shirizu.utils.lang.getParcelableCompat +import org.xtimms.shirizu.utils.lang.getParcelableExtraCompat class MangaIntent private constructor( @JvmField val manga: Manga?, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLinkResolver.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaLinkResolver.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLinkResolver.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaLinkResolver.kt index 4cb0c89..5ef06b4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLinkResolver.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaLinkResolver.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import android.net.Uri import coil.request.CachePolicy @@ -12,9 +12,9 @@ import org.koitharu.kotatsu.parsers.util.almostEquals import org.koitharu.kotatsu.parsers.util.levenshteinDistance import org.koitharu.kotatsu.parsers.util.runCatchingCancellable import org.koitharu.kotatsu.parsers.util.toRelativeUrl -import org.xtimms.etsudoku.core.model.MangaSource -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.utils.lang.ifNullOrEmpty +import org.xtimms.shirizu.core.model.MangaSource +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.utils.lang.ifNullOrEmpty import javax.inject.Inject @Reusable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLoaderContextImpl.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaLoaderContextImpl.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLoaderContextImpl.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaLoaderContextImpl.kt index 82cdbc5..301f583 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaLoaderContextImpl.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaLoaderContextImpl.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import android.annotation.SuppressLint import android.content.Context @@ -12,10 +12,10 @@ import okhttp3.OkHttpClient import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.config.MangaSourceConfig import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.network.MangaHttpClient -import org.xtimms.etsudoku.core.network.cookies.MutableCookieJar -import org.xtimms.etsudoku.core.prefs.SourceSettings -import org.xtimms.etsudoku.utils.system.toList +import org.xtimms.shirizu.core.network.MangaHttpClient +import org.xtimms.shirizu.core.network.cookies.MutableCookieJar +import org.xtimms.shirizu.core.prefs.SourceSettings +import org.xtimms.shirizu.utils.system.toList import java.lang.ref.WeakReference import java.util.Locale import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaParser.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaParser.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaParser.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaParser.kt index 5982837..810e254 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaParser.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaParser.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaRepository.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaRepository.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/MangaRepository.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/MangaRepository.kt index 0859cbf..42ac783 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/MangaRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/MangaRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import androidx.annotation.AnyThread import org.koitharu.kotatsu.parsers.MangaLoaderContext @@ -11,8 +11,8 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.SortOrder -import org.xtimms.etsudoku.core.cache.ContentCache -import org.xtimms.etsudoku.core.parser.local.LocalMangaRepository +import org.xtimms.shirizu.core.cache.ContentCache +import org.xtimms.shirizu.core.parser.local.LocalMangaRepository import java.lang.ref.WeakReference import java.util.EnumMap import java.util.Locale diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/RemoteMangaRepository.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/RemoteMangaRepository.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/RemoteMangaRepository.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/RemoteMangaRepository.kt index 30fa7b0..c4a476e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/RemoteMangaRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/RemoteMangaRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser +package org.xtimms.shirizu.core.parser import android.util.Log import coil.request.CachePolicy @@ -26,11 +26,11 @@ import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.cache.ContentCache -import org.xtimms.etsudoku.core.cache.SafeDeferred -import org.xtimms.etsudoku.core.prefs.SourceSettings -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.cache.ContentCache +import org.xtimms.shirizu.core.cache.SafeDeferred +import org.xtimms.shirizu.core.prefs.SourceSettings +import org.xtimms.shirizu.utils.lang.processLifecycleScope import java.util.Locale @OptIn(InternalParsersApi::class) diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconFetcher.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconFetcher.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconFetcher.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconFetcher.kt index ae0b45e..fbef918 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconFetcher.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconFetcher.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.favicon +package org.xtimms.shirizu.core.parser.favicon import android.content.Context import android.net.Uri @@ -25,12 +25,12 @@ import okio.Closeable import okio.buffer import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.await -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.core.model.MangaSource -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.RemoteMangaRepository -import org.xtimms.etsudoku.utils.lang.writeAllCancellable -import org.xtimms.etsudoku.utils.withExtraCloseable +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.core.model.MangaSource +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.RemoteMangaRepository +import org.xtimms.shirizu.utils.lang.writeAllCancellable +import org.xtimms.shirizu.utils.withExtraCloseable import java.net.HttpURLConnection import kotlin.coroutines.coroutineContext diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconUri.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconUri.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconUri.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconUri.kt index 65293ac..fa065cf 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/favicon/FaviconUri.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/favicon/FaviconUri.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.favicon +package org.xtimms.shirizu.core.parser.favicon import android.net.Uri import org.koitharu.kotatsu.parsers.model.MangaSource diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/CbzFilter.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/CbzFilter.kt similarity index 77% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/CbzFilter.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/CbzFilter.kt index 122665d..1c74487 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/CbzFilter.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/CbzFilter.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local import android.net.Uri -import org.xtimms.etsudoku.utils.system.URI_SCHEME_ZIP +import org.xtimms.shirizu.utils.system.URI_SCHEME_ZIP import java.io.File private fun isCbzExtension(ext: String?): Boolean { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/DownloadFormat.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/DownloadFormat.kt similarity index 62% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/DownloadFormat.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/DownloadFormat.kt index 1eb40f7..2b55fd9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/DownloadFormat.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/DownloadFormat.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local enum class DownloadFormat { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/LocalMangaRepository.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/LocalMangaRepository.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/LocalMangaRepository.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/LocalMangaRepository.kt index 6f7feb8..78a298e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/LocalMangaRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/LocalMangaRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local import android.net.Uri import androidx.core.net.toFile @@ -21,18 +21,18 @@ import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.local.input.LocalMangaInput -import org.xtimms.etsudoku.core.parser.local.output.LocalMangaOutput -import org.xtimms.etsudoku.core.parser.local.output.LocalMangaUtil -import org.xtimms.etsudoku.data.LocalStorageManager -import org.xtimms.etsudoku.utils.AlphanumComparator -import org.xtimms.etsudoku.utils.CompositeMutex2 -import org.xtimms.etsudoku.utils.system.children -import org.xtimms.etsudoku.utils.system.deleteAwait -import org.xtimms.etsudoku.utils.system.filterWith +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.local.input.LocalMangaInput +import org.xtimms.shirizu.core.parser.local.output.LocalMangaOutput +import org.xtimms.shirizu.core.parser.local.output.LocalMangaUtil +import org.xtimms.shirizu.data.LocalStorageManager +import org.xtimms.shirizu.utils.AlphanumComparator +import org.xtimms.shirizu.utils.CompositeMutex2 +import org.xtimms.shirizu.utils.system.children +import org.xtimms.shirizu.utils.system.deleteAwait +import org.xtimms.shirizu.utils.system.filterWith import java.io.File import java.util.EnumSet import java.util.Locale diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/MangaIndex.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/MangaIndex.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/MangaIndex.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/MangaIndex.kt index ee4ef3c..bed58d9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/MangaIndex.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/MangaIndex.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local import androidx.annotation.WorkerThread import org.json.JSONArray @@ -16,9 +16,9 @@ import org.koitharu.kotatsu.parsers.util.json.getLongOrDefault import org.koitharu.kotatsu.parsers.util.json.getStringOrNull import org.koitharu.kotatsu.parsers.util.json.mapJSONToSet import org.koitharu.kotatsu.parsers.util.toTitleCase -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.utils.AlphanumComparator +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.utils.AlphanumComparator import java.io.File class MangaIndex(source: String?) { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/Qualifiers.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/Qualifiers.kt similarity index 50% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/Qualifiers.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/Qualifiers.kt index b825aa6..a41e822 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/Qualifiers.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/Qualifiers.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local import javax.inject.Qualifier diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/TempFileFilter.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/TempFileFilter.kt similarity index 80% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/TempFileFilter.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/TempFileFilter.kt index 3512463..b7048db 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/TempFileFilter.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/TempFileFilter.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local +package org.xtimms.shirizu.core.parser.local import java.io.File import java.io.FileFilter diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaDirInput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaDirInput.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaDirInput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaDirInput.kt index 559691c..c5c1161 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaDirInput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaDirInput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.input +package org.xtimms.shirizu.core.parser.local.input import androidx.core.net.toFile import androidx.core.net.toUri @@ -9,17 +9,17 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.toCamelCase -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.parser.local.MangaIndex -import org.xtimms.etsudoku.core.parser.local.hasCbzExtension -import org.xtimms.etsudoku.core.parser.local.output.LocalMangaOutput -import org.xtimms.etsudoku.utils.AlphanumComparator -import org.xtimms.etsudoku.utils.hasImageExtension -import org.xtimms.etsudoku.utils.lang.longHashCode -import org.xtimms.etsudoku.utils.lang.toListSorted -import org.xtimms.etsudoku.utils.system.children -import org.xtimms.etsudoku.utils.system.creationTime -import org.xtimms.etsudoku.utils.system.walkCompat +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.parser.local.MangaIndex +import org.xtimms.shirizu.core.parser.local.hasCbzExtension +import org.xtimms.shirizu.core.parser.local.output.LocalMangaOutput +import org.xtimms.shirizu.utils.AlphanumComparator +import org.xtimms.shirizu.utils.hasImageExtension +import org.xtimms.shirizu.utils.lang.longHashCode +import org.xtimms.shirizu.utils.lang.toListSorted +import org.xtimms.shirizu.utils.system.children +import org.xtimms.shirizu.utils.system.creationTime +import org.xtimms.shirizu.utils.system.walkCompat import java.io.File import java.util.TreeMap import java.util.zip.ZipFile diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaInput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaInput.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaInput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaInput.kt index c36a8fe..eaa270e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaInput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaInput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.input +package org.xtimms.shirizu.core.parser.local.input import android.net.Uri import androidx.core.net.toFile @@ -13,8 +13,8 @@ import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.runCatchingCancellable import org.koitharu.kotatsu.parsers.util.toFileNameSafe -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.parser.local.hasCbzExtension +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.parser.local.hasCbzExtension import java.io.File sealed class LocalMangaInput( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaZipInput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaZipInput.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaZipInput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaZipInput.kt index c22838b..c00f031 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/input/LocalMangaZipInput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/input/LocalMangaZipInput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.input +package org.xtimms.shirizu.core.parser.local.input import android.net.Uri import android.webkit.MimeTypeMap @@ -12,13 +12,13 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.toCamelCase -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.parser.local.MangaIndex -import org.xtimms.etsudoku.core.parser.local.output.LocalMangaOutput -import org.xtimms.etsudoku.utils.AlphanumComparator -import org.xtimms.etsudoku.utils.lang.longHashCode -import org.xtimms.etsudoku.utils.lang.toListSorted -import org.xtimms.etsudoku.utils.system.readText +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.parser.local.MangaIndex +import org.xtimms.shirizu.core.parser.local.output.LocalMangaOutput +import org.xtimms.shirizu.utils.AlphanumComparator +import org.xtimms.shirizu.utils.lang.longHashCode +import org.xtimms.shirizu.utils.lang.toListSorted +import org.xtimms.shirizu.utils.system.readText import java.io.File import java.util.Enumeration import java.util.zip.ZipEntry diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaDirOutput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaDirOutput.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaDirOutput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaDirOutput.kt index 6537583..530c563 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaDirOutput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaDirOutput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.output +package org.xtimms.shirizu.core.parser.local.output import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible @@ -7,11 +7,11 @@ import kotlinx.coroutines.sync.withLock import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.util.toFileNameSafe -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.core.parser.local.MangaIndex -import org.xtimms.etsudoku.core.zip.ZipOutput -import org.xtimms.etsudoku.utils.system.deleteAwait -import org.xtimms.etsudoku.utils.system.takeIfReadable +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.core.parser.local.MangaIndex +import org.xtimms.shirizu.core.zip.ZipOutput +import org.xtimms.shirizu.utils.system.deleteAwait +import org.xtimms.shirizu.utils.system.takeIfReadable import java.io.File class LocalMangaDirOutput( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaOutput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaOutput.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaOutput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaOutput.kt index 786caf7..7153f6c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaOutput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaOutput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.output +package org.xtimms.shirizu.core.parser.local.output import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.sync.Mutex @@ -9,8 +9,8 @@ import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.util.runCatchingCancellable import org.koitharu.kotatsu.parsers.util.toFileNameSafe -import org.xtimms.etsudoku.core.parser.local.DownloadFormat -import org.xtimms.etsudoku.core.parser.local.input.LocalMangaInput +import org.xtimms.shirizu.core.parser.local.DownloadFormat +import org.xtimms.shirizu.core.parser.local.input.LocalMangaInput import java.io.File sealed class LocalMangaOutput( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaUtil.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaUtil.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaUtil.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaUtil.kt index 3a62aee..de3e224 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaUtil.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaUtil.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.output +package org.xtimms.shirizu.core.parser.local.output import androidx.core.net.toFile import androidx.core.net.toUri diff --git a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaZipOutput.kt b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaZipOutput.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaZipOutput.kt rename to app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaZipOutput.kt index 930ef12..7ab1870 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/parser/local/output/LocalMangaZipOutput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/parser/local/output/LocalMangaZipOutput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.parser.local.output +package org.xtimms.shirizu.core.parser.local.output import androidx.annotation.WorkerThread import kotlinx.coroutines.Dispatchers @@ -7,11 +7,11 @@ import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.core.parser.local.MangaIndex -import org.xtimms.etsudoku.core.zip.ZipOutput -import org.xtimms.etsudoku.utils.system.deleteAwait -import org.xtimms.etsudoku.utils.system.readText +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.core.parser.local.MangaIndex +import org.xtimms.shirizu.core.zip.ZipOutput +import org.xtimms.shirizu.utils.system.deleteAwait +import org.xtimms.shirizu.utils.system.readText import java.io.File import java.util.zip.ZipFile diff --git a/app/src/main/java/org/xtimms/etsudoku/core/prefs/AppSettings.kt b/app/src/main/java/org/xtimms/shirizu/core/prefs/AppSettings.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/prefs/AppSettings.kt rename to app/src/main/java/org/xtimms/shirizu/core/prefs/AppSettings.kt index bb7f109..1286d0d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/prefs/AppSettings.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/prefs/AppSettings.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.prefs +package org.xtimms.shirizu.core.prefs import android.os.Build import androidx.annotation.DeprecatedSinceApi @@ -13,11 +13,11 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import org.xtimms.etsudoku.ui.theme.SEED -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.ui.monet.PaletteStyle -import org.xtimms.etsudoku.utils.lang.processLifecycleScope -import org.xtimms.etsudoku.utils.system.LocaleLanguageCodeMap +import org.xtimms.shirizu.ui.theme.SEED +import org.xtimms.shirizu.R +import org.xtimms.shirizu.ui.monet.PaletteStyle +import org.xtimms.shirizu.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.system.LocaleLanguageCodeMap import java.util.Locale private const val DYNAMIC_COLOR = "dynamic_color" diff --git a/app/src/main/java/org/xtimms/etsudoku/core/prefs/KotatsuAppSettings.kt b/app/src/main/java/org/xtimms/shirizu/core/prefs/KotatsuAppSettings.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/prefs/KotatsuAppSettings.kt rename to app/src/main/java/org/xtimms/shirizu/core/prefs/KotatsuAppSettings.kt index 7fd2b0b..3d6ba06 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/prefs/KotatsuAppSettings.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/prefs/KotatsuAppSettings.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.prefs +package org.xtimms.shirizu.core.prefs import android.content.Context import android.content.SharedPreferences @@ -15,9 +15,9 @@ import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.transform -import org.xtimms.etsudoku.sections.explore.data.SourcesSortOrder -import org.xtimms.etsudoku.utils.system.getEnumValue -import org.xtimms.etsudoku.utils.system.putEnumValue +import org.xtimms.shirizu.sections.explore.data.SourcesSortOrder +import org.xtimms.shirizu.utils.system.getEnumValue +import org.xtimms.shirizu.utils.system.putEnumValue import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/core/prefs/SourceSettings.kt b/app/src/main/java/org/xtimms/shirizu/core/prefs/SourceSettings.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/prefs/SourceSettings.kt rename to app/src/main/java/org/xtimms/shirizu/core/prefs/SourceSettings.kt index ef725da..29826fd 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/prefs/SourceSettings.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/prefs/SourceSettings.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.prefs +package org.xtimms.shirizu.core.prefs import android.content.Context import androidx.core.content.edit @@ -6,9 +6,9 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.config.MangaSourceConfig import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.SortOrder -import org.xtimms.etsudoku.utils.lang.ifNullOrEmpty -import org.xtimms.etsudoku.utils.system.getEnumValue -import org.xtimms.etsudoku.utils.system.putEnumValue +import org.xtimms.shirizu.utils.lang.ifNullOrEmpty +import org.xtimms.shirizu.utils.system.getEnumValue +import org.xtimms.shirizu.utils.system.putEnumValue private const val KEY_SORT_ORDER = "sort_order" private const val KEY_SLOWDOWN = "slowdown" diff --git a/app/src/main/java/org/xtimms/etsudoku/core/screens/EmptyScreen.kt b/app/src/main/java/org/xtimms/shirizu/core/screens/EmptyScreen.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/core/screens/EmptyScreen.kt rename to app/src/main/java/org/xtimms/shirizu/core/screens/EmptyScreen.kt index bd55a34..aca305e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/screens/EmptyScreen.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/screens/EmptyScreen.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.screens +package org.xtimms.shirizu.core.screens import androidx.annotation.StringRes import androidx.compose.foundation.layout.Arrangement @@ -27,8 +27,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.util.fastForEach import kotlinx.collections.immutable.ImmutableList -import org.xtimms.etsudoku.core.components.ActionButton -import org.xtimms.etsudoku.utils.composable.secondaryItemAlpha +import org.xtimms.shirizu.core.components.ActionButton +import org.xtimms.shirizu.utils.composable.secondaryItemAlpha import kotlin.random.Random data class EmptyScreenAction( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/screens/InfoScreen.kt b/app/src/main/java/org/xtimms/shirizu/core/screens/InfoScreen.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/screens/InfoScreen.kt rename to app/src/main/java/org/xtimms/shirizu/core/screens/InfoScreen.kt index a5bf636..9663e50 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/screens/InfoScreen.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/screens/InfoScreen.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.screens +package org.xtimms.shirizu.core.screens import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -29,7 +29,7 @@ import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex -import org.xtimms.etsudoku.utils.composable.secondaryItemAlpha +import org.xtimms.shirizu.utils.composable.secondaryItemAlpha @Composable fun InfoScreen( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/screens/LoadingScreen.kt b/app/src/main/java/org/xtimms/shirizu/core/screens/LoadingScreen.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/core/screens/LoadingScreen.kt rename to app/src/main/java/org/xtimms/shirizu/core/screens/LoadingScreen.kt index 2ff39aa..0997c41 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/screens/LoadingScreen.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/screens/LoadingScreen.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.screens +package org.xtimms.shirizu.core.screens import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize diff --git a/app/src/main/java/org/xtimms/etsudoku/core/screens/UpdateDialog.kt b/app/src/main/java/org/xtimms/shirizu/core/screens/UpdateDialog.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/screens/UpdateDialog.kt rename to app/src/main/java/org/xtimms/shirizu/core/screens/UpdateDialog.kt index 2225fe3..76c6c58 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/screens/UpdateDialog.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/screens/UpdateDialog.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.screens +package org.xtimms.shirizu.core.screens import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState @@ -20,10 +20,10 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.DismissButton -import org.xtimms.etsudoku.core.updates.Updater -import org.xtimms.etsudoku.utils.system.suspendToast +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.DismissButton +import org.xtimms.shirizu.core.updates.Updater +import org.xtimms.shirizu.utils.system.suspendToast @Composable fun UpdateDialog( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAccountAuthenticator.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAccountAuthenticator.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAccountAuthenticator.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAccountAuthenticator.kt index 5151d6c..e7e6445 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAccountAuthenticator.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAccountAuthenticator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.AbstractAccountAuthenticator import android.accounts.Account diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAdapterEntryPoint.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAdapterEntryPoint.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAdapterEntryPoint.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAdapterEntryPoint.kt index ce38bca..6cf954a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAdapterEntryPoint.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAdapterEntryPoint.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import dagger.hilt.EntryPoint import dagger.hilt.InstallIn diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthActivity.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthActivity.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthActivity.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthActivity.kt index f3d2edb..cd9a097 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthActivity.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthActivity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.accounts.AccountAuthenticatorResponse @@ -17,13 +17,13 @@ import androidx.transition.Fade import androidx.transition.TransitionManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.base.BaseActivity -import org.xtimms.etsudoku.databinding.ActivitySyncAuthBinding -import org.xtimms.etsudoku.utils.lang.getParcelableExtraCompat -import org.xtimms.etsudoku.utils.lang.observe -import org.xtimms.etsudoku.utils.lang.observeEvent -import org.xtimms.etsudoku.utils.system.getDisplayMessage +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.base.BaseActivity +import org.xtimms.shirizu.databinding.ActivitySyncAuthBinding +import org.xtimms.shirizu.utils.lang.getParcelableExtraCompat +import org.xtimms.shirizu.utils.lang.observe +import org.xtimms.shirizu.utils.lang.observeEvent +import org.xtimms.shirizu.utils.system.getDisplayMessage @AndroidEntryPoint class SyncAuthActivity : BaseActivity(), View.OnClickListener, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthApi.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthApi.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthApi.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthApi.kt index 26a3e0d..fb5b819 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthApi.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthApi.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import dagger.Reusable import okhttp3.OkHttpClient @@ -7,9 +7,9 @@ import org.json.JSONObject import org.koitharu.kotatsu.parsers.util.await import org.koitharu.kotatsu.parsers.util.parseJson import org.koitharu.kotatsu.parsers.util.removeSurrounding -import org.xtimms.etsudoku.core.exceptions.SyncApiException -import org.xtimms.etsudoku.core.network.BaseHttpClient -import org.xtimms.etsudoku.utils.system.toRequestBody +import org.xtimms.shirizu.core.exceptions.SyncApiException +import org.xtimms.shirizu.core.network.BaseHttpClient +import org.xtimms.shirizu.utils.system.toRequestBody import javax.inject.Inject @Reusable diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthResult.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthResult.kt similarity index 75% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthResult.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthResult.kt index ffb5c13..9bf4cd2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthResult.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthResult.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync data class SyncAuthResult( val host: String, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthViewModel.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthViewModel.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthViewModel.kt index 37e677a..69cba7d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.AccountManager import android.content.Context @@ -6,10 +6,10 @@ import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticator.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticator.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticator.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticator.kt index 68fa984..091ae7b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticator.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.accounts.AccountManager @@ -8,8 +8,8 @@ import okhttp3.Authenticator import okhttp3.Request import okhttp3.Response import okhttp3.Route -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.network.CommonHeaders +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.network.CommonHeaders class SyncAuthenticator( context: Context, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticatorService.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticatorService.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticatorService.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticatorService.kt index eb96da7..7da2716 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncAuthenticatorService.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncAuthenticatorService.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.app.Service import android.content.Intent diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncController.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncController.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncController.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncController.kt index a18ef6a..95bc72f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncController.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncController.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.accounts.AccountManager @@ -18,12 +18,12 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITES -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITE_CATEGORIES -import org.xtimms.etsudoku.core.database.TABLE_HISTORY -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.database.TABLE_FAVOURITES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITE_CATEGORIES +import org.xtimms.shirizu.core.database.TABLE_HISTORY +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.utils.lang.processLifecycleScope import java.util.concurrent.TimeUnit import javax.inject.Inject import javax.inject.Provider @@ -32,7 +32,7 @@ import javax.inject.Singleton @Singleton class SyncController @Inject constructor( @ApplicationContext context: Context, - private val dbProvider: Provider, + private val dbProvider: Provider, ) : InvalidationTracker.Observer(arrayOf(TABLE_HISTORY, TABLE_FAVOURITES, TABLE_FAVOURITE_CATEGORIES)) { private val authorityHistory = context.getString(R.string.sync_authority_history) @@ -117,7 +117,7 @@ class SyncController @Inject constructor( return am.getAccountsByType(accountType).firstOrNull() } - private suspend fun EtsudokuDatabase.gc(favourites: Boolean, history: Boolean) = withTransaction { + private suspend fun ShirizuDatabase.gc(favourites: Boolean, history: Boolean) = withTransaction { val deletedAt = System.currentTimeMillis() - defaultGcPeriod if (history) { getHistoryDao().gc(deletedAt) diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHelper.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncHelper.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHelper.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncHelper.kt index 31712ac..8c2b14b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHelper.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncHelper.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.content.ContentProviderClient @@ -22,20 +22,20 @@ import okhttp3.Response import org.json.JSONArray import org.json.JSONObject import org.koitharu.kotatsu.parsers.util.json.mapJSONTo -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITES -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITE_CATEGORIES -import org.xtimms.etsudoku.core.database.TABLE_HISTORY -import org.xtimms.etsudoku.core.database.TABLE_MANGA -import org.xtimms.etsudoku.core.database.TABLE_MANGA_TAGS -import org.xtimms.etsudoku.core.database.TABLE_TAGS -import org.xtimms.etsudoku.core.logs.FileLogger -import org.xtimms.etsudoku.core.logs.SyncLogger -import org.xtimms.etsudoku.core.network.BaseHttpClient -import org.xtimms.etsudoku.utils.system.parseJsonOrNull -import org.xtimms.etsudoku.utils.system.toContentValues -import org.xtimms.etsudoku.utils.system.toJson -import org.xtimms.etsudoku.utils.system.toRequestBody +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.database.TABLE_FAVOURITES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITE_CATEGORIES +import org.xtimms.shirizu.core.database.TABLE_HISTORY +import org.xtimms.shirizu.core.database.TABLE_MANGA +import org.xtimms.shirizu.core.database.TABLE_MANGA_TAGS +import org.xtimms.shirizu.core.database.TABLE_TAGS +import org.xtimms.shirizu.core.logs.FileLogger +import org.xtimms.shirizu.core.logs.SyncLogger +import org.xtimms.shirizu.core.network.BaseHttpClient +import org.xtimms.shirizu.utils.system.parseJsonOrNull +import org.xtimms.shirizu.utils.system.toContentValues +import org.xtimms.shirizu.utils.system.toJson +import org.xtimms.shirizu.utils.system.toRequestBody import java.util.concurrent.TimeUnit private const val FIELD_TIMESTAMP = "timestamp" diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHostDialogFragment.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncHostDialogFragment.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHostDialogFragment.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncHostDialogFragment.kt index 925acfb..18c1071 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncHostDialogFragment.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncHostDialogFragment.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.content.DialogInterface import android.os.Bundle @@ -10,11 +10,11 @@ import androidx.core.view.updateLayoutParams import androidx.fragment.app.FragmentManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.base.AlertDialogFragment -import org.xtimms.etsudoku.databinding.PreferenceDialogAutocompleteTextViewBinding -import org.xtimms.etsudoku.utils.DomainValidator -import org.xtimms.etsudoku.utils.lang.ifNullOrEmpty +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.base.AlertDialogFragment +import org.xtimms.shirizu.databinding.PreferenceDialogAutocompleteTextViewBinding +import org.xtimms.shirizu.utils.DomainValidator +import org.xtimms.shirizu.utils.lang.ifNullOrEmpty import javax.inject.Inject @AndroidEntryPoint diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncInterceptor.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncInterceptor.kt similarity index 80% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncInterceptor.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncInterceptor.kt index 82ed9d1..269c129 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncInterceptor.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncInterceptor.kt @@ -1,14 +1,14 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.accounts.AccountManager import android.content.Context import okhttp3.Interceptor import okhttp3.Response -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.database.DATABASE_VERSION -import org.xtimms.etsudoku.core.network.CommonHeaders +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.database.DATABASE_VERSION +import org.xtimms.shirizu.core.network.CommonHeaders class SyncInterceptor( context: Context, diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncProvider.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncProvider.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncProvider.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncProvider.kt index bdba3c4..00bbaba 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncProvider.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncProvider.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.content.ContentProvider import android.content.ContentProviderOperation @@ -13,13 +13,13 @@ import dagger.hilt.EntryPoint import dagger.hilt.InstallIn import dagger.hilt.android.EntryPointAccessors import dagger.hilt.components.SingletonComponent -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITES -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITE_CATEGORIES -import org.xtimms.etsudoku.core.database.TABLE_HISTORY -import org.xtimms.etsudoku.core.database.TABLE_MANGA -import org.xtimms.etsudoku.core.database.TABLE_MANGA_TAGS -import org.xtimms.etsudoku.core.database.TABLE_TAGS -import org.xtimms.etsudoku.core.database.EtsudokuDatabase +import org.xtimms.shirizu.core.database.TABLE_FAVOURITES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITE_CATEGORIES +import org.xtimms.shirizu.core.database.TABLE_HISTORY +import org.xtimms.shirizu.core.database.TABLE_MANGA +import org.xtimms.shirizu.core.database.TABLE_MANGA_TAGS +import org.xtimms.shirizu.core.database.TABLE_TAGS +import org.xtimms.shirizu.core.database.ShirizuDatabase import java.util.concurrent.Callable abstract class SyncProvider : ContentProvider() { @@ -125,6 +125,6 @@ abstract class SyncProvider : ContentProvider() { @InstallIn(SingletonComponent::class) interface SyncProviderEntryPoint { - val database: EtsudokuDatabase + val database: ShirizuDatabase } } \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncSettings.kt b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncSettings.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/core/sync/SyncSettings.kt rename to app/src/main/java/org/xtimms/shirizu/core/sync/SyncSettings.kt index afa2ea5..fb64d13 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/sync/SyncSettings.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/sync/SyncSettings.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.core.sync +package org.xtimms.shirizu.core.sync import android.accounts.Account import android.accounts.AccountManager import android.content.Context import androidx.annotation.WorkerThread import dagger.hilt.android.qualifiers.ApplicationContext -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.utils.lang.ifNullOrEmpty +import org.xtimms.shirizu.R +import org.xtimms.shirizu.utils.lang.ifNullOrEmpty import javax.inject.Inject class SyncSettings( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/tracker/Tracker.kt b/app/src/main/java/org/xtimms/shirizu/core/tracker/Tracker.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/core/tracker/Tracker.kt rename to app/src/main/java/org/xtimms/shirizu/core/tracker/Tracker.kt index eaf6b73..b303fa2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/tracker/Tracker.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/tracker/Tracker.kt @@ -1,19 +1,19 @@ -package org.xtimms.etsudoku.core.tracker +package org.xtimms.shirizu.core.tracker import androidx.annotation.VisibleForTesting import androidx.collection.MutableLongSet import coil.request.CachePolicy import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.getPreferredBranch -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.RemoteMangaRepository -import org.xtimms.etsudoku.core.tracker.model.MangaTracking -import org.xtimms.etsudoku.core.tracker.model.MangaUpdates -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.data.repository.TrackingRepository -import org.xtimms.etsudoku.utils.CompositeMutex2 -import org.xtimms.etsudoku.work.tracker.TrackerNotificationChannels -import org.xtimms.etsudoku.work.tracker.TrackingItem +import org.xtimms.shirizu.core.model.getPreferredBranch +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.RemoteMangaRepository +import org.xtimms.shirizu.core.tracker.model.MangaTracking +import org.xtimms.shirizu.core.tracker.model.MangaUpdates +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.data.repository.TrackingRepository +import org.xtimms.shirizu.utils.CompositeMutex2 +import org.xtimms.shirizu.work.tracker.TrackerNotificationChannels +import org.xtimms.shirizu.work.tracker.TrackingItem import javax.inject.Inject import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind diff --git a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaTracking.kt b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaTracking.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaTracking.kt rename to app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaTracking.kt index 5367ebb..41420e3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaTracking.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaTracking.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.tracker.model +package org.xtimms.shirizu.core.tracker.model import org.koitharu.kotatsu.parsers.model.Manga import java.time.Instant diff --git a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaUpdates.kt b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaUpdates.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaUpdates.kt rename to app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaUpdates.kt index ebad6ad..7d0cde0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/MangaUpdates.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/MangaUpdates.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.core.tracker.model +package org.xtimms.shirizu.core.tracker.model import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.exceptions.TooManyRequestExceptions +import org.xtimms.shirizu.core.exceptions.TooManyRequestExceptions sealed interface MangaUpdates { diff --git a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/TrackingLogItem.kt b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/TrackingLogItem.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/core/tracker/model/TrackingLogItem.kt rename to app/src/main/java/org/xtimms/shirizu/core/tracker/model/TrackingLogItem.kt index 4a5b093..f0e4a6f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/tracker/model/TrackingLogItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/tracker/model/TrackingLogItem.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.core.tracker.model +package org.xtimms.shirizu.core.tracker.model import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel import java.time.Instant data class TrackingLogItem( diff --git a/app/src/main/java/org/xtimms/etsudoku/core/updates/Updater.kt b/app/src/main/java/org/xtimms/shirizu/core/updates/Updater.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/core/updates/Updater.kt rename to app/src/main/java/org/xtimms/shirizu/core/updates/Updater.kt index 6a23a36..d07e043 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/updates/Updater.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/updates/Updater.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.core.updates +package org.xtimms.shirizu.core.updates import android.content.Context import android.content.Intent @@ -19,19 +19,19 @@ import kotlinx.serialization.json.Json import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.ResponseBody -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.prefs.AppSettings.getInt -import org.xtimms.etsudoku.core.prefs.STABLE -import org.xtimms.etsudoku.core.prefs.UPDATE_CHANNEL -import org.xtimms.etsudoku.utils.system.getFileProvider -import org.xtimms.etsudoku.utils.system.toast +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.prefs.AppSettings.getInt +import org.xtimms.shirizu.core.prefs.STABLE +import org.xtimms.shirizu.core.prefs.UPDATE_CHANNEL +import org.xtimms.shirizu.utils.system.getFileProvider +import org.xtimms.shirizu.utils.system.toast import java.io.File import java.util.regex.Pattern object Updater { private const val OWNER = "ztimms73" - private const val REPO = "etsudoku" + private const val REPO = "shirizu" private const val TAG = "Updates" private val client = OkHttpClient() diff --git a/app/src/main/java/org/xtimms/etsudoku/core/zip/ZipOutput.kt b/app/src/main/java/org/xtimms/shirizu/core/zip/ZipOutput.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/core/zip/ZipOutput.kt rename to app/src/main/java/org/xtimms/shirizu/core/zip/ZipOutput.kt index 1efdd64..9c677ab 100644 --- a/app/src/main/java/org/xtimms/etsudoku/core/zip/ZipOutput.kt +++ b/app/src/main/java/org/xtimms/shirizu/core/zip/ZipOutput.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.core.zip +package org.xtimms.shirizu.core.zip import androidx.annotation.WorkerThread import androidx.collection.ArraySet import okio.Closeable -import org.xtimms.etsudoku.utils.system.children +import org.xtimms.shirizu.utils.system.children import java.io.File import java.io.FileInputStream import java.util.zip.Deflater diff --git a/app/src/main/java/org/xtimms/etsudoku/crash/CrashActivity.kt b/app/src/main/java/org/xtimms/shirizu/crash/CrashActivity.kt similarity index 80% rename from app/src/main/java/org/xtimms/etsudoku/crash/CrashActivity.kt rename to app/src/main/java/org/xtimms/shirizu/crash/CrashActivity.kt index 7338bdf..c132ba8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/crash/CrashActivity.kt +++ b/app/src/main/java/org/xtimms/shirizu/crash/CrashActivity.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.crash +package org.xtimms.shirizu.crash import android.content.Intent import android.os.Bundle @@ -6,11 +6,11 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import dagger.hilt.android.AndroidEntryPoint -import org.xtimms.etsudoku.LocalDarkTheme -import org.xtimms.etsudoku.LocalDynamicColorSwitch -import org.xtimms.etsudoku.MainActivity -import org.xtimms.etsudoku.SettingsProvider -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.LocalDarkTheme +import org.xtimms.shirizu.LocalDynamicColorSwitch +import org.xtimms.shirizu.MainActivity +import org.xtimms.shirizu.SettingsProvider +import org.xtimms.shirizu.ui.theme.ShirizuTheme @AndroidEntryPoint class CrashActivity : ComponentActivity() { @@ -22,7 +22,7 @@ class CrashActivity : ComponentActivity() { val exception = GlobalExceptionHandler.getThrowableFromIntent(intent) setContent { SettingsProvider { - EtsudokuTheme( + ShirizuTheme( darkTheme = LocalDarkTheme.current.isDarkTheme(), isDynamicColorEnabled = LocalDynamicColorSwitch.current, isHighContrastModeEnabled = LocalDarkTheme.current.isHighContrastModeEnabled, diff --git a/app/src/main/java/org/xtimms/etsudoku/crash/CrashScreen.kt b/app/src/main/java/org/xtimms/shirizu/crash/CrashScreen.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/crash/CrashScreen.kt rename to app/src/main/java/org/xtimms/shirizu/crash/CrashScreen.kt index 1ac2292..01f651b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/crash/CrashScreen.kt +++ b/app/src/main/java/org/xtimms/shirizu/crash/CrashScreen.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.crash +package org.xtimms.shirizu.crash import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -18,10 +18,10 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.screens.InfoScreen -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.CrashLogUtil +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.screens.InfoScreen +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.CrashLogUtil @Composable fun CrashScreen( @@ -65,7 +65,7 @@ fun CrashScreen( @PreviewLightDark @Composable private fun CrashScreenPreview() { - EtsudokuTheme { + ShirizuTheme { CrashScreen(exception = RuntimeException("Dummy")) {} } } \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/crash/GlobalExceptionHandler.kt b/app/src/main/java/org/xtimms/shirizu/crash/GlobalExceptionHandler.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/crash/GlobalExceptionHandler.kt rename to app/src/main/java/org/xtimms/shirizu/crash/GlobalExceptionHandler.kt index 98b478b..fd38628 100644 --- a/app/src/main/java/org/xtimms/etsudoku/crash/GlobalExceptionHandler.kt +++ b/app/src/main/java/org/xtimms/shirizu/crash/GlobalExceptionHandler.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.crash +package org.xtimms.shirizu.crash import android.content.Context import android.content.Intent diff --git a/app/src/main/java/org/xtimms/etsudoku/data/LocalStorageManager.kt b/app/src/main/java/org/xtimms/shirizu/data/LocalStorageManager.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/data/LocalStorageManager.kt rename to app/src/main/java/org/xtimms/shirizu/data/LocalStorageManager.kt index 58c03cf..b41ad83 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/LocalStorageManager.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/LocalStorageManager.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data +package org.xtimms.shirizu.data import android.content.Context import android.os.StatFs @@ -10,8 +10,8 @@ import kotlinx.coroutines.runInterruptible import kotlinx.coroutines.withContext import okhttp3.Cache import org.koitharu.kotatsu.parsers.util.mapToSet -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.utils.system.computeSize +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.utils.system.computeSize import java.io.File import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/BookmarksRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/BookmarksRepository.kt similarity index 81% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/BookmarksRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/BookmarksRepository.kt index 740611d..507be03 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/BookmarksRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/BookmarksRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import android.database.SQLException import androidx.room.withTransaction @@ -6,21 +6,21 @@ import dagger.Reusable import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.BookmarkEntity -import org.xtimms.etsudoku.core.database.entity.toBookmark -import org.xtimms.etsudoku.core.database.entity.toBookmarks -import org.xtimms.etsudoku.core.database.entity.toEntities -import org.xtimms.etsudoku.core.database.entity.toEntity -import org.xtimms.etsudoku.core.database.entity.toManga -import org.xtimms.etsudoku.core.model.Bookmark -import org.xtimms.etsudoku.utils.ReversibleHandle -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.BookmarkEntity +import org.xtimms.shirizu.core.database.entity.toBookmark +import org.xtimms.shirizu.core.database.entity.toBookmarks +import org.xtimms.shirizu.core.database.entity.toEntities +import org.xtimms.shirizu.core.database.entity.toEntity +import org.xtimms.shirizu.core.database.entity.toManga +import org.xtimms.shirizu.core.model.Bookmark +import org.xtimms.shirizu.utils.ReversibleHandle +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject @Reusable class BookmarksRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, ) { fun observeBookmark(manga: Manga, chapterId: Long, page: Int): Flow { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/ExploreRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/ExploreRepository.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/ExploreRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/ExploreRepository.kt index 59ec43a..b9f9144 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/ExploreRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/ExploreRepository.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaListFilter import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.almostEquals import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.utils.lang.asArrayList +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.utils.lang.asArrayList import javax.inject.Inject class ExploreRepository @Inject constructor( diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/FavouritesRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/FavouritesRepository.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/FavouritesRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/FavouritesRepository.kt index 2deae81..1d5ea04 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/FavouritesRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/FavouritesRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import androidx.room.withTransaction import dagger.Reusable @@ -9,23 +9,23 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.toEntities -import org.xtimms.etsudoku.core.database.entity.toEntity -import org.xtimms.etsudoku.core.database.entity.toFavouriteCategory -import org.xtimms.etsudoku.core.database.entity.toManga -import org.xtimms.etsudoku.core.database.entity.toMangaList -import org.xtimms.etsudoku.core.model.FavouriteCategory -import org.xtimms.etsudoku.core.model.ListSortOrder -import org.xtimms.etsudoku.utils.ReversibleHandle -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.toEntities +import org.xtimms.shirizu.core.database.entity.toEntity +import org.xtimms.shirizu.core.database.entity.toFavouriteCategory +import org.xtimms.shirizu.core.database.entity.toManga +import org.xtimms.shirizu.core.database.entity.toMangaList +import org.xtimms.shirizu.core.model.FavouriteCategory +import org.xtimms.shirizu.core.model.ListSortOrder +import org.xtimms.shirizu.utils.ReversibleHandle +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject @Reusable class FavouritesRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, ) { suspend fun getAllManga(): List { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/HistoryRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/HistoryRepository.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/HistoryRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/HistoryRepository.kt index 2cbe05c..2e21e8a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/HistoryRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/HistoryRepository.kt @@ -1,28 +1,28 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import androidx.room.withTransaction import dagger.Reusable import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.HistoryEntity -import org.xtimms.etsudoku.core.database.entity.toManga -import org.xtimms.etsudoku.core.database.entity.toMangaHistory -import org.xtimms.etsudoku.core.database.entity.toMangaTags -import org.xtimms.etsudoku.core.model.MangaHistory -import org.xtimms.etsudoku.core.model.MangaWithHistory -import org.xtimms.etsudoku.core.model.findById -import org.xtimms.etsudoku.core.model.isNsfw -import org.xtimms.etsudoku.core.parser.MangaDataRepository -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.HistoryEntity +import org.xtimms.shirizu.core.database.entity.toManga +import org.xtimms.shirizu.core.database.entity.toMangaHistory +import org.xtimms.shirizu.core.database.entity.toMangaTags +import org.xtimms.shirizu.core.model.MangaHistory +import org.xtimms.shirizu.core.model.MangaWithHistory +import org.xtimms.shirizu.core.model.findById +import org.xtimms.shirizu.core.model.isNsfw +import org.xtimms.shirizu.core.parser.MangaDataRepository +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject const val PROGRESS_NONE = -1f @Reusable class HistoryRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, private val mangaRepository: MangaDataRepository, ) { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/MangaSourcesRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/MangaSourcesRepository.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/MangaSourcesRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/MangaSourcesRepository.kt index a7e8c37..fdd6e47 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/MangaSourcesRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/MangaSourcesRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import androidx.compose.runtime.Composable import dagger.Reusable @@ -14,17 +14,17 @@ import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.mapToSet -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.dao.MangaSourcesDao -import org.xtimms.etsudoku.core.database.entity.MangaSourceEntity -import org.xtimms.etsudoku.core.model.MangaSource -import org.xtimms.etsudoku.core.model.isNsfw -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.KotatsuAppSettings -import org.xtimms.etsudoku.core.prefs.observeAsFlow -import org.xtimms.etsudoku.sections.explore.data.SourcesSortOrder -import org.xtimms.etsudoku.utils.ReversibleHandle +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.dao.MangaSourcesDao +import org.xtimms.shirizu.core.database.entity.MangaSourceEntity +import org.xtimms.shirizu.core.model.MangaSource +import org.xtimms.shirizu.core.model.isNsfw +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.KotatsuAppSettings +import org.xtimms.shirizu.core.prefs.observeAsFlow +import org.xtimms.shirizu.sections.explore.data.SourcesSortOrder +import org.xtimms.shirizu.utils.ReversibleHandle import java.util.Collections import java.util.EnumSet import javax.inject.Inject @@ -32,7 +32,7 @@ import javax.inject.Inject @OptIn(ExperimentalCoroutinesApi::class) @Reusable class MangaSourcesRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, private val settings: KotatsuAppSettings, ) { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/SuggestionRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/SuggestionRepository.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/SuggestionRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/SuggestionRepository.kt index fa0b149..f631f87 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/SuggestionRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/SuggestionRepository.kt @@ -1,20 +1,20 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import androidx.room.withTransaction import kotlinx.coroutines.flow.Flow import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.SuggestionEntity -import org.xtimms.etsudoku.core.database.entity.toEntities -import org.xtimms.etsudoku.core.database.entity.toEntity -import org.xtimms.etsudoku.core.database.entity.toManga -import org.xtimms.etsudoku.core.database.entity.toMangaTags -import org.xtimms.etsudoku.core.model.MangaSuggestion -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.SuggestionEntity +import org.xtimms.shirizu.core.database.entity.toEntities +import org.xtimms.shirizu.core.database.entity.toEntity +import org.xtimms.shirizu.core.database.entity.toManga +import org.xtimms.shirizu.core.database.entity.toMangaTags +import org.xtimms.shirizu.core.model.MangaSuggestion +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject class SuggestionRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, ) { fun observeAll(): Flow> { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/TrackingRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/TrackingRepository.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/TrackingRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/TrackingRepository.kt index a7b46ea..b0856c3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/TrackingRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/TrackingRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository +package org.xtimms.shirizu.data.repository import androidx.annotation.VisibleForTesting import androidx.collection.MutableLongSet @@ -13,20 +13,20 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.util.mapToSet -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.TrackEntity -import org.xtimms.etsudoku.core.database.entity.TrackLogEntity -import org.xtimms.etsudoku.core.database.entity.toFavouriteCategory -import org.xtimms.etsudoku.core.database.entity.toManga -import org.xtimms.etsudoku.core.database.entity.toTrackingLogItem -import org.xtimms.etsudoku.core.model.FavouriteCategory -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.core.parser.local.LocalMangaRepository -import org.xtimms.etsudoku.core.tracker.model.MangaTracking -import org.xtimms.etsudoku.core.tracker.model.MangaUpdates -import org.xtimms.etsudoku.core.tracker.model.TrackingLogItem -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.TrackEntity +import org.xtimms.shirizu.core.database.entity.TrackLogEntity +import org.xtimms.shirizu.core.database.entity.toFavouriteCategory +import org.xtimms.shirizu.core.database.entity.toManga +import org.xtimms.shirizu.core.database.entity.toTrackingLogItem +import org.xtimms.shirizu.core.model.FavouriteCategory +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.core.parser.local.LocalMangaRepository +import org.xtimms.shirizu.core.tracker.model.MangaTracking +import org.xtimms.shirizu.core.tracker.model.MangaUpdates +import org.xtimms.shirizu.core.tracker.model.TrackingLogItem +import org.xtimms.shirizu.utils.lang.mapItems import java.time.Instant import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject @@ -37,7 +37,7 @@ private const val MAX_QUERY_IDS = 100 @Reusable class TrackingRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, private val localMangaRepositoryProvider: Provider, ) { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupEntry.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupEntry.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupEntry.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupEntry.kt index 2c41d9c..2c8f9dc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupEntry.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupEntry.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import org.json.JSONArray diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupRepository.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupRepository.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupRepository.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupRepository.kt index 5025d55..c47bcd8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupRepository.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupRepository.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import androidx.room.withTransaction import org.json.JSONArray @@ -7,15 +7,15 @@ import org.koitharu.kotatsu.parsers.util.json.JSONIterator import org.koitharu.kotatsu.parsers.util.json.getLongOrDefault import org.koitharu.kotatsu.parsers.util.json.mapJSON import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.core.database.EtsudokuDatabase +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.core.database.ShirizuDatabase import java.util.Date import javax.inject.Inject private const val PAGE_SIZE = 10 class BackupRepository @Inject constructor( - private val db: EtsudokuDatabase, + private val db: ShirizuDatabase, ) { suspend fun dumpHistory(): BackupEntry { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipInput.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipInput.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipInput.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipInput.kt index c23ef9f..95bb4b3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipInput.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipInput.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Dispatchers @@ -6,7 +6,7 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.runInterruptible import okio.Closeable import org.json.JSONArray -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.lang.processLifecycleScope import java.io.File import java.util.EnumSet import java.util.zip.ZipFile diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipOutput.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipOutput.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipOutput.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipOutput.kt index efafe76..db08399 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/BackupZipOutput.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/BackupZipOutput.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import android.content.Context import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible import okio.Closeable -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.zip.ZipOutput +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.zip.ZipOutput import java.io.File import java.time.LocalDate import java.time.format.DateTimeFormatter diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/CompositeResult.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/CompositeResult.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/CompositeResult.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/CompositeResult.kt index 9601322..2d8d66c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/CompositeResult.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/CompositeResult.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup class CompositeResult { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonDeserializer.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonDeserializer.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonDeserializer.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonDeserializer.kt index 77d55ad..07144e6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonDeserializer.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonDeserializer.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import org.json.JSONObject import org.koitharu.kotatsu.parsers.model.SortOrder @@ -6,13 +6,13 @@ import org.koitharu.kotatsu.parsers.util.json.getBooleanOrDefault import org.koitharu.kotatsu.parsers.util.json.getFloatOrDefault import org.koitharu.kotatsu.parsers.util.json.getIntOrDefault import org.koitharu.kotatsu.parsers.util.json.getStringOrNull -import org.xtimms.etsudoku.core.database.entity.BookmarkEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.HistoryEntity -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.MangaSourceEntity -import org.xtimms.etsudoku.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.BookmarkEntity +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.HistoryEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.MangaSourceEntity +import org.xtimms.shirizu.core.database.entity.TagEntity class JsonDeserializer(private val json: JSONObject) { diff --git a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonSerializer.kt b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonSerializer.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonSerializer.kt rename to app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonSerializer.kt index ffc8e24..b9a2109 100644 --- a/app/src/main/java/org/xtimms/etsudoku/data/repository/backup/JsonSerializer.kt +++ b/app/src/main/java/org/xtimms/shirizu/data/repository/backup/JsonSerializer.kt @@ -1,13 +1,13 @@ -package org.xtimms.etsudoku.data.repository.backup +package org.xtimms.shirizu.data.repository.backup import org.json.JSONObject -import org.xtimms.etsudoku.core.database.entity.BookmarkEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.HistoryEntity -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.MangaSourceEntity -import org.xtimms.etsudoku.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.BookmarkEntity +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.HistoryEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.MangaSourceEntity +import org.xtimms.shirizu.core.database.entity.TagEntity class JsonSerializer private constructor(private val json: JSONObject) { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/ChapterListItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/ChapterListItem.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/ChapterListItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/ChapterListItem.kt index 6c867e9..a76155d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/ChapterListItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/ChapterListItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable @@ -30,10 +30,10 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.DotSeparatorText -import org.xtimms.etsudoku.utils.composable.selectedBackground -import org.xtimms.etsudoku.utils.material.SecondaryItemAlpha +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.DotSeparatorText +import org.xtimms.shirizu.utils.composable.selectedBackground +import org.xtimms.shirizu.utils.material.SecondaryItemAlpha import java.time.Instant import java.time.LocalDateTime import java.time.ZoneId diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/ChaptersMapper.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/ChaptersMapper.kt similarity index 85% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/ChaptersMapper.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/ChaptersMapper.kt index 2570c23..087a967 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/ChaptersMapper.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/ChaptersMapper.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import org.koitharu.kotatsu.parsers.util.mapToSet -import org.xtimms.etsudoku.core.model.Bookmark -import org.xtimms.etsudoku.core.model.MangaHistory -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.sections.details.model.ChapterItem -import org.xtimms.etsudoku.sections.details.model.toListItem +import org.xtimms.shirizu.core.model.Bookmark +import org.xtimms.shirizu.core.model.MangaHistory +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.sections.details.model.ChapterItem +import org.xtimms.shirizu.sections.details.model.toListItem fun MangaDetails.mapChapters( history: MangaHistory?, diff --git a/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsEvent.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsEvent.kt new file mode 100644 index 0000000..feec8b8 --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsEvent.kt @@ -0,0 +1,5 @@ +package org.xtimms.shirizu.sections.details + +import org.xtimms.shirizu.core.base.event.UiEvent + +interface DetailsEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsInfoHeader.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsInfoHeader.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsInfoHeader.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/DetailsInfoHeader.kt index a74f0f8..9fbfc3d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsInfoHeader.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsInfoHeader.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import android.net.Uri import androidx.compose.animation.AnimatedContent @@ -98,19 +98,19 @@ import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.AsyncImageImpl -import org.xtimms.etsudoku.core.components.AnimatedButton -import org.xtimms.etsudoku.core.components.ButtonType -import org.xtimms.etsudoku.core.components.HtmlTextField -import org.xtimms.etsudoku.core.components.MangaCover -import org.xtimms.etsudoku.core.components.ReadButton -import org.xtimms.etsudoku.core.parser.favicon.faviconUri -import org.xtimms.etsudoku.sections.details.data.ReadingTime -import org.xtimms.etsudoku.sections.details.model.HistoryInfo -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.composable.clickableNoIndication -import org.xtimms.etsudoku.utils.composable.secondaryItemAlpha +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.AsyncImageImpl +import org.xtimms.shirizu.core.components.AnimatedButton +import org.xtimms.shirizu.core.components.ButtonType +import org.xtimms.shirizu.core.components.HtmlTextField +import org.xtimms.shirizu.core.components.MangaCover +import org.xtimms.shirizu.core.components.ReadButton +import org.xtimms.shirizu.core.parser.favicon.faviconUri +import org.xtimms.shirizu.sections.details.data.ReadingTime +import org.xtimms.shirizu.sections.details.model.HistoryInfo +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.composable.clickableNoIndication +import org.xtimms.shirizu.utils.composable.secondaryItemAlpha import kotlin.math.roundToInt private val whitespaceLineRegex = Regex("[\\r\\n]{2,}", setOf(RegexOption.MULTILINE)) diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsUiState.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsUiState.kt similarity index 66% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsUiState.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/DetailsUiState.kt index ce4a9d9..de4fdf8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsUiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsUiState.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details -import org.xtimms.etsudoku.core.base.state.UiState -import org.xtimms.etsudoku.sections.details.data.MangaDetails +import org.xtimms.shirizu.core.base.state.UiState +import org.xtimms.shirizu.sections.details.data.MangaDetails data class DetailsUiState( val details: MangaDetails? = null, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsView.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/DetailsView.kt index 6640509..2a0e762 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import android.net.Uri import androidx.compose.animation.AnimatedVisibility @@ -51,12 +51,12 @@ import kotlinx.coroutines.flow.collectLatest import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.DetailsToolbar -import org.xtimms.etsudoku.core.components.MangaHorizontalItem -import org.xtimms.etsudoku.core.parser.favicon.faviconUri -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.utils.lang.toNavArgument +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.DetailsToolbar +import org.xtimms.shirizu.core.components.MangaHorizontalItem +import org.xtimms.shirizu.core.parser.favicon.faviconUri +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.utils.lang.toNavArgument const val MANGA_ID_ARGUMENT = "{mangaId}" const val DETAILS_DESTINATION = "details/?mangaId=$MANGA_ID_ARGUMENT" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewConstants.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewConstants.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewConstants.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewConstants.kt index aae35f4..45248ea 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewConstants.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewConstants.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details enum class DetailsViewItem { INFO_BOX, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewModel.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewModel.kt index 0418055..46f8aa8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/DetailsViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/DetailsViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewModelScope @@ -21,24 +21,24 @@ import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.core.model.findById -import org.xtimms.etsudoku.core.model.getPreferredBranch -import org.xtimms.etsudoku.core.parser.MangaIntent -import org.xtimms.etsudoku.data.repository.BookmarksRepository -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.sections.details.domain.BranchComparator -import org.xtimms.etsudoku.sections.details.domain.DetailsInteractor -import org.xtimms.etsudoku.sections.details.domain.DetailsLoadUseCase -import org.xtimms.etsudoku.sections.details.domain.ReadingTimeUseCase -import org.xtimms.etsudoku.sections.details.domain.RelatedMangaUseCase -import org.xtimms.etsudoku.sections.details.model.ChapterItem -import org.xtimms.etsudoku.sections.details.model.HistoryInfo -import org.xtimms.etsudoku.sections.details.model.MangaBranch -import org.xtimms.etsudoku.utils.lang.onEachWhile -import org.xtimms.etsudoku.utils.lang.removeFirstAndLast +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.core.model.findById +import org.xtimms.shirizu.core.model.getPreferredBranch +import org.xtimms.shirizu.core.parser.MangaIntent +import org.xtimms.shirizu.data.repository.BookmarksRepository +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.sections.details.domain.BranchComparator +import org.xtimms.shirizu.sections.details.domain.DetailsInteractor +import org.xtimms.shirizu.sections.details.domain.DetailsLoadUseCase +import org.xtimms.shirizu.sections.details.domain.ReadingTimeUseCase +import org.xtimms.shirizu.sections.details.domain.RelatedMangaUseCase +import org.xtimms.shirizu.sections.details.model.ChapterItem +import org.xtimms.shirizu.sections.details.model.HistoryInfo +import org.xtimms.shirizu.sections.details.model.MangaBranch +import org.xtimms.shirizu.utils.lang.onEachWhile +import org.xtimms.shirizu.utils.lang.removeFirstAndLast import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/FullImageView.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/FullImageView.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/FullImageView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/FullImageView.kt index fe92fda..e09c187 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/FullImageView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/FullImageView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details +package org.xtimms.shirizu.sections.details import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -30,10 +30,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.ImageLoader import kotlinx.coroutines.launch -import org.xtimms.etsudoku.core.AsyncImageImpl -import org.xtimms.etsudoku.core.components.BackIconButton -import org.xtimms.etsudoku.core.components.ViewInBrowserButton -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.core.AsyncImageImpl +import org.xtimms.shirizu.core.components.BackIconButton +import org.xtimms.shirizu.core.components.ViewInBrowserButton +import org.xtimms.shirizu.ui.theme.ShirizuTheme const val PICTURES_ARGUMENT = "{pictures}" const val FULL_POSTER_DESTINATION = "full_poster/$PICTURES_ARGUMENT" @@ -129,7 +129,7 @@ fun FullImageView( @Preview(showBackground = true) @Composable fun FullPosterPreview() { - EtsudokuTheme { + ShirizuTheme { FullImageView( coil = ImageLoader(LocalContext.current), pictures = arrayOf("", ""), diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/data/MangaDetails.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/data/MangaDetails.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/data/MangaDetails.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/data/MangaDetails.kt index 36d6bc7..1e3419b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/data/MangaDetails.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/data/MangaDetails.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.sections.details.data +package org.xtimms.shirizu.sections.details.data import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.model.LocalManga -import org.xtimms.etsudoku.core.model.isLocal +import org.xtimms.shirizu.core.model.LocalManga +import org.xtimms.shirizu.core.model.isLocal data class MangaDetails( private val manga: Manga, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/data/ReadingTime.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/data/ReadingTime.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/data/ReadingTime.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/data/ReadingTime.kt index 65694de..2b00839 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/data/ReadingTime.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/data/ReadingTime.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.details.data +package org.xtimms.shirizu.sections.details.data import android.content.res.Resources -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R data class ReadingTime( val minutes: Int, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/BranchComparator.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/BranchComparator.kt similarity index 56% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/domain/BranchComparator.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/domain/BranchComparator.kt index 2c3f5e9..fc148a4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/BranchComparator.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/BranchComparator.kt @@ -1,6 +1,6 @@ -package org.xtimms.etsudoku.sections.details.domain +package org.xtimms.shirizu.sections.details.domain -import org.xtimms.etsudoku.sections.details.model.MangaBranch +import org.xtimms.shirizu.sections.details.model.MangaBranch class BranchComparator : Comparator { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsInteractor.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsInteractor.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsInteractor.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsInteractor.kt index c17516e..f1df5ef 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsInteractor.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsInteractor.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details.domain +package org.xtimms.shirizu.sections.details.domain import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow @@ -7,9 +7,9 @@ import kotlinx.coroutines.flow.distinctUntilChangedBy import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.map import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.data.repository.HistoryRepository +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.data.repository.HistoryRepository import javax.inject.Inject class DetailsInteractor @Inject constructor( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsLoadUseCase.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsLoadUseCase.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsLoadUseCase.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsLoadUseCase.kt index 41d76c4..0584581 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/DetailsLoadUseCase.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/DetailsLoadUseCase.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.details.domain +package org.xtimms.shirizu.sections.details.domain import android.text.Html import android.text.SpannableString @@ -13,14 +13,14 @@ import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.runInterruptible import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.model.isLocal -import org.xtimms.etsudoku.core.parser.MangaDataRepository -import org.xtimms.etsudoku.core.parser.MangaIntent -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.local.LocalMangaRepository -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.utils.lang.peek -import org.xtimms.etsudoku.utils.lang.sanitize +import org.xtimms.shirizu.core.model.isLocal +import org.xtimms.shirizu.core.parser.MangaDataRepository +import org.xtimms.shirizu.core.parser.MangaIntent +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.local.LocalMangaRepository +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.utils.lang.peek +import org.xtimms.shirizu.utils.lang.sanitize import java.io.IOException import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/ReadingTimeUseCase.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/ReadingTimeUseCase.kt similarity index 78% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/domain/ReadingTimeUseCase.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/domain/ReadingTimeUseCase.kt index 332a57a..b843009 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/ReadingTimeUseCase.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/ReadingTimeUseCase.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.sections.details.domain +package org.xtimms.shirizu.sections.details.domain -import org.xtimms.etsudoku.core.model.MangaHistory -import org.xtimms.etsudoku.core.model.findById -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.sections.details.data.ReadingTime +import org.xtimms.shirizu.core.model.MangaHistory +import org.xtimms.shirizu.core.model.findById +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.sections.details.data.ReadingTime import javax.inject.Inject import kotlin.math.roundToInt diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/RelatedMangaUseCase.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/RelatedMangaUseCase.kt similarity index 81% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/domain/RelatedMangaUseCase.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/domain/RelatedMangaUseCase.kt index 6e72570..48ea409 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/domain/RelatedMangaUseCase.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/domain/RelatedMangaUseCase.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.sections.details.domain +package org.xtimms.shirizu.sections.details.domain import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.MangaRepository import javax.inject.Inject class RelatedMangaUseCase @Inject constructor( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/ChapterItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/model/ChapterItem.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/model/ChapterItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/model/ChapterItem.kt index c77228d..15f8f93 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/ChapterItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/model/ChapterItem.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.sections.details.model +package org.xtimms.shirizu.sections.details.model import android.text.format.DateUtils import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.model.ListModel -import org.xtimms.etsudoku.core.model.formatNumber +import org.xtimms.shirizu.core.model.ListModel +import org.xtimms.shirizu.core.model.formatNumber import org.jsoup.internal.StringUtil.StringJoiner data class ChapterItem( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/HistoryInfo.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/model/HistoryInfo.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/model/HistoryInfo.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/model/HistoryInfo.kt index a18b7d7..046a5bf 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/HistoryInfo.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/model/HistoryInfo.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.details.model +package org.xtimms.shirizu.sections.details.model import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.MangaHistory +import org.xtimms.shirizu.core.model.MangaHistory data class HistoryInfo( val totalChapters: Int, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/ListModelConversionExt.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/model/ListModelConversionExt.kt similarity index 55% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/model/ListModelConversionExt.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/model/ListModelConversionExt.kt index 49db462..daa9f85 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/ListModelConversionExt.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/model/ListModelConversionExt.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.sections.details.model +package org.xtimms.shirizu.sections.details.model import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.sections.details.model.ChapterItem.Companion.FLAG_BOOKMARKED -import org.xtimms.etsudoku.sections.details.model.ChapterItem.Companion.FLAG_CURRENT -import org.xtimms.etsudoku.sections.details.model.ChapterItem.Companion.FLAG_DOWNLOADED -import org.xtimms.etsudoku.sections.details.model.ChapterItem.Companion.FLAG_NEW -import org.xtimms.etsudoku.sections.details.model.ChapterItem.Companion.FLAG_UNREAD +import org.xtimms.shirizu.sections.details.model.ChapterItem.Companion.FLAG_BOOKMARKED +import org.xtimms.shirizu.sections.details.model.ChapterItem.Companion.FLAG_CURRENT +import org.xtimms.shirizu.sections.details.model.ChapterItem.Companion.FLAG_DOWNLOADED +import org.xtimms.shirizu.sections.details.model.ChapterItem.Companion.FLAG_NEW +import org.xtimms.shirizu.sections.details.model.ChapterItem.Companion.FLAG_UNREAD fun MangaChapter.toListItem( isCurrent: Boolean, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/MangaBranch.kt b/app/src/main/java/org/xtimms/shirizu/sections/details/model/MangaBranch.kt similarity index 77% rename from app/src/main/java/org/xtimms/etsudoku/sections/details/model/MangaBranch.kt rename to app/src/main/java/org/xtimms/shirizu/sections/details/model/MangaBranch.kt index 1d6d793..39db1f9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/details/model/MangaBranch.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/details/model/MangaBranch.kt @@ -1,6 +1,6 @@ -package org.xtimms.etsudoku.sections.details.model +package org.xtimms.shirizu.sections.details.model -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class MangaBranch( val name: String?, diff --git a/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreEvent.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreEvent.kt new file mode 100644 index 0000000..6f19c1c --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreEvent.kt @@ -0,0 +1,5 @@ +package org.xtimms.shirizu.sections.explore + +import org.xtimms.shirizu.core.base.event.UiEvent + +interface ExploreEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreUiState.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreUiState.kt similarity index 81% rename from app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreUiState.kt rename to app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreUiState.kt index 135a3bb..9b4bf97 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreUiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreUiState.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.sections.explore +package org.xtimms.shirizu.sections.explore import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.base.state.UiState +import org.xtimms.shirizu.core.base.state.UiState data class ExploreUiState( val sources: List = emptyList(), diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreView.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreView.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreView.kt index 025b972..a7b18c9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.explore +package org.xtimms.shirizu.sections.explore import androidx.compose.animation.animateContentSize import androidx.compose.foundation.clickable @@ -50,12 +50,12 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.AsyncImageImpl -import org.xtimms.etsudoku.core.components.ExploreButton -import org.xtimms.etsudoku.core.components.SourceItem -import org.xtimms.etsudoku.core.components.icons.Dice -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.AsyncImageImpl +import org.xtimms.shirizu.core.components.ExploreButton +import org.xtimms.shirizu.core.components.SourceItem +import org.xtimms.shirizu.core.components.icons.Dice +import org.xtimms.shirizu.ui.theme.ShirizuTheme const val EXPLORE_DESTINATION = "explore" @@ -236,7 +236,7 @@ fun ExploreView( @PreviewLightDark @Composable fun RecommendationPreview() { - EtsudokuTheme { + ShirizuTheme { Row( verticalAlignment = Alignment.CenterVertically ) { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreViewModel.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreViewModel.kt index 961c06e..5a781eb 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/ExploreViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/ExploreViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.explore +package org.xtimms.shirizu.sections.explore import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -16,13 +16,13 @@ import kotlinx.coroutines.plus import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.core.parser.favicon.faviconUri -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.data.repository.ExploreRepository -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.data.repository.SuggestionRepository -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.core.parser.favicon.faviconUri +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.data.repository.ExploreRepository +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.data.repository.SuggestionRepository +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/SourceItemModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/SourceItemModel.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/sections/explore/SourceItemModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/explore/SourceItemModel.kt index 37acb83..1a24abe 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/SourceItemModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/SourceItemModel.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.explore +package org.xtimms.shirizu.sections.explore import android.net.Uri -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class SourceItemModel( val id: Int, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/explore/data/SourcesSortOrder.kt b/app/src/main/java/org/xtimms/shirizu/sections/explore/data/SourcesSortOrder.kt similarity index 71% rename from app/src/main/java/org/xtimms/etsudoku/sections/explore/data/SourcesSortOrder.kt rename to app/src/main/java/org/xtimms/shirizu/sections/explore/data/SourcesSortOrder.kt index 05825db..811946d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/explore/data/SourcesSortOrder.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/explore/data/SourcesSortOrder.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.explore.data +package org.xtimms.shirizu.sections.explore.data import androidx.annotation.StringRes -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R enum class SourcesSortOrder( @StringRes val titleResId: Int, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedView.kt b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedView.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/feed/FeedView.kt index 8388abb..f7b13a3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.feed +package org.xtimms.shirizu.sections.feed import androidx.compose.animation.core.Spring import androidx.compose.animation.core.VisibilityThreshold @@ -34,22 +34,22 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ConfirmButton -import org.xtimms.etsudoku.core.components.DialogCheckBoxItem -import org.xtimms.etsudoku.core.components.DismissButton -import org.xtimms.etsudoku.core.components.ListGroupHeader -import org.xtimms.etsudoku.core.components.ScaffoldWithClassicTopAppBar -import org.xtimms.etsudoku.core.components.EtsudokuDialog -import org.xtimms.etsudoku.core.components.effects.RowEntity -import org.xtimms.etsudoku.core.components.effects.RowEntityType -import org.xtimms.etsudoku.core.components.effects.animatedItemsIndexed -import org.xtimms.etsudoku.core.components.effects.updateAnimatedItemsState -import org.xtimms.etsudoku.core.screens.EmptyScreen -import org.xtimms.etsudoku.core.tracker.model.TrackingLogItem -import org.xtimms.etsudoku.sections.feed.model.toFeedItem -import org.xtimms.etsudoku.utils.lang.calculateTimeAgo -import org.xtimms.etsudoku.utils.lang.isSameDay +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ConfirmButton +import org.xtimms.shirizu.core.components.DialogCheckBoxItem +import org.xtimms.shirizu.core.components.DismissButton +import org.xtimms.shirizu.core.components.ListGroupHeader +import org.xtimms.shirizu.core.components.ScaffoldWithClassicTopAppBar +import org.xtimms.shirizu.core.components.ShirizuDialog +import org.xtimms.shirizu.core.components.effects.RowEntity +import org.xtimms.shirizu.core.components.effects.RowEntityType +import org.xtimms.shirizu.core.components.effects.animatedItemsIndexed +import org.xtimms.shirizu.core.components.effects.updateAnimatedItemsState +import org.xtimms.shirizu.core.screens.EmptyScreen +import org.xtimms.shirizu.core.tracker.model.TrackingLogItem +import org.xtimms.shirizu.sections.feed.model.toFeedItem +import org.xtimms.shirizu.utils.lang.calculateTimeAgo +import org.xtimms.shirizu.utils.lang.isSameDay import java.time.Instant const val FEED_DESTINATION = "feed" @@ -192,7 +192,7 @@ fun ClearFeedDialog( mutableStateOf(isClearInfoAboutNewChaptersSelected) } - EtsudokuDialog( + ShirizuDialog( onDismissRequest = onDismissRequest, confirmButton = { ConfirmButton { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewItem.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewItem.kt index e1155e2..1f0baae 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.feed +package org.xtimms.shirizu.sections.feed import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable @@ -27,10 +27,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.MangaCover -import org.xtimms.etsudoku.sections.feed.model.FeedItem -import org.xtimms.etsudoku.utils.composable.selectedBackground +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.MangaCover +import org.xtimms.shirizu.sections.feed.model.FeedItem +import org.xtimms.shirizu.utils.composable.selectedBackground const val ReadItemAlpha = .38f diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewModel.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewModel.kt index dcd9c5f..6923864 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/feed/FeedViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/feed/FeedViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.feed +package org.xtimms.shirizu.sections.feed import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -7,12 +7,12 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.TrackingRepository -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call -import org.xtimms.etsudoku.utils.lang.insertSeparators -import org.xtimms.etsudoku.work.tracker.TrackWorker +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.TrackingRepository +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call +import org.xtimms.shirizu.utils.lang.insertSeparators +import org.xtimms.shirizu.work.tracker.TrackWorker import java.util.concurrent.atomic.AtomicBoolean import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/feed/model/FeedItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/feed/model/FeedItem.kt similarity index 77% rename from app/src/main/java/org/xtimms/etsudoku/sections/feed/model/FeedItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/feed/model/FeedItem.kt index b68b554..5a697f2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/feed/model/FeedItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/feed/model/FeedItem.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.feed.model +package org.xtimms.shirizu.sections.feed.model import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class FeedItem( val id: Long, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/feed/model/ListModelConversionExt.kt b/app/src/main/java/org/xtimms/shirizu/sections/feed/model/ListModelConversionExt.kt similarity index 61% rename from app/src/main/java/org/xtimms/etsudoku/sections/feed/model/ListModelConversionExt.kt rename to app/src/main/java/org/xtimms/shirizu/sections/feed/model/ListModelConversionExt.kt index 25dfa82..02b568f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/feed/model/ListModelConversionExt.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/feed/model/ListModelConversionExt.kt @@ -1,6 +1,6 @@ -package org.xtimms.etsudoku.sections.feed.model +package org.xtimms.shirizu.sections.feed.model -import org.xtimms.etsudoku.core.tracker.model.TrackingLogItem +import org.xtimms.shirizu.core.tracker.model.TrackingLogItem fun TrackingLogItem.toFeedItem() = FeedItem( id = id, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItem.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItem.kt index 1beea65..64bab2d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.history +package org.xtimms.shirizu.sections.history import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -16,7 +16,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import coil.ImageLoader -import org.xtimms.etsudoku.core.components.MangaCover +import org.xtimms.shirizu.core.components.MangaCover @Composable fun HistoryItem( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItemModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItemModel.kt similarity index 66% rename from app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItemModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItemModel.kt index 8b14da0..1404b94 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryItemModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryItemModel.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.sections.history +package org.xtimms.shirizu.sections.history import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.ListModel -import org.xtimms.etsudoku.core.model.MangaHistory +import org.xtimms.shirizu.core.model.ListModel +import org.xtimms.shirizu.core.model.MangaHistory data class HistoryItemModel( val manga: Manga, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryView.kt b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryView.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/history/HistoryView.kt index 5855038..6bf5fac 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.history +package org.xtimms.shirizu.sections.history //noinspection UsingMaterialAndMaterial3Libraries import androidx.compose.animation.core.Animatable @@ -49,19 +49,19 @@ import androidx.compose.ui.unit.min import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.collapsable -import org.xtimms.etsudoku.core.components.ListGroupHeader -import org.xtimms.etsudoku.core.components.effects.RowEntity -import org.xtimms.etsudoku.core.components.effects.RowEntityType -import org.xtimms.etsudoku.core.components.effects.animatedItemsIndexed -import org.xtimms.etsudoku.core.components.effects.updateAnimatedItemsState -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.SWIPE_TUTORIAL -import org.xtimms.etsudoku.core.screens.EmptyScreen -import org.xtimms.etsudoku.core.screens.LoadingScreen -import org.xtimms.etsudoku.utils.lang.calculateTimeAgo -import org.xtimms.etsudoku.utils.lang.isSameDay +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.collapsable +import org.xtimms.shirizu.core.components.ListGroupHeader +import org.xtimms.shirizu.core.components.effects.RowEntity +import org.xtimms.shirizu.core.components.effects.RowEntityType +import org.xtimms.shirizu.core.components.effects.animatedItemsIndexed +import org.xtimms.shirizu.core.components.effects.updateAnimatedItemsState +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.SWIPE_TUTORIAL +import org.xtimms.shirizu.core.screens.EmptyScreen +import org.xtimms.shirizu.core.screens.LoadingScreen +import org.xtimms.shirizu.utils.lang.calculateTimeAgo +import org.xtimms.shirizu.utils.lang.isSameDay import java.time.Instant import kotlin.math.abs import kotlin.math.absoluteValue diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryViewModel.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/history/HistoryViewModel.kt index a9a8620..96be18b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/history/HistoryViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/history/HistoryViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.history +package org.xtimms.shirizu.sections.history import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -8,9 +8,9 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/history/SwipeActions.kt b/app/src/main/java/org/xtimms/shirizu/sections/history/SwipeActions.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/sections/history/SwipeActions.kt rename to app/src/main/java/org/xtimms/shirizu/sections/history/SwipeActions.kt index 56ec230..6ea5ed1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/history/SwipeActions.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/history/SwipeActions.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.history +package org.xtimms.shirizu.sections.history import android.view.MotionEvent import androidx.compose.animation.* @@ -39,9 +39,9 @@ import kotlin.math.abs import kotlin.math.absoluteValue import kotlin.math.sqrt import androidx.compose.ui.unit.min -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.ui.theme.SEED -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.ui.theme.SEED +import org.xtimms.shirizu.ui.theme.ShirizuTheme data class SwipeActionsConfig( val threshold: Float, @@ -313,7 +313,7 @@ class CirclePath(private val progress: Float, private val start: Boolean) : Shap @Preview(widthDp = 300) @Composable private fun PreviewDefault() { - EtsudokuTheme { + ShirizuTheme { SwipeActions( startActionsConfig = SwipeActionsConfig( threshold = 0.4f, diff --git a/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListEvent.kt b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListEvent.kt new file mode 100644 index 0000000..ce09f3f --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListEvent.kt @@ -0,0 +1,5 @@ +package org.xtimms.shirizu.sections.list + +import org.xtimms.shirizu.core.base.event.PagedUiEvent + +interface MangaListEvent : PagedUiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListUiState.kt b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListUiState.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListUiState.kt rename to app/src/main/java/org/xtimms/shirizu/sections/list/MangaListUiState.kt index cd2c8e2..b8a9e07 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListUiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListUiState.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.list +package org.xtimms.shirizu.sections.list import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.base.state.PagedUiState +import org.xtimms.shirizu.core.base.state.PagedUiState data class MangaListUiState( val manga: List = listOf(), diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListView.kt b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListView.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/list/MangaListView.kt index 7f2b3e3..432c5fc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.list +package org.xtimms.shirizu.sections.list import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.tween @@ -34,10 +34,10 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.components.MangaGridItem -import org.xtimms.etsudoku.core.components.ScaffoldWithSmallTopAppBarWithChips -import org.xtimms.etsudoku.utils.composable.onBottomReached -import org.xtimms.etsudoku.utils.system.toast +import org.xtimms.shirizu.core.components.MangaGridItem +import org.xtimms.shirizu.core.components.ScaffoldWithSmallTopAppBarWithChips +import org.xtimms.shirizu.utils.composable.onBottomReached +import org.xtimms.shirizu.utils.system.toast const val PROVIDER_ARGUMENT = "{source}" const val LIST_DESTINATION = "provider/${PROVIDER_ARGUMENT}" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListViewModel.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/list/MangaListViewModel.kt index 47f9609..f73727d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/list/MangaListViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/list/MangaListViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.list +package org.xtimms.shirizu.sections.list import androidx.lifecycle.SavedStateHandle import dagger.hilt.android.lifecycle.HiltViewModel @@ -12,11 +12,11 @@ import kotlinx.coroutines.flow.getAndUpdate import kotlinx.coroutines.flow.update import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.base.viewmodel.BaseViewModel -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.utils.lang.call -import org.xtimms.etsudoku.utils.lang.removeFirstAndLast -import org.xtimms.etsudoku.utils.lang.require +import org.xtimms.shirizu.core.base.viewmodel.BaseViewModel +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.utils.lang.call +import org.xtimms.shirizu.utils.lang.removeFirstAndLast +import org.xtimms.shirizu.utils.lang.require import javax.inject.Inject import kotlin.coroutines.cancellation.CancellationException diff --git a/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderContent.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderContent.kt new file mode 100644 index 0000000..8a16245 --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderContent.kt @@ -0,0 +1,8 @@ +package org.xtimms.shirizu.sections.reader + +import org.xtimms.shirizu.sections.reader.pager.ReaderPage + +data class ReaderContent( + val pages: List, + val state: ReaderState? +) \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderState.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderState.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderState.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderState.kt index 8ff87c1..f4ce4f6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderState.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderState.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.sections.reader +package org.xtimms.shirizu.sections.reader import android.os.Parcelable import kotlinx.parcelize.Parcelize import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.MangaHistory +import org.xtimms.shirizu.core.model.MangaHistory @Parcelize data class ReaderState( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderView.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderView.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderView.kt index 03b2eb1..5b1ce2a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.reader +package org.xtimms.shirizu.sections.reader import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -28,8 +28,8 @@ import com.google.android.material.slider.Slider import me.saket.telephoto.zoomable.coil.ZoomableAsyncImage import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.components.AppBarTitle -import org.xtimms.etsudoku.core.components.BackIconButton +import org.xtimms.shirizu.core.components.AppBarTitle +import org.xtimms.shirizu.core.components.BackIconButton const val READER_DESTINATION = "reader" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderViewModel.kt similarity index 71% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderViewModel.kt index cdbeb0f..31bcaf2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/ReaderViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/ReaderViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.reader +package org.xtimms.shirizu.sections.reader import androidx.lifecycle.SavedStateHandle import dagger.hilt.android.lifecycle.HiltViewModel @@ -6,14 +6,14 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.first -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.core.parser.MangaDataRepository -import org.xtimms.etsudoku.core.parser.MangaIntent -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.sections.details.domain.DetailsLoadUseCase -import org.xtimms.etsudoku.sections.reader.domain.ChaptersLoader -import org.xtimms.etsudoku.sections.reader.domain.PageLoader +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.core.parser.MangaDataRepository +import org.xtimms.shirizu.core.parser.MangaIntent +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.sections.details.domain.DetailsLoadUseCase +import org.xtimms.shirizu.sections.reader.domain.ChaptersLoader +import org.xtimms.shirizu.sections.reader.domain.PageLoader import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChapterPages.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChapterPages.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChapterPages.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChapterPages.kt index cc89c0b..be26787 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChapterPages.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChapterPages.kt @@ -1,8 +1,8 @@ -package org.xtimms.etsudoku.sections.reader.domain +package org.xtimms.shirizu.sections.reader.domain import androidx.collection.LongSparseArray import androidx.collection.contains -import org.xtimms.etsudoku.sections.reader.pager.ReaderPage +import org.xtimms.shirizu.sections.reader.pager.ReaderPage class ChapterPages private constructor(private val pages: ArrayDeque) : List by pages { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChaptersLoader.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChaptersLoader.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChaptersLoader.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChaptersLoader.kt index cdb79b4..0ada7f6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/ChaptersLoader.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/ChaptersLoader.kt @@ -1,13 +1,13 @@ -package org.xtimms.etsudoku.sections.reader.domain +package org.xtimms.shirizu.sections.reader.domain import androidx.collection.LongSparseArray import dagger.hilt.android.scopes.ViewModelScoped import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.sections.details.data.MangaDetails -import org.xtimms.etsudoku.sections.reader.pager.ReaderPage +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.sections.details.data.MangaDetails +import org.xtimms.shirizu.sections.reader.pager.ReaderPage import javax.inject.Inject private const val PAGES_TRIM_THRESHOLD = 120 diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/PageLoader.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/PageLoader.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/PageLoader.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/domain/PageLoader.kt index 46442ef..63e47db 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/domain/PageLoader.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/domain/PageLoader.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.reader.domain +package org.xtimms.shirizu.sections.reader.domain import android.content.Context import android.graphics.BitmapFactory @@ -27,29 +27,29 @@ import okhttp3.OkHttpClient import okhttp3.Request import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.cache.PagesCache -import org.xtimms.etsudoku.core.network.CommonHeaders -import org.xtimms.etsudoku.core.network.MangaHttpClient -import org.xtimms.etsudoku.core.network.interceptors.ImageProxyInterceptor -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.RemoteMangaRepository -import org.xtimms.etsudoku.core.parser.local.isFileUri -import org.xtimms.etsudoku.core.parser.local.isZipUri -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.sections.reader.pager.ReaderPage -import org.xtimms.etsudoku.utils.FileSize -import org.xtimms.etsudoku.utils.RetainedLifecycleCoroutineScope -import org.xtimms.etsudoku.utils.lang.getCompletionResultOrNull -import org.xtimms.etsudoku.utils.lang.withProgress -import org.xtimms.etsudoku.utils.progress.ProgressDeferred -import org.xtimms.etsudoku.utils.system.URI_SCHEME_ZIP -import org.xtimms.etsudoku.utils.system.compressToPNG -import org.xtimms.etsudoku.utils.system.ensureRamAtLeast -import org.xtimms.etsudoku.utils.system.ensureSuccess -import org.xtimms.etsudoku.utils.system.exists -import org.xtimms.etsudoku.utils.system.isPowerSaveMode -import org.xtimms.etsudoku.utils.system.isTargetNotEmpty -import org.xtimms.etsudoku.utils.system.ramAvailable +import org.xtimms.shirizu.core.cache.PagesCache +import org.xtimms.shirizu.core.network.CommonHeaders +import org.xtimms.shirizu.core.network.MangaHttpClient +import org.xtimms.shirizu.core.network.interceptors.ImageProxyInterceptor +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.RemoteMangaRepository +import org.xtimms.shirizu.core.parser.local.isFileUri +import org.xtimms.shirizu.core.parser.local.isZipUri +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.sections.reader.pager.ReaderPage +import org.xtimms.shirizu.utils.FileSize +import org.xtimms.shirizu.utils.RetainedLifecycleCoroutineScope +import org.xtimms.shirizu.utils.lang.getCompletionResultOrNull +import org.xtimms.shirizu.utils.lang.withProgress +import org.xtimms.shirizu.utils.progress.ProgressDeferred +import org.xtimms.shirizu.utils.system.URI_SCHEME_ZIP +import org.xtimms.shirizu.utils.system.compressToPNG +import org.xtimms.shirizu.utils.system.ensureRamAtLeast +import org.xtimms.shirizu.utils.system.ensureSuccess +import org.xtimms.shirizu.utils.system.exists +import org.xtimms.shirizu.utils.system.isPowerSaveMode +import org.xtimms.shirizu.utils.system.isTargetNotEmpty +import org.xtimms.shirizu.utils.system.ramAvailable import java.util.LinkedList import java.util.concurrent.atomic.AtomicInteger import java.util.zip.ZipFile diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/pager/ReaderPage.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/pager/ReaderPage.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/pager/ReaderPage.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/pager/ReaderPage.kt index 3c86003..351e452 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/pager/ReaderPage.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/pager/ReaderPage.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.reader.pager +package org.xtimms.shirizu.sections.reader.pager import android.os.Parcelable import kotlinx.parcelize.Parcelize diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/reader/thumbnails/MangaPageFetcher.kt b/app/src/main/java/org/xtimms/shirizu/sections/reader/thumbnails/MangaPageFetcher.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/sections/reader/thumbnails/MangaPageFetcher.kt rename to app/src/main/java/org/xtimms/shirizu/sections/reader/thumbnails/MangaPageFetcher.kt index d6bf375..63dacc5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/reader/thumbnails/MangaPageFetcher.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/reader/thumbnails/MangaPageFetcher.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.reader.thumbnails +package org.xtimms.shirizu.sections.reader.thumbnails import android.content.Context import android.webkit.MimeTypeMap @@ -21,14 +21,14 @@ import okio.buffer import okio.source import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.util.mimeType -import org.xtimms.etsudoku.core.cache.PagesCache -import org.xtimms.etsudoku.core.network.MangaHttpClient -import org.xtimms.etsudoku.core.network.interceptors.ImageProxyInterceptor -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.core.parser.local.isFileUri -import org.xtimms.etsudoku.core.parser.local.isZipUri -import org.xtimms.etsudoku.sections.reader.domain.PageLoader -import org.xtimms.etsudoku.utils.withExtraCloseable +import org.xtimms.shirizu.core.cache.PagesCache +import org.xtimms.shirizu.core.network.MangaHttpClient +import org.xtimms.shirizu.core.network.interceptors.ImageProxyInterceptor +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.core.parser.local.isFileUri +import org.xtimms.shirizu.core.parser.local.isZipUri +import org.xtimms.shirizu.sections.reader.domain.PageLoader +import org.xtimms.shirizu.utils.withExtraCloseable import java.util.zip.ZipFile import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/search/SearchView.kt b/app/src/main/java/org/xtimms/shirizu/sections/search/SearchView.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/search/SearchView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/search/SearchView.kt index a8c9f32..ba763f6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/search/SearchView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/search/SearchView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.search +package org.xtimms.shirizu.sections.search import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -32,10 +32,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.BackIconButton -import org.xtimms.etsudoku.core.screens.EmptyScreen -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.BackIconButton +import org.xtimms.shirizu.core.screens.EmptyScreen +import org.xtimms.shirizu.ui.theme.ShirizuTheme const val SEARCH_DESTINATION = "search" @@ -114,7 +114,7 @@ fun SearchView( @Preview(showBackground = true) @Composable fun SearchPreview() { - EtsudokuTheme { + ShirizuTheme { SearchHostView( isCompactScreen = true, padding = PaddingValues(), diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsView.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsView.kt index 1c77791..5e4cf0c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings +package org.xtimms.shirizu.sections.settings import android.annotation.SuppressLint import android.content.Context @@ -40,11 +40,11 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferencesHintCard -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.components.SettingItem -import org.xtimms.etsudoku.utils.FileSize +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferencesHintCard +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.components.SettingItem +import org.xtimms.shirizu.utils.FileSize const val SETTINGS_DESTINATION = "settings" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsViewModel.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsViewModel.kt index 8f88e06..73727e7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/SettingsViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/SettingsViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings +package org.xtimms.shirizu.sections.settings import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -12,11 +12,11 @@ import kotlinx.coroutines.flow.update import kotlinx.coroutines.plus import kotlinx.coroutines.runInterruptible import okhttp3.Cache -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.data.LocalStorageManager -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.sections.settings.sources.SourcesSettingsViewModel +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.data.LocalStorageManager +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.sections.settings.sources.SourcesSettingsViewModel import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/AboutView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/AboutView.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/about/AboutView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/about/AboutView.kt index 8039797..421ba8f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/AboutView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/AboutView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.about +package org.xtimms.shirizu.sections.settings.about import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -24,20 +24,20 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString -import org.xtimms.etsudoku.App -import org.xtimms.etsudoku.App.Companion.packageInfo -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSwitchWithDivider -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AUTO_UPDATE -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.utils.system.toast +import org.xtimms.shirizu.App +import org.xtimms.shirizu.App.Companion.packageInfo +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSwitchWithDivider +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AUTO_UPDATE +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.utils.system.toast const val ABOUT_DESTINATION = "about" -private const val repoUrl = "https://git.kotatsu.app/Xtimms/Etsudoku" -const val weblate = "https://hosted.weblate.org/engage/etsudoku/" +private const val repoUrl = "https://git.kotatsu.app/Xtimms/Shirizu" +const val weblate = "https://hosted.weblate.org/engage/shirizu/" @Composable fun AboutView( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/LicenseView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/LicenseView.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/about/LicenseView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/about/LicenseView.kt index ace8a08..995480e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/LicenseView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/LicenseView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.about +package org.xtimms.shirizu.sections.settings.about import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -15,7 +15,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.core.text.HtmlCompat import com.google.android.material.textview.MaterialTextView -import org.xtimms.etsudoku.core.components.ScaffoldWithClassicTopAppBar +import org.xtimms.shirizu.core.components.ScaffoldWithClassicTopAppBar const val LICENSE_NAME_ARGUMENT = "{name}" const val LICENSE_WEBSITE_ARGUMENT = "{website}" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/OpenSourceLicensesView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/OpenSourceLicensesView.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/about/OpenSourceLicensesView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/about/OpenSourceLicensesView.kt index 68e063d..fd5bc1a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/OpenSourceLicensesView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/OpenSourceLicensesView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.about +package org.xtimms.shirizu.sections.settings.about import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable @@ -6,8 +6,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer import com.mikepenz.aboutlibraries.ui.compose.m3.util.htmlReadyLicenseContent -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ScaffoldWithClassicTopAppBar +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ScaffoldWithClassicTopAppBar const val LICENSES_DESTINATION = "licenses" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/UpdateView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/UpdateView.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/about/UpdateView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/about/UpdateView.kt index 37a18d5..c85ee70 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/about/UpdateView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/about/UpdateView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.about +package org.xtimms.shirizu.sections.settings.about import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -34,23 +34,23 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceInfo -import org.xtimms.etsudoku.core.components.PreferenceSingleChoiceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitchWithContainer -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AUTO_UPDATE -import org.xtimms.etsudoku.core.prefs.AppSettings.updateBoolean -import org.xtimms.etsudoku.core.prefs.AppSettings.updateInt -import org.xtimms.etsudoku.core.prefs.PRE_RELEASE -import org.xtimms.etsudoku.core.prefs.STABLE -import org.xtimms.etsudoku.core.prefs.UPDATE_CHANNEL -import org.xtimms.etsudoku.core.screens.UpdateDialog -import org.xtimms.etsudoku.core.updates.Updater -import org.xtimms.etsudoku.utils.lang.booleanState -import org.xtimms.etsudoku.utils.lang.intState -import org.xtimms.etsudoku.utils.system.suspendToast +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceInfo +import org.xtimms.shirizu.core.components.PreferenceSingleChoiceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitchWithContainer +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AUTO_UPDATE +import org.xtimms.shirizu.core.prefs.AppSettings.updateBoolean +import org.xtimms.shirizu.core.prefs.AppSettings.updateInt +import org.xtimms.shirizu.core.prefs.PRE_RELEASE +import org.xtimms.shirizu.core.prefs.STABLE +import org.xtimms.shirizu.core.prefs.UPDATE_CHANNEL +import org.xtimms.shirizu.core.screens.UpdateDialog +import org.xtimms.shirizu.core.updates.Updater +import org.xtimms.shirizu.utils.lang.booleanState +import org.xtimms.shirizu.utils.lang.intState +import org.xtimms.shirizu.utils.system.suspendToast const val UPDATES_DESTINATION = "updates" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/advanced/AdvancedView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/advanced/AdvancedView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/advanced/AdvancedView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/advanced/AdvancedView.kt index eec7769..7c36a4c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/advanced/AdvancedView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/advanced/AdvancedView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.advanced +package org.xtimms.shirizu.sections.settings.advanced import android.os.Build import androidx.compose.foundation.layout.PaddingValues @@ -25,21 +25,21 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.profileinstaller.ProfileVerifier import kotlinx.coroutines.guava.await -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.logs.FileLogger -import org.xtimms.etsudoku.core.prefs.ACRA -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.LOGGING -import org.xtimms.etsudoku.utils.DeviceUtil -import org.xtimms.etsudoku.utils.ShareHelper -import org.xtimms.etsudoku.utils.WebViewUtil -import org.xtimms.etsudoku.utils.lang.toDateTimestampString -import org.xtimms.etsudoku.utils.system.toast +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.logs.FileLogger +import org.xtimms.shirizu.core.prefs.ACRA +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.LOGGING +import org.xtimms.shirizu.utils.DeviceUtil +import org.xtimms.shirizu.utils.ShareHelper +import org.xtimms.shirizu.utils.WebViewUtil +import org.xtimms.shirizu.utils.lang.toDateTimestampString +import org.xtimms.shirizu.utils.system.toast import java.text.DateFormat import java.text.SimpleDateFormat import java.util.Locale diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/AppearanceView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/AppearanceView.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/AppearanceView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/AppearanceView.kt index d9021af..893a1b3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/AppearanceView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/AppearanceView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.appearance +package org.xtimms.shirizu.sections.settings.appearance import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateDpAsState @@ -59,34 +59,34 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import com.google.accompanist.pager.HorizontalPagerIndicator import com.google.android.material.color.DynamicColors -import org.xtimms.etsudoku.LocalDarkTheme -import org.xtimms.etsudoku.LocalDynamicColorSwitch -import org.xtimms.etsudoku.LocalPaletteStyleIndex -import org.xtimms.etsudoku.LocalSeedColor -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.PreferenceSwitchWithDivider -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.DarkThemePreference.Companion.OFF -import org.xtimms.etsudoku.core.prefs.DarkThemePreference.Companion.ON -import org.xtimms.etsudoku.core.prefs.READING_TIME -import org.xtimms.etsudoku.core.prefs.STYLE_MONOCHROME -import org.xtimms.etsudoku.core.prefs.STYLE_TONAL_SPOT -import org.xtimms.etsudoku.core.prefs.paletteStyles -import org.xtimms.etsudoku.sections.stats.Size -import org.xtimms.etsudoku.ui.harmonize.hct.Hct -import org.xtimms.etsudoku.ui.monet.LocalTonalPalettes -import org.xtimms.etsudoku.ui.monet.PaletteStyle -import org.xtimms.etsudoku.ui.monet.TonalPalettes -import org.xtimms.etsudoku.ui.monet.TonalPalettes.Companion.toTonalPalettes -import org.xtimms.etsudoku.ui.monet.a1 -import org.xtimms.etsudoku.ui.monet.a2 -import org.xtimms.etsudoku.ui.monet.a3 -import org.xtimms.etsudoku.utils.material.combineColors -import org.xtimms.etsudoku.utils.system.toDisplayName +import org.xtimms.shirizu.LocalDarkTheme +import org.xtimms.shirizu.LocalDynamicColorSwitch +import org.xtimms.shirizu.LocalPaletteStyleIndex +import org.xtimms.shirizu.LocalSeedColor +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.PreferenceSwitchWithDivider +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.DarkThemePreference.Companion.OFF +import org.xtimms.shirizu.core.prefs.DarkThemePreference.Companion.ON +import org.xtimms.shirizu.core.prefs.READING_TIME +import org.xtimms.shirizu.core.prefs.STYLE_MONOCHROME +import org.xtimms.shirizu.core.prefs.STYLE_TONAL_SPOT +import org.xtimms.shirizu.core.prefs.paletteStyles +import org.xtimms.shirizu.sections.stats.Size +import org.xtimms.shirizu.ui.harmonize.hct.Hct +import org.xtimms.shirizu.ui.monet.LocalTonalPalettes +import org.xtimms.shirizu.ui.monet.PaletteStyle +import org.xtimms.shirizu.ui.monet.TonalPalettes +import org.xtimms.shirizu.ui.monet.TonalPalettes.Companion.toTonalPalettes +import org.xtimms.shirizu.ui.monet.a1 +import org.xtimms.shirizu.ui.monet.a2 +import org.xtimms.shirizu.ui.monet.a3 +import org.xtimms.shirizu.utils.material.combineColors +import org.xtimms.shirizu.utils.system.toDisplayName import java.util.Locale const val APPEARANCE_DESTINATION = "appearance" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/DarkThemeView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/DarkThemeView.kt similarity index 80% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/DarkThemeView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/DarkThemeView.kt index 241472f..e2e47ec 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/DarkThemeView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/DarkThemeView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.appearance +package org.xtimms.shirizu.sections.settings.appearance import android.os.Build import androidx.compose.foundation.layout.PaddingValues @@ -12,16 +12,16 @@ import androidx.compose.material.icons.outlined.Contrast import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import org.xtimms.etsudoku.LocalDarkTheme -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceSingleChoiceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.DarkThemePreference.Companion.FOLLOW_SYSTEM -import org.xtimms.etsudoku.core.prefs.DarkThemePreference.Companion.OFF -import org.xtimms.etsudoku.core.prefs.DarkThemePreference.Companion.ON +import org.xtimms.shirizu.LocalDarkTheme +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceSingleChoiceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.DarkThemePreference.Companion.FOLLOW_SYSTEM +import org.xtimms.shirizu.core.prefs.DarkThemePreference.Companion.OFF +import org.xtimms.shirizu.core.prefs.DarkThemePreference.Companion.ON const val DARK_THEME_DESTINATION = "dark_theme" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/LanguagesView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/LanguagesView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/LanguagesView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/LanguagesView.kt index 6aea2d3..4857ca3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/appearance/LanguagesView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/appearance/LanguagesView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.appearance +package org.xtimms.shirizu.sections.settings.appearance import android.content.Intent import android.content.pm.PackageManager @@ -38,16 +38,16 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceSingleChoiceItem -import org.xtimms.etsudoku.core.components.PreferencesHintCard -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.sections.settings.about.weblate -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.system.LocaleLanguageCodeMap -import org.xtimms.etsudoku.utils.system.setLanguage -import org.xtimms.etsudoku.utils.system.toDisplayName +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceSingleChoiceItem +import org.xtimms.shirizu.core.components.PreferencesHintCard +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.sections.settings.about.weblate +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.system.LocaleLanguageCodeMap +import org.xtimms.shirizu.utils.system.setLanguage +import org.xtimms.shirizu.utils.system.toDisplayName import java.util.Locale const val LANGUAGES_DESTINATION = "languages" @@ -186,7 +186,7 @@ private fun LanguagePagePreview() { mutableStateOf(Locale.KOREAN) } val map = setOf(Locale.forLanguageTag("ru")) - EtsudokuTheme { + ShirizuTheme { LanguageViewImpl( localeSet = map, isSystemLocaleSettingsAvailable = true, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgent.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgent.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgent.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgent.kt index 1e43817..6dc7dea 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/AppBackupAgent.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/AppBackupAgent.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.app.backup.BackupAgent import android.app.backup.BackupDataInput @@ -8,11 +8,11 @@ import android.content.Context import android.os.ParcelFileDescriptor import androidx.annotation.VisibleForTesting import kotlinx.coroutines.runBlocking -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.data.repository.backup.BackupEntry -import org.xtimms.etsudoku.data.repository.backup.BackupRepository -import org.xtimms.etsudoku.data.repository.backup.BackupZipInput -import org.xtimms.etsudoku.data.repository.backup.BackupZipOutput +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.data.repository.backup.BackupEntry +import org.xtimms.shirizu.data.repository.backup.BackupRepository +import org.xtimms.shirizu.data.repository.backup.BackupZipInput +import org.xtimms.shirizu.data.repository.backup.BackupZipOutput import java.io.File import java.io.FileDescriptor import java.io.FileInputStream @@ -36,7 +36,7 @@ class AppBackupAgent : BackupAgent() { override fun onFullBackup(data: FullBackupDataOutput) { super.onFullBackup(data) val file = - createBackupFile(this, BackupRepository(EtsudokuDatabase(applicationContext))) + createBackupFile(this, BackupRepository(ShirizuDatabase(applicationContext))) try { fullBackupFile(file, data) } finally { @@ -56,7 +56,7 @@ class AppBackupAgent : BackupAgent() { restoreBackupFile( data.fileDescriptor, size, - BackupRepository(EtsudokuDatabase(applicationContext)), + BackupRepository(ShirizuDatabase(applicationContext)), ) destination.delete() } else { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupEntryModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupEntryModel.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupEntryModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupEntryModel.kt index a9b298f..b364765 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupEntryModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupEntryModel.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import androidx.annotation.StringRes -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.model.ListModel -import org.xtimms.etsudoku.data.repository.backup.BackupEntry +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.model.ListModel +import org.xtimms.shirizu.data.repository.backup.BackupEntry data class BackupEntryModel( val name: BackupEntry.Name, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupItem.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupItem.kt index 81f28c5..caec30a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable @@ -16,9 +16,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.core.components.PreferenceItemDescription -import org.xtimms.etsudoku.core.components.PreferenceItemTitle -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.core.components.PreferenceItemDescription +import org.xtimms.shirizu.core.components.PreferenceItemTitle +import org.xtimms.shirizu.ui.theme.ShirizuTheme @OptIn(ExperimentalFoundationApi::class) @Composable @@ -59,7 +59,7 @@ fun BackupItem( @Preview @Composable fun BackupItemPreview() { - EtsudokuTheme { + ShirizuTheme { BackupItem(title = "Title") } } \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupObserver.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupObserver.kt similarity index 71% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupObserver.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupObserver.kt index 6551af4..e917b65 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupObserver.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupObserver.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.app.backup.BackupManager import android.content.Context import androidx.room.InvalidationTracker import dagger.hilt.android.qualifiers.ApplicationContext -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITES -import org.xtimms.etsudoku.core.database.TABLE_FAVOURITE_CATEGORIES -import org.xtimms.etsudoku.core.database.TABLE_HISTORY +import org.xtimms.shirizu.core.database.TABLE_FAVOURITES +import org.xtimms.shirizu.core.database.TABLE_FAVOURITE_CATEGORIES +import org.xtimms.shirizu.core.database.TABLE_HISTORY import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupRestoreView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupRestoreView.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupRestoreView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupRestoreView.kt index 9798684..d4be39e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupRestoreView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupRestoreView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.content.Context import android.content.Intent @@ -35,16 +35,16 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceInfo -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitchWithContainer -import org.xtimms.etsudoku.core.components.PreferencesHintCard -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.components.icons.Kotatsu -import org.xtimms.etsudoku.utils.system.toast -import org.xtimms.etsudoku.utils.system.tryLaunch +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceInfo +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitchWithContainer +import org.xtimms.shirizu.core.components.PreferencesHintCard +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.components.icons.Kotatsu +import org.xtimms.shirizu.utils.system.toast +import org.xtimms.shirizu.utils.system.tryLaunch import java.io.File import java.io.FileOutputStream diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupViewModel.kt similarity index 78% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupViewModel.kt index fa90e1c..1bb66da 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/BackupViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/BackupViewModel.kt @@ -1,14 +1,14 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.content.Context import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.MutableStateFlow -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.backup.BackupRepository -import org.xtimms.etsudoku.data.repository.backup.BackupZipOutput -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.backup.BackupRepository +import org.xtimms.shirizu.data.repository.backup.BackupZipOutput +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call import java.io.File import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/PeriodicalBackupWorker.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/PeriodicalBackupWorker.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/PeriodicalBackupWorker.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/PeriodicalBackupWorker.kt index 13e86dc..7c21b20 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/PeriodicalBackupWorker.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/PeriodicalBackupWorker.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.content.Context import android.os.Build @@ -16,11 +16,11 @@ import androidx.work.workDataOf import dagger.Reusable import dagger.assisted.Assisted import dagger.assisted.AssistedInject -import org.xtimms.etsudoku.data.repository.backup.BackupRepository -import org.xtimms.etsudoku.data.repository.backup.BackupZipOutput -import org.xtimms.etsudoku.utils.lang.awaitUniqueWorkInfoByName -import org.xtimms.etsudoku.utils.system.deleteAwait -import org.xtimms.etsudoku.work.PeriodicWorkScheduler +import org.xtimms.shirizu.data.repository.backup.BackupRepository +import org.xtimms.shirizu.data.repository.backup.BackupZipOutput +import org.xtimms.shirizu.utils.lang.awaitUniqueWorkInfoByName +import org.xtimms.shirizu.utils.system.deleteAwait +import org.xtimms.shirizu.work.PeriodicWorkScheduler import java.util.Date import java.util.concurrent.TimeUnit import javax.inject.Inject diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreItemsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreItemsView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreItemsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreItemsView.kt index e6abe91..22db5fa 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreItemsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreItemsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues @@ -24,11 +24,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferencesHintCard -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.sections.settings.about.ProgressIndicatorButton -import org.xtimms.etsudoku.utils.DeviceUtil +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferencesHintCard +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.sections.settings.about.ProgressIndicatorButton +import org.xtimms.shirizu.utils.DeviceUtil const val RESTORE_ARGUMENT = "{file}" const val RESTORE_DESTINATION = "restore/?file=${RESTORE_ARGUMENT}" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreViewModel.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreViewModel.kt index e9419c1..0daba21 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/backup/RestoreViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/backup/RestoreViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.backup +package org.xtimms.shirizu.sections.settings.backup import android.content.Context import android.net.Uri @@ -9,14 +9,14 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.runInterruptible import org.koitharu.kotatsu.parsers.util.SuspendLazy -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.backup.BackupEntry -import org.xtimms.etsudoku.data.repository.backup.BackupRepository -import org.xtimms.etsudoku.data.repository.backup.BackupZipInput -import org.xtimms.etsudoku.data.repository.backup.CompositeResult -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call -import org.xtimms.etsudoku.utils.system.toUriOrNull +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.backup.BackupEntry +import org.xtimms.shirizu.data.repository.backup.BackupRepository +import org.xtimms.shirizu.data.repository.backup.BackupZipInput +import org.xtimms.shirizu.data.repository.backup.CompositeResult +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call +import org.xtimms.shirizu.utils.system.toUriOrNull import java.io.File import java.io.FileNotFoundException import java.util.Date diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/network/NetworkView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/network/NetworkView.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/network/NetworkView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/network/NetworkView.kt index e08d50b..b1e3e81 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/network/NetworkView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/network/NetworkView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.network +package org.xtimms.shirizu.sections.settings.network import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -17,14 +17,14 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.components.icons.ArrowDecisionOutline -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.SSL_BYPASS -import org.xtimms.etsudoku.core.prefs.WSRV +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.components.icons.ArrowDecisionOutline +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.SSL_BYPASS +import org.xtimms.shirizu.core.prefs.WSRV const val NETWORK_DESTINATION = "network" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/ShelfSettingsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/ShelfSettingsView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/ShelfSettingsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/ShelfSettingsView.kt index 42d8e1b..ccd4012 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/ShelfSettingsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/ShelfSettingsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.shelf +package org.xtimms.shirizu.sections.settings.shelf import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column @@ -34,15 +34,15 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSubtitle -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.GRID_COLUMNS -import org.xtimms.etsudoku.core.prefs.TABS_MANGA_COUNT -import org.xtimms.etsudoku.sections.shelf.ShelfViewModel +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSubtitle +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.GRID_COLUMNS +import org.xtimms.shirizu.core.prefs.TABS_MANGA_COUNT +import org.xtimms.shirizu.sections.shelf.ShelfViewModel const val SHELF_SETTINGS_DESTINATION = "shelf_settings" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/AddCategoryDialog.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/AddCategoryDialog.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/AddCategoryDialog.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/AddCategoryDialog.kt index 51c5779..d66fd7a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/AddCategoryDialog.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/AddCategoryDialog.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.shelf.categories +package org.xtimms.shirizu.sections.settings.shelf.categories import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -14,9 +14,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ConfirmButton -import org.xtimms.etsudoku.core.components.DismissButton +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ConfirmButton +import org.xtimms.shirizu.core.components.DismissButton @Composable fun AddCategoryDialog(onDismissRequest: () -> Unit) { diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoriesView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoriesView.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoriesView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoriesView.kt index db920c8..0e6c28b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoriesView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoriesView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.shelf.categories +package org.xtimms.shirizu.sections.settings.shelf.categories import androidx.compose.animation.core.Spring import androidx.compose.animation.core.VisibilityThreshold @@ -26,10 +26,10 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ScaffoldWithClassicTopAppBar -import org.xtimms.etsudoku.sections.shelf.ShelfViewModel -import org.xtimms.etsudoku.utils.system.plus +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ScaffoldWithClassicTopAppBar +import org.xtimms.shirizu.sections.shelf.ShelfViewModel +import org.xtimms.shirizu.utils.system.plus const val CATEGORIES_DESTINATION = "categories" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoryListItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoryListItem.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoryListItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoryListItem.kt index 9771342..54036c0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/CategoryListItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/CategoryListItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.shelf.categories +package org.xtimms.shirizu.sections.settings.shelf.categories import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Row @@ -22,8 +22,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.sections.shelf.FavouriteTabModel +import org.xtimms.shirizu.R +import org.xtimms.shirizu.sections.shelf.FavouriteTabModel @Composable fun CategoryListItem( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/interactor/ReorderCategory.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/interactor/ReorderCategory.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/interactor/ReorderCategory.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/interactor/ReorderCategory.kt index 33b21f2..70c9579 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/shelf/categories/interactor/ReorderCategory.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/shelf/categories/interactor/ReorderCategory.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.shelf.categories.interactor +package org.xtimms.shirizu.sections.settings.shelf.categories.interactor import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.SharingStarted @@ -7,10 +7,10 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import org.xtimms.etsudoku.core.model.FavouriteCategory -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.utils.lang.processLifecycleScope -import org.xtimms.etsudoku.utils.lang.withNonCancellableContext +import org.xtimms.shirizu.core.model.FavouriteCategory +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.lang.withNonCancellableContext import java.util.Collections class ReorderCategory( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsView.kt index 683808e..273618b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources +package org.xtimms.shirizu.sections.settings.sources import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -21,12 +21,12 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.PreferenceItem -import org.xtimms.etsudoku.core.components.PreferenceSwitch -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.prefs.NSFW +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.PreferenceItem +import org.xtimms.shirizu.core.components.PreferenceSwitch +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.prefs.NSFW const val SOURCES_DESTINATION = "sources" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsViewModel.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsViewModel.kt index 1b5266a..5ffdf6d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/SourcesSettingsViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/SourcesSettingsViewModel.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.sections.settings.sources +package org.xtimms.shirizu.sections.settings.sources import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.MangaSourcesRepository import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItem.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItem.kt index 132d101..d96289c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth @@ -14,8 +14,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.AsyncImageImpl -import org.xtimms.etsudoku.core.parser.favicon.faviconUri +import org.xtimms.shirizu.core.AsyncImageImpl +import org.xtimms.shirizu.core.parser.favicon.faviconUri @Composable fun SourceCatalogItem( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItemModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItemModel.kt similarity index 78% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItemModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItemModel.kt index e99e97c..a0ccae8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogItemModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogItemModel.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.annotation.StringRes import androidx.compose.ui.graphics.vector.ImageVector import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class SourceCatalogItemModel( val source: MangaSource, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogPage.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogPage.kt similarity index 73% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogPage.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogPage.kt index 1c961b5..759d9f2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourceCatalogPage.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourceCatalogPage.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import org.koitharu.kotatsu.parsers.model.ContentType -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class SourceCatalogPage( val type: ContentType, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogListProducer.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogListProducer.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogListProducer.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogListProducer.kt index 0d6c837..f61ebe4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogListProducer.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogListProducer.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.SearchOff @@ -14,19 +14,19 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import org.koitharu.kotatsu.parsers.model.ContentType -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.database.TABLE_SOURCES -import org.xtimms.etsudoku.core.database.EtsudokuDatabase -import org.xtimms.etsudoku.core.database.removeObserverAsync -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.utils.lang.lifecycleScope +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.database.TABLE_SOURCES +import org.xtimms.shirizu.core.database.ShirizuDatabase +import org.xtimms.shirizu.core.database.removeObserverAsync +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.utils.lang.lifecycleScope class SourcesCatalogListProducer @AssistedInject constructor( @Assisted private val locale: String?, @Assisted private val contentType: ContentType, @Assisted lifecycle: ViewModelLifecycle, private val repository: MangaSourcesRepository, - private val database: EtsudokuDatabase, + private val database: ShirizuDatabase, ) : InvalidationTracker.Observer(TABLE_SOURCES), RetainedLifecycle.OnClearedListener { private val scope = lifecycle.lifecycleScope diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogPager.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogPager.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogPager.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogPager.kt index 6d8eae5..3ec825f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogPager.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogPager.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -19,13 +19,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastAny import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.MangaGridItem -import org.xtimms.etsudoku.core.screens.EmptyScreen -import org.xtimms.etsudoku.sections.shelf.LazyShelfGrid -import org.xtimms.etsudoku.sections.shelf.ShelfGrid -import org.xtimms.etsudoku.sections.shelf.ShelfManga -import org.xtimms.etsudoku.utils.system.plus +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.MangaGridItem +import org.xtimms.shirizu.core.screens.EmptyScreen +import org.xtimms.shirizu.sections.shelf.LazyShelfGrid +import org.xtimms.shirizu.sections.shelf.ShelfGrid +import org.xtimms.shirizu.sections.shelf.ShelfManga +import org.xtimms.shirizu.utils.system.plus @Composable fun SourcesCatalogPager( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogTabs.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogTabs.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogTabs.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogTabs.kt index 5fe7405..36f0c79 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogTabs.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogTabs.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column @@ -15,8 +15,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaState -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.TabText +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.TabText @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogView.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogView.kt index dd6b84a..21594b4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column @@ -13,8 +13,8 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader import kotlinx.coroutines.launch -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ScaffoldWithClassicTopAppBar +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ScaffoldWithClassicTopAppBar const val CATALOG_DESTINATION = "catalog" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogViewModel.kt similarity index 87% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogViewModel.kt index d470e5a..ac221d3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/sources/catalog/SourcesCatalogViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/sources/catalog/SourcesCatalogViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.sources.catalog +package org.xtimms.shirizu.sections.settings.sources.catalog import androidx.annotation.MainThread import androidx.lifecycle.viewModelScope @@ -17,13 +17,13 @@ import kotlinx.coroutines.plus import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.mapToSet -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.utils.ReversibleAction -import org.xtimms.etsudoku.utils.lang.MutableEventFlow -import org.xtimms.etsudoku.utils.lang.call +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.utils.ReversibleAction +import org.xtimms.shirizu.utils.lang.MutableEventFlow +import org.xtimms.shirizu.utils.lang.call import java.util.EnumMap import java.util.EnumSet import java.util.Locale diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/CleanDialog.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/CleanDialog.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/CleanDialog.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/storage/CleanDialog.kt index 32f292d..9e89301 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/CleanDialog.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/CleanDialog.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.storage +package org.xtimms.shirizu.sections.settings.storage import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -22,12 +22,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.ConfirmButton -import org.xtimms.etsudoku.core.components.DialogCheckBoxItem -import org.xtimms.etsudoku.core.components.DismissButton -import org.xtimms.etsudoku.core.components.EtsudokuDialog -import org.xtimms.etsudoku.utils.FileSize +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.ConfirmButton +import org.xtimms.shirizu.core.components.DialogCheckBoxItem +import org.xtimms.shirizu.core.components.DismissButton +import org.xtimms.shirizu.core.components.ShirizuDialog +import org.xtimms.shirizu.utils.FileSize @Composable fun CleanDialog( @@ -51,7 +51,7 @@ fun CleanDialog( mutableStateOf(isNetworkCacheSelected) } - EtsudokuDialog( + ShirizuDialog( onDismissRequest = onDismissRequest, confirmButton = { ConfirmButton { diff --git a/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageEvent.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageEvent.kt new file mode 100644 index 0000000..f3c399a --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageEvent.kt @@ -0,0 +1,5 @@ +package org.xtimms.shirizu.sections.settings.storage + +import org.xtimms.shirizu.core.base.event.UiEvent + +interface StorageEvent : UiEvent \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageUiState.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageUiState.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageUiState.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageUiState.kt index 83971dd..809febc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageUiState.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageUiState.kt @@ -1,6 +1,6 @@ -package org.xtimms.etsudoku.sections.settings.storage +package org.xtimms.shirizu.sections.settings.storage -import org.xtimms.etsudoku.core.base.state.UiState +import org.xtimms.shirizu.core.base.state.UiState data class StorageUiState( val pagesCache: Long = -1L, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageView.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageView.kt similarity index 90% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageView.kt index 6bd4354..b6b8dca 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.storage +package org.xtimms.shirizu.sections.settings.storage import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.WindowInsets @@ -22,13 +22,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.core.components.PreferenceStorageHeader -import org.xtimms.etsudoku.core.components.PreferenceStorageItem -import org.xtimms.etsudoku.core.components.PreferencesHintCard -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar -import org.xtimms.etsudoku.data.CACHE_SIZE_MAX +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.core.components.PreferenceStorageHeader +import org.xtimms.shirizu.core.components.PreferenceStorageItem +import org.xtimms.shirizu.core.components.PreferencesHintCard +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.data.CACHE_SIZE_MAX const val STORAGE_DESTINATION = "storage" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageViewModel.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageViewModel.kt index 8a226a5..fa4fa21 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/settings/storage/StorageViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/settings/storage/StorageViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.settings.storage +package org.xtimms.shirizu.sections.settings.storage import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers @@ -7,9 +7,9 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.runInterruptible import okhttp3.Cache -import org.xtimms.etsudoku.core.base.viewmodel.BaseViewModel -import org.xtimms.etsudoku.core.cache.CacheDir -import org.xtimms.etsudoku.data.LocalStorageManager +import org.xtimms.shirizu.core.base.viewmodel.BaseViewModel +import org.xtimms.shirizu.core.cache.CacheDir +import org.xtimms.shirizu.data.LocalStorageManager import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteManga.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteManga.kt similarity index 62% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteManga.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteManga.kt index ea9b0fe..c5d469b 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteManga.kt @@ -1,13 +1,13 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.room.Embedded import androidx.room.Junction import androidx.room.Relation -import org.xtimms.etsudoku.core.database.entity.FavouriteCategoryEntity -import org.xtimms.etsudoku.core.database.entity.FavouriteEntity -import org.xtimms.etsudoku.core.database.entity.MangaEntity -import org.xtimms.etsudoku.core.database.entity.MangaTagsEntity -import org.xtimms.etsudoku.core.database.entity.TagEntity +import org.xtimms.shirizu.core.database.entity.FavouriteCategoryEntity +import org.xtimms.shirizu.core.database.entity.FavouriteEntity +import org.xtimms.shirizu.core.database.entity.MangaEntity +import org.xtimms.shirizu.core.database.entity.MangaTagsEntity +import org.xtimms.shirizu.core.database.entity.TagEntity class FavouriteManga( @Embedded val favourite: FavouriteEntity, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteTabModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteTabModel.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteTabModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteTabModel.kt index cd5e5d4..6634fbd 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/FavouriteTabModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/FavouriteTabModel.kt @@ -1,6 +1,6 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class FavouriteTabModel( val id: Long, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/LazyShelfGrid.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/LazyShelfGrid.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/LazyShelfGrid.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/LazyShelfGrid.kt index fef7aaa..a0da672 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/LazyShelfGrid.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/LazyShelfGrid.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues @@ -8,7 +8,7 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.utils.system.plus +import org.xtimms.shirizu.utils.system.plus @Composable internal fun LazyShelfGrid( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfGrid.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfGrid.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfGrid.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfGrid.kt index 742f344..b9597ad 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfGrid.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfGrid.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize @@ -7,7 +7,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.util.fastAny import coil.ImageLoader -import org.xtimms.etsudoku.core.components.MangaGridItem +import org.xtimms.shirizu.core.components.MangaGridItem @Composable internal fun ShelfGrid( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfItem.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfItem.kt similarity index 81% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfItem.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfItem.kt index 266fd2a..380c309 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfItem.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfItem.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf data class ShelfItem( val libraryManga: ShelfManga, diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfManga.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfManga.kt similarity index 74% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfManga.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfManga.kt index 02ef4b6..3572a5e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfManga.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfManga.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import org.koitharu.kotatsu.parsers.model.Manga diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfPager.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfPager.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfPager.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfPager.kt index 2a90a9e..55a1f7d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfPager.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfPager.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues @@ -15,10 +15,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import coil.ImageLoader -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.screens.EmptyScreen -import org.xtimms.etsudoku.utils.system.plus +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.screens.EmptyScreen +import org.xtimms.shirizu.utils.system.plus @Composable fun ShelfPager( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfTabs.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfTabs.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfTabs.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfTabs.kt index 42ed73a..068c6d2 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfTabs.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfTabs.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Column @@ -12,9 +12,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex -import org.xtimms.etsudoku.core.components.TabText -import org.xtimms.etsudoku.core.model.FavouriteCategory -import org.xtimms.etsudoku.core.prefs.AppSettings +import org.xtimms.shirizu.core.components.TabText +import org.xtimms.shirizu.core.model.FavouriteCategory +import org.xtimms.shirizu.core.prefs.AppSettings @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfView.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfView.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfView.kt index 9816190..16cc184 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.AnimationVector1D @@ -19,8 +19,8 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import org.xtimms.etsudoku.core.collapsable -import org.xtimms.etsudoku.core.components.PullRefresh +import org.xtimms.shirizu.core.collapsable +import org.xtimms.shirizu.core.components.PullRefresh import kotlin.time.Duration.Companion.seconds const val SHELF_DESTINATION = "shelf" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfViewModel.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfViewModel.kt index c3ff37f..a328efe 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/shelf/ShelfViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/shelf/ShelfViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.shelf +package org.xtimms.shirizu.sections.shelf import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -9,9 +9,9 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.utils.lang.mapItems +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.utils.lang.mapItems import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/ChaptersChart.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/ChaptersChart.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/ChaptersChart.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/ChaptersChart.kt index b355f96..367abdf 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/ChaptersChart.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/ChaptersChart.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats +package org.xtimms.shirizu.sections.stats import androidx.compose.foundation.Canvas import androidx.compose.foundation.isSystemInDarkTheme @@ -19,12 +19,12 @@ import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.ui.theme.colorMax -import org.xtimms.etsudoku.ui.theme.colorMin -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.material.combineColors -import org.xtimms.etsudoku.utils.material.harmonize -import org.xtimms.etsudoku.utils.material.toPalette +import org.xtimms.shirizu.ui.theme.colorMax +import org.xtimms.shirizu.ui.theme.colorMin +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.material.combineColors +import org.xtimms.shirizu.utils.material.harmonize +import org.xtimms.shirizu.utils.material.toPalette import kotlin.math.abs @Composable @@ -154,7 +154,7 @@ fun ChaptersChart( @Preview @Composable private fun PreviewChart() { - EtsudokuTheme { + ShirizuTheme { ChaptersChart( modifier = Modifier.size(100.dp), chapters = listOf( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/MinMaxReadCard.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/MinMaxReadCard.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/MinMaxReadCard.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/MinMaxReadCard.kt index 52bbcf5..bd25c17 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/MinMaxReadCard.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/MinMaxReadCard.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats +package org.xtimms.shirizu.sections.stats import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -21,12 +21,12 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.ui.theme.colorMax -import org.xtimms.etsudoku.ui.theme.colorMin -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.utils.material.combineColors -import org.xtimms.etsudoku.utils.material.harmonize -import org.xtimms.etsudoku.utils.material.toPalette +import org.xtimms.shirizu.ui.theme.colorMax +import org.xtimms.shirizu.ui.theme.colorMin +import org.xtimms.shirizu.R +import org.xtimms.shirizu.utils.material.combineColors +import org.xtimms.shirizu.utils.material.harmonize +import org.xtimms.shirizu.utils.material.toPalette @Composable fun MinMaxReadCard( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsCard.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/StatsCard.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsCard.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/StatsCard.kt index cb853a0..161ac0d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsCard.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/StatsCard.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats +package org.xtimms.shirizu.sections.stats import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.Box @@ -35,7 +35,7 @@ import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.TextUnitType import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme +import org.xtimms.shirizu.ui.theme.ShirizuTheme @Composable fun TimeCard( @@ -239,7 +239,7 @@ fun growByMiddleChildRowMeasurePolicy(localDensity: Density) = @Preview @Composable private fun TimeCardPreview() { - EtsudokuTheme { + ShirizuTheme { TimeCard( modifier = Modifier.height(IntrinsicSize.Min), ) @@ -249,7 +249,7 @@ private fun TimeCardPreview() { @Preview @Composable private fun StatsCardPreview() { - EtsudokuTheme { + ShirizuTheme { StatsCard( value = "value", label = "label" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/StatsView.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/StatsView.kt index f2be722..12b5c6f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/StatsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/StatsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats +package org.xtimms.shirizu.sections.stats import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateFloat @@ -50,12 +50,12 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource -import org.xtimms.etsudoku.LocalBottomSheetScrollState -import org.xtimms.etsudoku.LocalWindowInsets -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.sections.stats.categories.CategoriesChart -import org.xtimms.etsudoku.ui.theme.EtsudokuTheme -import org.xtimms.etsudoku.utils.material.combineColors +import org.xtimms.shirizu.LocalBottomSheetScrollState +import org.xtimms.shirizu.LocalWindowInsets +import org.xtimms.shirizu.R +import org.xtimms.shirizu.sections.stats.categories.CategoriesChart +import org.xtimms.shirizu.ui.theme.ShirizuTheme +import org.xtimms.shirizu.utils.material.combineColors data class Size(val width: Dp, val height: Dp) @@ -222,7 +222,7 @@ fun StatsView( @Preview @Composable private fun Preview() { - EtsudokuTheme { + ShirizuTheme { StatsView( navigateBack = { } ) diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/CategoriesChartCard.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/CategoriesChartCard.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/CategoriesChartCard.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/categories/CategoriesChartCard.kt index 5aaaf9a..b174cf5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/CategoriesChartCard.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/CategoriesChartCard.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats.categories +package org.xtimms.shirizu.sections.stats.categories import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Arrangement @@ -18,9 +18,9 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.utils.material.combineColors -import org.xtimms.etsudoku.utils.material.harmonizeWithColor -import org.xtimms.etsudoku.utils.material.toPalette +import org.xtimms.shirizu.utils.material.combineColors +import org.xtimms.shirizu.utils.material.harmonizeWithColor +import org.xtimms.shirizu.utils.material.toPalette var baseColors = listOf( Color(0xFFF86BAE), diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/DonutChart.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/DonutChart.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/DonutChart.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/categories/DonutChart.kt index f84bbe5..50719c0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/DonutChart.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/DonutChart.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats.categories +package org.xtimms.shirizu.sections.stats.categories import androidx.compose.foundation.Canvas import androidx.compose.foundation.layout.PaddingValues @@ -15,7 +15,7 @@ import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.core.model.ShelfCategory +import org.xtimms.shirizu.core.model.ShelfCategory @Composable fun DonutChart( diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/TagAmount.kt b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/TagAmount.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/TagAmount.kt rename to app/src/main/java/org/xtimms/shirizu/sections/stats/categories/TagAmount.kt index bc42e3d..7b2af54 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/stats/categories/TagAmount.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/stats/categories/TagAmount.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.stats.categories +package org.xtimms.shirizu.sections.stats.categories import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -16,7 +16,7 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import org.xtimms.etsudoku.utils.material.HarmonizedColorPalette +import org.xtimms.shirizu.utils.material.HarmonizedColorPalette import java.math.BigDecimal @Composable diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionMangaModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionMangaModel.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionMangaModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionMangaModel.kt index 904103c..01cebd9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionMangaModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionMangaModel.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.sections.suggestions +package org.xtimms.shirizu.sections.suggestions import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.model.ListModel +import org.xtimms.shirizu.core.model.ListModel data class SuggestionMangaModel( val manga: Manga diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsView.kt b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsView.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsView.kt rename to app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsView.kt index 70a9ca4..c055c61 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsView.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsView.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.suggestions +package org.xtimms.shirizu.sections.suggestions import androidx.compose.animation.core.Spring import androidx.compose.animation.core.VisibilityThreshold @@ -32,9 +32,9 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.components.MangaGridItem -import org.xtimms.etsudoku.core.components.ScaffoldWithTopAppBar +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.components.MangaGridItem +import org.xtimms.shirizu.core.components.ScaffoldWithTopAppBar const val SUGGESTIONS_DESTINATION = "suggestions" diff --git a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsViewModel.kt b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsViewModel.kt similarity index 75% rename from app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsViewModel.kt rename to app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsViewModel.kt index 72765ad..9576c64 100644 --- a/app/src/main/java/org/xtimms/etsudoku/sections/suggestions/SuggestionsViewModel.kt +++ b/app/src/main/java/org/xtimms/shirizu/sections/suggestions/SuggestionsViewModel.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.sections.suggestions +package org.xtimms.shirizu.sections.suggestions import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel @@ -9,11 +9,11 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.plus import org.koitharu.kotatsu.parsers.model.Manga -import org.xtimms.etsudoku.core.base.viewmodel.KotatsuBaseViewModel -import org.xtimms.etsudoku.data.repository.SuggestionRepository -import org.xtimms.etsudoku.sections.history.HistoryItemModel -import org.xtimms.etsudoku.utils.lang.mapItems -import org.xtimms.etsudoku.work.suggestions.SuggestionsWorker +import org.xtimms.shirizu.core.base.viewmodel.KotatsuBaseViewModel +import org.xtimms.shirizu.data.repository.SuggestionRepository +import org.xtimms.shirizu.sections.history.HistoryItemModel +import org.xtimms.shirizu.utils.lang.mapItems +import org.xtimms.shirizu.work.suggestions.SuggestionsWorker import javax.inject.Inject @HiltViewModel diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/blend/Blend.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/blend/Blend.java similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/blend/Blend.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/blend/Blend.java index af73375..c8a410c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/blend/Blend.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/blend/Blend.java @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.ui.harmonize.blend; +package org.xtimms.shirizu.ui.harmonize.blend; -import org.xtimms.etsudoku.ui.harmonize.hct.Cam16; -import org.xtimms.etsudoku.ui.harmonize.hct.Hct; -import org.xtimms.etsudoku.ui.harmonize.utils.ColorUtils; -import org.xtimms.etsudoku.ui.harmonize.utils.MathUtils; +import org.xtimms.shirizu.ui.harmonize.hct.Cam16; +import org.xtimms.shirizu.ui.harmonize.hct.Hct; +import org.xtimms.shirizu.ui.harmonize.utils.ColorUtils; +import org.xtimms.shirizu.ui.harmonize.utils.MathUtils; /** Functions for blending in HCT and CAM16. */ public class Blend { diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Cam16.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Cam16.java similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Cam16.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Cam16.java index 3f35279..07ee2d4 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Cam16.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Cam16.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.hct; +package org.xtimms.shirizu.ui.harmonize.hct; import static java.lang.Math.max; -import org.xtimms.etsudoku.ui.harmonize.utils.ColorUtils; +import org.xtimms.shirizu.ui.harmonize.utils.ColorUtils; /** * CAM16, a color appearance model. Colors are not just defined by their hex code, but rather, a hex diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/CamSolver.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/CamSolver.java similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/CamSolver.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/CamSolver.java index a318951..f4ba346 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/CamSolver.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/CamSolver.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.hct; +package org.xtimms.shirizu.ui.harmonize.hct; import static java.lang.Math.max; -import org.xtimms.etsudoku.ui.harmonize.utils.ColorUtils; -import org.xtimms.etsudoku.ui.harmonize.utils.MathUtils; +import org.xtimms.shirizu.ui.harmonize.utils.ColorUtils; +import org.xtimms.shirizu.ui.harmonize.utils.MathUtils; import java.util.ArrayList; diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Hct.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Hct.java similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Hct.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Hct.java index 8a5f603..a947de1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/Hct.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/Hct.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.hct; +package org.xtimms.shirizu.ui.harmonize.hct; /** * A color system built using CAM16 hue and chroma, and L* from L*a*b*. @@ -30,7 +30,7 @@ package org.xtimms.etsudoku.ui.harmonize.hct; * guarantees a contrast ratio >= 4.5. */ -import org.xtimms.etsudoku.ui.harmonize.utils.ColorUtils; +import org.xtimms.shirizu.ui.harmonize.utils.ColorUtils; /** * HCT, hue, chroma, and tone. A color system that provides a perceptually accurate color diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/ViewingConditions.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/ViewingConditions.java similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/ViewingConditions.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/ViewingConditions.java index 3581720..6bf7c8f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/hct/ViewingConditions.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/hct/ViewingConditions.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.hct; +package org.xtimms.shirizu.ui.harmonize.hct; -import org.xtimms.etsudoku.ui.harmonize.utils.ColorUtils; -import org.xtimms.etsudoku.ui.harmonize.utils.MathUtils; +import org.xtimms.shirizu.ui.harmonize.utils.ColorUtils; +import org.xtimms.shirizu.ui.harmonize.utils.MathUtils; /** * In traditional color spaces, a color can be identified solely by the observer's measurement of diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/CorePalette.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/CorePalette.java similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/CorePalette.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/CorePalette.java index 2779074..0ba456d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/CorePalette.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/CorePalette.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.palettes; +package org.xtimms.shirizu.ui.harmonize.palettes; import static java.lang.Math.max; import static java.lang.Math.min; -import org.xtimms.etsudoku.ui.harmonize.hct.Hct; +import org.xtimms.shirizu.ui.harmonize.hct.Hct; /** * An intermediate concept between the key color for a UI theme, and a full color scheme. 5 sets of diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/TonalPalette.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/TonalPalette.java similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/TonalPalette.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/TonalPalette.java index a0c60c0..1b2a835 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/palettes/TonalPalette.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/palettes/TonalPalette.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package org.xtimms.etsudoku.ui.harmonize.palettes; +package org.xtimms.shirizu.ui.harmonize.palettes; -import org.xtimms.etsudoku.ui.harmonize.hct.Hct; +import org.xtimms.shirizu.ui.harmonize.hct.Hct; import java.util.HashMap; import java.util.Map; diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/ColorUtils.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/ColorUtils.java similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/ColorUtils.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/ColorUtils.java index e741083..fd66da0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/ColorUtils.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/ColorUtils.java @@ -16,7 +16,7 @@ // This file is automatically generated. Do not modify it. -package org.xtimms.etsudoku.ui.harmonize.utils; +package org.xtimms.shirizu.ui.harmonize.utils; /** * Color science utilities. diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/MathUtils.java b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/MathUtils.java similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/MathUtils.java rename to app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/MathUtils.java index 31e2c93..94801e5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/harmonize/utils/MathUtils.java +++ b/app/src/main/java/org/xtimms/shirizu/ui/harmonize/utils/MathUtils.java @@ -16,7 +16,7 @@ // This file is automatically generated. Do not modify it. -package org.xtimms.etsudoku.ui.harmonize.utils; +package org.xtimms.shirizu.ui.harmonize.utils; /** Utility methods for mathematical operations. */ public class MathUtils { diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/monet/ColorSpec.kt b/app/src/main/java/org/xtimms/shirizu/ui/monet/ColorSpec.kt similarity index 75% rename from app/src/main/java/org/xtimms/etsudoku/ui/monet/ColorSpec.kt rename to app/src/main/java/org/xtimms/shirizu/ui/monet/ColorSpec.kt index 258d1fb..369e9a7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/monet/ColorSpec.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/monet/ColorSpec.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.ui.monet +package org.xtimms.shirizu.ui.monet data class ColorSpec( val chroma: (Double) -> Double = { it }, diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/monet/Monet.kt b/app/src/main/java/org/xtimms/shirizu/ui/monet/Monet.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/ui/monet/Monet.kt rename to app/src/main/java/org/xtimms/shirizu/ui/monet/Monet.kt index 232e096..4ff96b5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/monet/Monet.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/monet/Monet.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.ui.monet +package org.xtimms.shirizu.ui.monet import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.ColorScheme @@ -7,7 +7,7 @@ import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.graphics.Color -import org.xtimms.etsudoku.ui.monet.TonalPalettes.Companion.toTonalPalettes +import org.xtimms.shirizu.ui.monet.TonalPalettes.Companion.toTonalPalettes val LocalTonalPalettes = staticCompositionLocalOf { Color(0xFF1978D2).toTonalPalettes() diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/monet/PaletteStyle.kt b/app/src/main/java/org/xtimms/shirizu/ui/monet/PaletteStyle.kt similarity index 99% rename from app/src/main/java/org/xtimms/etsudoku/ui/monet/PaletteStyle.kt rename to app/src/main/java/org/xtimms/shirizu/ui/monet/PaletteStyle.kt index f1e8783..9d8be89 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/monet/PaletteStyle.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/monet/PaletteStyle.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.ui.monet +package org.xtimms.shirizu.ui.monet class PaletteStyle( val accent1Spec: ColorSpec, diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/monet/TonalPalettes.kt b/app/src/main/java/org/xtimms/shirizu/ui/monet/TonalPalettes.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/ui/monet/TonalPalettes.kt rename to app/src/main/java/org/xtimms/shirizu/ui/monet/TonalPalettes.kt index 0e6b31c..f53395a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/monet/TonalPalettes.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/monet/TonalPalettes.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.ui.monet +package org.xtimms.shirizu.ui.monet import androidx.compose.material3.ColorScheme import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import org.xtimms.etsudoku.ui.harmonize.hct.Hct +import org.xtimms.shirizu.ui.harmonize.hct.Hct typealias TonalPalette = Map diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Color.kt b/app/src/main/java/org/xtimms/shirizu/ui/theme/Color.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/ui/theme/Color.kt rename to app/src/main/java/org/xtimms/shirizu/ui/theme/Color.kt index 5a72903..3ed57e5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Color.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/theme/Color.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.ui.theme +package org.xtimms.shirizu.ui.theme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -import org.xtimms.etsudoku.ui.monet.a1 -import org.xtimms.etsudoku.ui.monet.a2 -import org.xtimms.etsudoku.ui.monet.a3 +import org.xtimms.shirizu.ui.monet.a1 +import org.xtimms.shirizu.ui.monet.a2 +import org.xtimms.shirizu.ui.monet.a3 val colorMin = Color(0xFF185ED6) val colorMax = Color(0xFFDD1414) diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Theme.kt b/app/src/main/java/org/xtimms/shirizu/ui/theme/Theme.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/ui/theme/Theme.kt rename to app/src/main/java/org/xtimms/shirizu/ui/theme/Theme.kt index b3febcf..f2002d1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Theme.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.ui.theme +package org.xtimms.shirizu.ui.theme import android.app.Activity import android.content.Context @@ -18,7 +18,7 @@ import androidx.compose.ui.text.style.TextDirection import androidx.core.view.WindowCompat import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.google.android.material.color.MaterialColors -import org.xtimms.etsudoku.ui.monet.dynamicColorScheme +import org.xtimms.shirizu.ui.monet.dynamicColorScheme fun Color.disabledIconOpacity(): Color { return this.copy(alpha = 0.38f) @@ -44,7 +44,7 @@ private tailrec fun Context.findWindow(): Window? = } @Composable -fun EtsudokuTheme( +fun ShirizuTheme( darkTheme: Boolean = isSystemInDarkTheme(), isHighContrastModeEnabled: Boolean = false, isDynamicColorEnabled: Boolean = false, diff --git a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Type.kt b/app/src/main/java/org/xtimms/shirizu/ui/theme/Type.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/ui/theme/Type.kt rename to app/src/main/java/org/xtimms/shirizu/ui/theme/Type.kt index 229dfa0..f66d4ee 100644 --- a/app/src/main/java/org/xtimms/etsudoku/ui/theme/Type.kt +++ b/app/src/main/java/org/xtimms/shirizu/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.ui.theme +package org.xtimms.shirizu.ui.theme import android.content.Context import androidx.compose.foundation.layout.Column @@ -114,7 +114,7 @@ fun FontCard(family: String, size: String, style: TextStyle) { @Preview @Composable fun PreviewTypography() { - EtsudokuTheme { + ShirizuTheme { Surface { Row { Column { diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/AlphanumComparator.kt b/app/src/main/java/org/xtimms/shirizu/utils/AlphanumComparator.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/AlphanumComparator.kt rename to app/src/main/java/org/xtimms/shirizu/utils/AlphanumComparator.kt index 7ffde60..848125a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/AlphanumComparator.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/AlphanumComparator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils class AlphanumComparator : Comparator { diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/CancellableSource.kt b/app/src/main/java/org/xtimms/shirizu/utils/CancellableSource.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/utils/CancellableSource.kt rename to app/src/main/java/org/xtimms/shirizu/utils/CancellableSource.kt index 9644e33..b231e79 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/CancellableSource.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/CancellableSource.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import kotlinx.coroutines.Job import kotlinx.coroutines.ensureActive diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/CoilImageGetter.kt b/app/src/main/java/org/xtimms/shirizu/utils/CoilImageGetter.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/CoilImageGetter.kt rename to app/src/main/java/org/xtimms/shirizu/utils/CoilImageGetter.kt index 454cb3d..ae80718 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/CoilImageGetter.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/CoilImageGetter.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context import android.graphics.drawable.Drawable diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex.kt b/app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex.kt rename to app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex.kt index 2cadd5b..eac7b19 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import androidx.collection.ArrayMap import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex2.kt b/app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex2.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex2.kt rename to app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex2.kt index 5f52111..f7e00ac 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/CompositeMutex2.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/CompositeMutex2.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import androidx.collection.ArrayMap import kotlinx.coroutines.sync.Mutex diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/CrashLogUtil.kt b/app/src/main/java/org/xtimms/shirizu/utils/CrashLogUtil.kt similarity index 72% rename from app/src/main/java/org/xtimms/etsudoku/utils/CrashLogUtil.kt rename to app/src/main/java/org/xtimms/shirizu/utils/CrashLogUtil.kt index aa1959b..fef0fc7 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/CrashLogUtil.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/CrashLogUtil.kt @@ -1,15 +1,15 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context import android.os.Build import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.utils.lang.withNonCancellableContext -import org.xtimms.etsudoku.utils.system.createFileInCacheDir -import org.xtimms.etsudoku.utils.system.getUriCompat -import org.xtimms.etsudoku.utils.system.toShareIntent -import org.xtimms.etsudoku.utils.system.toast +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.utils.lang.withNonCancellableContext +import org.xtimms.shirizu.utils.system.createFileInCacheDir +import org.xtimms.shirizu.utils.system.getUriCompat +import org.xtimms.shirizu.utils.system.toShareIntent +import org.xtimms.shirizu.utils.system.toast class CrashLogUtil( private val context: Context, @@ -17,7 +17,7 @@ class CrashLogUtil( suspend fun dumpLogs() = withNonCancellableContext { try { - val file = context.createFileInCacheDir("etsudoku_crash_logs.txt") + val file = context.createFileInCacheDir("shirizu_crash_logs.txt") file.appendText(getDebugInfo() + "\n\n") diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/DeviceUtil.kt b/app/src/main/java/org/xtimms/shirizu/utils/DeviceUtil.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/DeviceUtil.kt rename to app/src/main/java/org/xtimms/shirizu/utils/DeviceUtil.kt index 4704361..66bb157 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/DeviceUtil.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/DeviceUtil.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.annotation.SuppressLint import android.app.ActivityManager diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/DomainValidator.kt b/app/src/main/java/org/xtimms/shirizu/utils/DomainValidator.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/DomainValidator.kt rename to app/src/main/java/org/xtimms/shirizu/utils/DomainValidator.kt index be2506f..48783aa 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/DomainValidator.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/DomainValidator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context import android.text.Editable @@ -6,8 +6,8 @@ import android.text.TextWatcher import android.widget.EditText import androidx.annotation.CallSuper import okhttp3.HttpUrl -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.utils.system.getDisplayMessage +import org.xtimms.shirizu.R +import org.xtimms.shirizu.utils.system.getDisplayMessage import java.lang.ref.WeakReference class DomainValidator : EditTextValidator() { diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/Event.kt b/app/src/main/java/org/xtimms/shirizu/utils/Event.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/Event.kt rename to app/src/main/java/org/xtimms/shirizu/utils/Event.kt index 9c976a2..ee5c3f5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/Event.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/Event.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import kotlinx.coroutines.flow.FlowCollector diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ExtraCloseableSource.kt b/app/src/main/java/org/xtimms/shirizu/utils/ExtraCloseableSource.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/utils/ExtraCloseableSource.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ExtraCloseableSource.kt index 6e2993c..7170120 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ExtraCloseableSource.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ExtraCloseableSource.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import okhttp3.internal.closeQuietly import okio.Closeable diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/FileSequence.kt b/app/src/main/java/org/xtimms/shirizu/utils/FileSequence.kt similarity index 68% rename from app/src/main/java/org/xtimms/etsudoku/utils/FileSequence.kt rename to app/src/main/java/org/xtimms/shirizu/utils/FileSequence.kt index 522687a..22c2e81 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/FileSequence.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/FileSequence.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils -import org.xtimms.etsudoku.utils.iterator.CloseableIterator -import org.xtimms.etsudoku.utils.iterator.MappingIterator +import org.xtimms.shirizu.utils.iterator.CloseableIterator +import org.xtimms.shirizu.utils.iterator.MappingIterator import java.io.File import java.nio.file.Files import java.nio.file.Path diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/FileSize.kt b/app/src/main/java/org/xtimms/shirizu/utils/FileSize.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/FileSize.kt rename to app/src/main/java/org/xtimms/shirizu/utils/FileSize.kt index a7e681f..db261dc 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/FileSize.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/FileSize.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R import java.text.DecimalFormat import kotlin.math.log10 import kotlin.math.pow diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ImageFileFilter.kt b/app/src/main/java/org/xtimms/shirizu/utils/ImageFileFilter.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/utils/ImageFileFilter.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ImageFileFilter.kt index 2b406ef..998a052 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ImageFileFilter.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ImageFileFilter.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import java.io.File diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/MediatorStateFlow.kt b/app/src/main/java/org/xtimms/shirizu/utils/MediatorStateFlow.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/utils/MediatorStateFlow.kt rename to app/src/main/java/org/xtimms/shirizu/utils/MediatorStateFlow.kt index 4ecd415..3eda250 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/MediatorStateFlow.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/MediatorStateFlow.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/MetricAffectingSpan.kt b/app/src/main/java/org/xtimms/shirizu/utils/MetricAffectingSpan.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/MetricAffectingSpan.kt rename to app/src/main/java/org/xtimms/shirizu/utils/MetricAffectingSpan.kt index cdf3423..935ef78 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/MetricAffectingSpan.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/MetricAffectingSpan.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.graphics.Typeface import android.text.style.RelativeSizeSpan diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ProgressResponseBody.kt b/app/src/main/java/org/xtimms/shirizu/utils/ProgressResponseBody.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/utils/ProgressResponseBody.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ProgressResponseBody.kt index 80fdce7..3795ae3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ProgressResponseBody.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ProgressResponseBody.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import kotlinx.coroutines.flow.MutableStateFlow import okhttp3.MediaType diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/RetainedLifecycleCoroutineScope.kt b/app/src/main/java/org/xtimms/shirizu/utils/RetainedLifecycleCoroutineScope.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/utils/RetainedLifecycleCoroutineScope.kt rename to app/src/main/java/org/xtimms/shirizu/utils/RetainedLifecycleCoroutineScope.kt index a88ee61..e7f15ca 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/RetainedLifecycleCoroutineScope.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/RetainedLifecycleCoroutineScope.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import dagger.hilt.android.lifecycle.RetainedLifecycle import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ReversibleAction.kt b/app/src/main/java/org/xtimms/shirizu/utils/ReversibleAction.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/utils/ReversibleAction.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ReversibleAction.kt index 0d3aa1d..fad9332 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ReversibleAction.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ReversibleAction.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import androidx.annotation.StringRes diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ReversibleHandle.kt b/app/src/main/java/org/xtimms/shirizu/utils/ReversibleHandle.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/utils/ReversibleHandle.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ReversibleHandle.kt index 10c4685..128d4ec 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ReversibleHandle.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ReversibleHandle.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import kotlinx.coroutines.CoroutineStart import kotlinx.coroutines.Dispatchers @@ -7,7 +7,7 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.lang.processLifecycleScope fun interface ReversibleHandle { diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/ShareHelper.kt b/app/src/main/java/org/xtimms/shirizu/utils/ShareHelper.kt similarity index 86% rename from app/src/main/java/org/xtimms/etsudoku/utils/ShareHelper.kt rename to app/src/main/java/org/xtimms/shirizu/utils/ShareHelper.kt index 0fead58..2152cfe 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/ShareHelper.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/ShareHelper.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context import android.widget.Toast import androidx.core.app.ShareCompat import androidx.core.content.FileProvider -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.logs.FileLogger +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.logs.FileLogger private const val TYPE_TEXT = "text/plain" diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/StringArrayNavType.kt b/app/src/main/java/org/xtimms/shirizu/utils/StringArrayNavType.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/utils/StringArrayNavType.kt rename to app/src/main/java/org/xtimms/shirizu/utils/StringArrayNavType.kt index 8ab277e..fa4e746 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/StringArrayNavType.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/StringArrayNavType.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.os.Bundle import androidx.navigation.NavType diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/WebViewUtil.kt b/app/src/main/java/org/xtimms/shirizu/utils/WebViewUtil.kt similarity index 91% rename from app/src/main/java/org/xtimms/etsudoku/utils/WebViewUtil.kt rename to app/src/main/java/org/xtimms/shirizu/utils/WebViewUtil.kt index ed15e8d..081c2a9 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/WebViewUtil.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/WebViewUtil.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils +package org.xtimms.shirizu.utils import android.content.Context import android.webkit.WebView diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/composable/Bitmap.kt b/app/src/main/java/org/xtimms/shirizu/utils/composable/Bitmap.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/utils/composable/Bitmap.kt rename to app/src/main/java/org/xtimms/shirizu/utils/composable/Bitmap.kt index c1f9f28..f1e798a 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/composable/Bitmap.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/composable/Bitmap.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.composable +package org.xtimms.shirizu.utils.composable import android.content.res.Resources import androidx.annotation.DrawableRes diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/composable/LazyListState.kt b/app/src/main/java/org/xtimms/shirizu/utils/composable/LazyListState.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/composable/LazyListState.kt rename to app/src/main/java/org/xtimms/shirizu/utils/composable/LazyListState.kt index ca08f9c..b3a247d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/composable/LazyListState.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/composable/LazyListState.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.composable +package org.xtimms.shirizu.utils.composable import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.grid.LazyGridState diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/composable/Modifier.kt b/app/src/main/java/org/xtimms/shirizu/utils/composable/Modifier.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/composable/Modifier.kt rename to app/src/main/java/org/xtimms/shirizu/utils/composable/Modifier.kt index 4116656..6d5ff05 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/composable/Modifier.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/composable/Modifier.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.composable +package org.xtimms.shirizu.utils.composable import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable @@ -10,7 +10,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.composed import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.drawBehind -import org.xtimms.etsudoku.utils.material.SecondaryItemAlpha +import org.xtimms.shirizu.utils.material.SecondaryItemAlpha fun Modifier.selectedBackground(isSelected: Boolean): Modifier = if (isSelected) { composed { diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/iterator/CloseableIterator.kt b/app/src/main/java/org/xtimms/shirizu/utils/iterator/CloseableIterator.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/utils/iterator/CloseableIterator.kt rename to app/src/main/java/org/xtimms/shirizu/utils/iterator/CloseableIterator.kt index aa61ddb..202b639 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/iterator/CloseableIterator.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/iterator/CloseableIterator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.iterator +package org.xtimms.shirizu.utils.iterator import okhttp3.internal.closeQuietly import okio.Closeable diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/iterator/MappingIterator.kt b/app/src/main/java/org/xtimms/shirizu/utils/iterator/MappingIterator.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/utils/iterator/MappingIterator.kt rename to app/src/main/java/org/xtimms/shirizu/utils/iterator/MappingIterator.kt index 98489e9..aa2ae30 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/iterator/MappingIterator.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/iterator/MappingIterator.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.iterator +package org.xtimms.shirizu.utils.iterator class MappingIterator( private val upstream: Iterator, diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Bundle.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Bundle.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Bundle.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Bundle.kt index dd5f9ef..c9881ab 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Bundle.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Bundle.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import android.content.Intent import android.os.Build diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Coil.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Coil.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Coil.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Coil.kt index b0738e4..5b87b65 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Coil.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Coil.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.core.graphics.drawable.toBitmap import coil.request.ErrorResult diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Collections.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Collections.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Collections.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Collections.kt index e0e00af..019ea51 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Collections.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Collections.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.collection.ArrayMap diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Coroutines.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Coroutines.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Coroutines.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Coroutines.kt index 0194a84..f2ad3c0 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Coroutines.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Coroutines.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.ProcessLifecycleOwner @@ -10,7 +10,7 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.withContext import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.utils.RetainedLifecycleCoroutineScope +import org.xtimms.shirizu.utils.RetainedLifecycleCoroutineScope suspend fun withNonCancellableContext(block: suspend CoroutineScope.() -> T) = withContext(NonCancellable, block) diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Date.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Date.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Date.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Date.kt index 8a4de24..212a9b1 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Date.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Date.kt @@ -1,7 +1,7 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import android.content.res.Resources -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R import java.text.DateFormat import java.time.Instant import java.time.LocalDate diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/EventFlow.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/EventFlow.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/EventFlow.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/EventFlow.kt index c3fa8c9..535ab01 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/EventFlow.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/EventFlow.kt @@ -1,9 +1,9 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.annotation.AnyThread import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import org.xtimms.etsudoku.utils.Event +import org.xtimms.shirizu.utils.Event @Suppress("FunctionName") fun MutableEventFlow() = MutableStateFlow?>(null) diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Flow.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Flow.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Flow.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Flow.kt index 63b03f4..b6efea8 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Flow.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Flow.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/FlowObserver.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/FlowObserver.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/FlowObserver.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/FlowObserver.kt index f069bfe..a5db89f 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/FlowObserver.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/FlowObserver.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner @@ -9,7 +9,7 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch -import org.xtimms.etsudoku.utils.Event +import org.xtimms.shirizu.utils.Event fun Flow.observe(owner: LifecycleOwner, collector: FlowCollector) { val start = if (this is StateFlow) CoroutineStart.UNDISPATCHED else CoroutineStart.DEFAULT diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/IO.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/IO.kt similarity index 82% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/IO.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/IO.kt index 8bf0913..3f5c817 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/IO.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/IO.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -8,8 +8,8 @@ import kotlinx.coroutines.withContext import okhttp3.ResponseBody import okio.BufferedSink import okio.Source -import org.xtimms.etsudoku.utils.CancellableSource -import org.xtimms.etsudoku.utils.ProgressResponseBody +import org.xtimms.shirizu.utils.CancellableSource +import org.xtimms.shirizu.utils.ProgressResponseBody fun ResponseBody.withProgress(progressState: MutableStateFlow): ResponseBody { return ProgressResponseBody(this, progressState) diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Primitive.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/Primitive.kt similarity index 70% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/Primitive.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/Primitive.kt index ff1216f..0ada14c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/Primitive.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/Primitive.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import org.xtimms.etsudoku.core.prefs.AppSettings.getBoolean -import org.xtimms.etsudoku.core.prefs.AppSettings.getInt -import org.xtimms.etsudoku.core.prefs.AppSettings.getString +import org.xtimms.shirizu.core.prefs.AppSettings.getBoolean +import org.xtimms.shirizu.core.prefs.AppSettings.getInt +import org.xtimms.shirizu.core.prefs.AppSettings.getString inline val String.booleanState @Composable get() = diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/String.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/String.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/String.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/String.kt index c9817bc..cb0a4ee 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/String.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/String.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import android.net.Uri import kotlinx.serialization.encodeToString diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/lang/WorkManager.kt b/app/src/main/java/org/xtimms/shirizu/utils/lang/WorkManager.kt similarity index 88% rename from app/src/main/java/org/xtimms/etsudoku/utils/lang/WorkManager.kt rename to app/src/main/java/org/xtimms/shirizu/utils/lang/WorkManager.kt index 08f5682..991a069 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/lang/WorkManager.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/lang/WorkManager.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.lang +package org.xtimms.shirizu.utils.lang import android.annotation.SuppressLint import androidx.work.WorkInfo diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/material/Color.kt b/app/src/main/java/org/xtimms/shirizu/utils/material/Color.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/material/Color.kt rename to app/src/main/java/org/xtimms/shirizu/utils/material/Color.kt index 9b6f8ea..033390d 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/material/Color.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/material/Color.kt @@ -1,12 +1,12 @@ -package org.xtimms.etsudoku.utils.material +package org.xtimms.shirizu.utils.material import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb -import org.xtimms.etsudoku.ui.harmonize.blend.Blend -import org.xtimms.etsudoku.ui.harmonize.palettes.CorePalette +import org.xtimms.shirizu.ui.harmonize.blend.Blend +import org.xtimms.shirizu.ui.harmonize.palettes.CorePalette import kotlin.math.ceil import kotlin.math.floor diff --git a/app/src/main/java/org/xtimms/shirizu/utils/material/Constants.kt b/app/src/main/java/org/xtimms/shirizu/utils/material/Constants.kt new file mode 100644 index 0000000..69644d7 --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/utils/material/Constants.kt @@ -0,0 +1,3 @@ +package org.xtimms.shirizu.utils.material + +const val SecondaryItemAlpha = .78f \ No newline at end of file diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/progress/ProgressDeferred.kt b/app/src/main/java/org/xtimms/shirizu/utils/progress/ProgressDeferred.kt similarity index 89% rename from app/src/main/java/org/xtimms/etsudoku/utils/progress/ProgressDeferred.kt rename to app/src/main/java/org/xtimms/shirizu/utils/progress/ProgressDeferred.kt index 3986455..abf9310 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/progress/ProgressDeferred.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/progress/ProgressDeferred.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.progress +package org.xtimms.shirizu.utils.progress import kotlinx.coroutines.Deferred import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Android.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Android.kt similarity index 98% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Android.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Android.kt index 522cb0a..89d9800 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Android.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Android.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.Manifest import android.app.ActivityManager diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Context.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Context.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Context.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Context.kt index a982547..b2010af 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Context.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Context.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.app.ActivityManager import android.content.Context diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Cursor.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Cursor.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Cursor.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Cursor.kt index a06d6e9..638d744 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Cursor.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Cursor.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.ContentValues import android.database.Cursor diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/File.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/File.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/File.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/File.kt index 5538ace..ec0fdff 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/File.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/File.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.Context import android.net.Uri @@ -7,8 +7,8 @@ import androidx.core.content.FileProvider import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.runInterruptible import kotlinx.coroutines.withContext -import org.xtimms.etsudoku.BuildConfig -import org.xtimms.etsudoku.utils.FileSequence +import org.xtimms.shirizu.BuildConfig +import org.xtimms.shirizu.utils.FileSequence import java.io.File import java.io.FileFilter import java.nio.file.attribute.BasicFileAttributes diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Http.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Http.kt similarity index 97% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Http.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Http.kt index 9966a27..e3cf811 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Http.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Http.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import okhttp3.Cookie import okhttp3.HttpUrl diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Intent.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Intent.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Intent.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Intent.kt index df2887e..a16704c 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Intent.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Intent.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.ClipData import android.content.Context import android.content.Intent import android.net.Uri -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R fun Uri.toShareIntent(context: Context, type: String = "image/*", message: String? = null): Intent { val uri = this diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Locale.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Locale.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Locale.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Locale.kt index 0fe19d5..dccca40 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Locale.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Locale.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import androidx.appcompat.app.AppCompatDelegate import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource import androidx.core.os.LocaleListCompat -import org.xtimms.etsudoku.R +import org.xtimms.shirizu.R import java.util.Locale fun LocaleListCompat.toList(): List = List(size()) { i -> getOrThrow(i) } diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Network.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Network.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Network.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Network.kt index 5fea0c5..54f5c78 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Network.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Network.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.Context import android.net.ConnectivityManager diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/PaddingValues.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/PaddingValues.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/PaddingValues.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/PaddingValues.kt index 82cc972..08cb903 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/PaddingValues.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/PaddingValues.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.calculateEndPadding diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Preferences.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Preferences.kt similarity index 92% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Preferences.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Preferences.kt index 865d4df..47ba64e 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Preferences.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Preferences.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.SharedPreferences diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Throwable.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Throwable.kt similarity index 85% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Throwable.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Throwable.kt index 5a93a36..61c5fef 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Throwable.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Throwable.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.ActivityNotFoundException import android.content.res.Resources @@ -9,11 +9,11 @@ import org.koitharu.kotatsu.parsers.exception.AuthRequiredException import org.koitharu.kotatsu.parsers.exception.ContentUnavailableException import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.exception.ParseException -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.exceptions.CloudflareProtectedException -import org.xtimms.etsudoku.core.exceptions.SyncApiException -import org.xtimms.etsudoku.core.exceptions.TooManyRequestExceptions -import org.xtimms.etsudoku.utils.lang.ifNullOrEmpty +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.exceptions.CloudflareProtectedException +import org.xtimms.shirizu.core.exceptions.SyncApiException +import org.xtimms.shirizu.core.exceptions.TooManyRequestExceptions +import org.xtimms.shirizu.utils.lang.ifNullOrEmpty import java.net.SocketTimeoutException import java.net.UnknownHostException diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Toast.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Toast.kt similarity index 83% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Toast.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Toast.kt index 3e80b10..2421475 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Toast.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Toast.kt @@ -1,11 +1,11 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.content.Context import android.widget.Toast import androidx.annotation.StringRes import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.xtimms.etsudoku.utils.lang.processLifecycleScope +import org.xtimms.shirizu.utils.lang.processLifecycleScope fun Context.toast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/org/xtimms/etsudoku/utils/system/Uri.kt b/app/src/main/java/org/xtimms/shirizu/utils/system/Uri.kt similarity index 95% rename from app/src/main/java/org/xtimms/etsudoku/utils/system/Uri.kt rename to app/src/main/java/org/xtimms/shirizu/utils/system/Uri.kt index f2f51af..6731011 100644 --- a/app/src/main/java/org/xtimms/etsudoku/utils/system/Uri.kt +++ b/app/src/main/java/org/xtimms/shirizu/utils/system/Uri.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.utils.system +package org.xtimms.shirizu.utils.system import android.net.Uri import androidx.core.net.toFile diff --git a/app/src/main/java/org/xtimms/etsudoku/work/PeriodicWorkScheduler.kt b/app/src/main/java/org/xtimms/shirizu/work/PeriodicWorkScheduler.kt similarity index 79% rename from app/src/main/java/org/xtimms/etsudoku/work/PeriodicWorkScheduler.kt rename to app/src/main/java/org/xtimms/shirizu/work/PeriodicWorkScheduler.kt index 73f5083..0584ca3 100644 --- a/app/src/main/java/org/xtimms/etsudoku/work/PeriodicWorkScheduler.kt +++ b/app/src/main/java/org/xtimms/shirizu/work/PeriodicWorkScheduler.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.work +package org.xtimms.shirizu.work interface PeriodicWorkScheduler { diff --git a/app/src/main/java/org/xtimms/etsudoku/work/WorkScheduleManager.kt b/app/src/main/java/org/xtimms/shirizu/work/WorkScheduleManager.kt similarity index 84% rename from app/src/main/java/org/xtimms/etsudoku/work/WorkScheduleManager.kt rename to app/src/main/java/org/xtimms/shirizu/work/WorkScheduleManager.kt index ace6de1..5c6e4f5 100644 --- a/app/src/main/java/org/xtimms/etsudoku/work/WorkScheduleManager.kt +++ b/app/src/main/java/org/xtimms/shirizu/work/WorkScheduleManager.kt @@ -1,10 +1,10 @@ -package org.xtimms.etsudoku.work +package org.xtimms.shirizu.work import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import org.xtimms.etsudoku.utils.lang.processLifecycleScope -import org.xtimms.etsudoku.work.suggestions.SuggestionsWorker -import org.xtimms.etsudoku.work.tracker.TrackWorker +import org.xtimms.shirizu.utils.lang.processLifecycleScope +import org.xtimms.shirizu.work.suggestions.SuggestionsWorker +import org.xtimms.shirizu.work.tracker.TrackWorker import javax.inject.Inject import javax.inject.Singleton diff --git a/app/src/main/java/org/xtimms/etsudoku/work/suggestions/SuggestionsWorker.kt b/app/src/main/java/org/xtimms/shirizu/work/suggestions/SuggestionsWorker.kt similarity index 93% rename from app/src/main/java/org/xtimms/etsudoku/work/suggestions/SuggestionsWorker.kt rename to app/src/main/java/org/xtimms/shirizu/work/suggestions/SuggestionsWorker.kt index 21a7935..5c367a6 100644 --- a/app/src/main/java/org/xtimms/etsudoku/work/suggestions/SuggestionsWorker.kt +++ b/app/src/main/java/org/xtimms/shirizu/work/suggestions/SuggestionsWorker.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.work.suggestions +package org.xtimms.shirizu.work.suggestions import android.annotation.SuppressLint import android.content.Context @@ -47,24 +47,24 @@ import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.almostEquals import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.model.MangaSuggestion -import org.xtimms.etsudoku.core.model.TagsBlacklist -import org.xtimms.etsudoku.core.model.distinctById -import org.xtimms.etsudoku.core.parser.MangaRepository -import org.xtimms.etsudoku.data.repository.FavouritesRepository -import org.xtimms.etsudoku.data.repository.HistoryRepository -import org.xtimms.etsudoku.data.repository.MangaSourcesRepository -import org.xtimms.etsudoku.data.repository.SuggestionRepository -import org.xtimms.etsudoku.utils.lang.asArrayList -import org.xtimms.etsudoku.utils.lang.awaitUniqueWorkInfoByName -import org.xtimms.etsudoku.utils.lang.flatten -import org.xtimms.etsudoku.utils.lang.sanitize -import org.xtimms.etsudoku.utils.lang.takeMostFrequent -import org.xtimms.etsudoku.utils.lang.toBitmapOrNull -import org.xtimms.etsudoku.utils.system.checkNotificationPermission -import org.xtimms.etsudoku.utils.system.trySetForeground -import org.xtimms.etsudoku.work.PeriodicWorkScheduler +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.model.MangaSuggestion +import org.xtimms.shirizu.core.model.TagsBlacklist +import org.xtimms.shirizu.core.model.distinctById +import org.xtimms.shirizu.core.parser.MangaRepository +import org.xtimms.shirizu.data.repository.FavouritesRepository +import org.xtimms.shirizu.data.repository.HistoryRepository +import org.xtimms.shirizu.data.repository.MangaSourcesRepository +import org.xtimms.shirizu.data.repository.SuggestionRepository +import org.xtimms.shirizu.utils.lang.asArrayList +import org.xtimms.shirizu.utils.lang.awaitUniqueWorkInfoByName +import org.xtimms.shirizu.utils.lang.flatten +import org.xtimms.shirizu.utils.lang.sanitize +import org.xtimms.shirizu.utils.lang.takeMostFrequent +import org.xtimms.shirizu.utils.lang.toBitmapOrNull +import org.xtimms.shirizu.utils.system.checkNotificationPermission +import org.xtimms.shirizu.utils.system.trySetForeground +import org.xtimms.shirizu.work.PeriodicWorkScheduler import java.util.concurrent.TimeUnit import javax.inject.Inject import kotlin.math.pow diff --git a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackWorker.kt b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackWorker.kt similarity index 94% rename from app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackWorker.kt rename to app/src/main/java/org/xtimms/shirizu/work/tracker/TrackWorker.kt index b626976..59dbc97 100644 --- a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackWorker.kt +++ b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackWorker.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.work.tracker +package org.xtimms.shirizu.work.tracker import android.content.Context import android.content.pm.ServiceInfo @@ -46,19 +46,19 @@ import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.parsers.util.runCatchingCancellable -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.exceptions.CloudflareProtectedException -import org.xtimms.etsudoku.core.logs.FileLogger -import org.xtimms.etsudoku.core.logs.TrackerLogger -import org.xtimms.etsudoku.core.prefs.AppSettings -import org.xtimms.etsudoku.core.tracker.Tracker -import org.xtimms.etsudoku.core.tracker.model.MangaUpdates -import org.xtimms.etsudoku.utils.lang.awaitUniqueWorkInfoByName -import org.xtimms.etsudoku.utils.lang.onEachIndexed -import org.xtimms.etsudoku.utils.lang.toBitmapOrNull -import org.xtimms.etsudoku.utils.system.checkNotificationPermission -import org.xtimms.etsudoku.utils.system.trySetForeground -import org.xtimms.etsudoku.work.PeriodicWorkScheduler +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.exceptions.CloudflareProtectedException +import org.xtimms.shirizu.core.logs.FileLogger +import org.xtimms.shirizu.core.logs.TrackerLogger +import org.xtimms.shirizu.core.prefs.AppSettings +import org.xtimms.shirizu.core.tracker.Tracker +import org.xtimms.shirizu.core.tracker.model.MangaUpdates +import org.xtimms.shirizu.utils.lang.awaitUniqueWorkInfoByName +import org.xtimms.shirizu.utils.lang.onEachIndexed +import org.xtimms.shirizu.utils.lang.toBitmapOrNull +import org.xtimms.shirizu.utils.system.checkNotificationPermission +import org.xtimms.shirizu.utils.system.trySetForeground +import org.xtimms.shirizu.work.PeriodicWorkScheduler import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -211,7 +211,7 @@ class TrackWorker @AssistedInject constructor( .build(), ).toBitmapOrNull(), ) - setSmallIcon(R.drawable.ic_stat_etsudoku) + setSmallIcon(R.drawable.ic_stat_shirizu) val style = NotificationCompat.InboxStyle(this) for (chapter in newChapters) { style.addLine(chapter.name) diff --git a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackerNotificationChannels.kt b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackerNotificationChannels.kt similarity index 96% rename from app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackerNotificationChannels.kt rename to app/src/main/java/org/xtimms/shirizu/work/tracker/TrackerNotificationChannels.kt index 218b2d8..15d8910 100644 --- a/app/src/main/java/org/xtimms/etsudoku/work/tracker/TrackerNotificationChannels.kt +++ b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackerNotificationChannels.kt @@ -1,4 +1,4 @@ -package org.xtimms.etsudoku.work.tracker +package org.xtimms.shirizu.work.tracker import android.app.NotificationManager import android.content.Context @@ -6,8 +6,8 @@ import androidx.core.app.NotificationChannelCompat import androidx.core.app.NotificationChannelGroupCompat import androidx.core.app.NotificationManagerCompat import dagger.hilt.android.qualifiers.ApplicationContext -import org.xtimms.etsudoku.R -import org.xtimms.etsudoku.core.model.FavouriteCategory +import org.xtimms.shirizu.R +import org.xtimms.shirizu.core.model.FavouriteCategory import javax.inject.Inject class TrackerNotificationChannels @Inject constructor( diff --git a/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackingItem.kt b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackingItem.kt new file mode 100644 index 0000000..edffdbe --- /dev/null +++ b/app/src/main/java/org/xtimms/shirizu/work/tracker/TrackingItem.kt @@ -0,0 +1,8 @@ +package org.xtimms.shirizu.work.tracker + +import org.xtimms.shirizu.core.tracker.model.MangaTracking + +data class TrackingItem( + val tracking: MangaTracking, + val channelId: String?, +) \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_stat_etsudoku.png b/app/src/main/res/drawable-hdpi/ic_stat_shirizu.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_stat_etsudoku.png rename to app/src/main/res/drawable-hdpi/ic_stat_shirizu.png diff --git a/app/src/main/res/drawable-mdpi/ic_stat_etsudoku.png b/app/src/main/res/drawable-mdpi/ic_stat_shirizu.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_stat_etsudoku.png rename to app/src/main/res/drawable-mdpi/ic_stat_shirizu.png diff --git a/app/src/main/res/drawable-night-v31/splash_branding_image.xml b/app/src/main/res/drawable-night-v31/splash_branding_image.xml new file mode 100644 index 0000000..8538892 --- /dev/null +++ b/app/src/main/res/drawable-night-v31/splash_branding_image.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable-night-v31/splash_icon.xml b/app/src/main/res/drawable-night-v31/splash_icon.xml new file mode 100644 index 0000000..b3ceb18 --- /dev/null +++ b/app/src/main/res/drawable-night-v31/splash_icon.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-night/splash_icon.xml b/app/src/main/res/drawable-night/splash_icon.xml new file mode 100644 index 0000000..0b7e041 --- /dev/null +++ b/app/src/main/res/drawable-night/splash_icon.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/drawable-nodpi/ookami.webp b/app/src/main/res/drawable-nodpi/ookami.webp deleted file mode 100644 index 60d40e2e5e786ac48ce27a6b73c3fc926736bf65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37160 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 AH2?qr diff --git a/app/src/main/res/drawable-v31/splash_branding_image.xml b/app/src/main/res/drawable-v31/splash_branding_image.xml new file mode 100644 index 0000000..df470f3 --- /dev/null +++ b/app/src/main/res/drawable-v31/splash_branding_image.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/drawable-v31/splash_icon.xml b/app/src/main/res/drawable-v31/splash_icon.xml new file mode 100644 index 0000000..915aff3 --- /dev/null +++ b/app/src/main/res/drawable-v31/splash_icon.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_etsudoku.png b/app/src/main/res/drawable-xhdpi/ic_stat_shirizu.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_stat_etsudoku.png rename to app/src/main/res/drawable-xhdpi/ic_stat_shirizu.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_etsudoku.png b/app/src/main/res/drawable-xxhdpi/ic_stat_shirizu.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_stat_etsudoku.png rename to app/src/main/res/drawable-xxhdpi/ic_stat_shirizu.png diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_etsudoku.png b/app/src/main/res/drawable-xxxhdpi/ic_stat_shirizu.png similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_stat_etsudoku.png rename to app/src/main/res/drawable-xxxhdpi/ic_stat_shirizu.png diff --git a/app/src/main/res/drawable/splash_icon.xml b/app/src/main/res/drawable/splash_icon.xml new file mode 100644 index 0000000..61dbdd3 --- /dev/null +++ b/app/src/main/res/drawable/splash_icon.xml @@ -0,0 +1,13 @@ + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 6e2a2b81e2bdc85e59a25ceff0d84c952997b026..2105a801d4e89a15bdb6394edd5d067fdba30e50 100644 GIT binary patch delta 4185 zcmV-f5T@_7K;j^fFn$jU@BO-jYQAbHFzGz|eYbOag{1|p~+AP_L+woP`<`>{WM zjE!yI2I%vg?|HswxBvCG-+TSP8w>t_b&CM&A;Cx6I+T6AzJJ~Zh|GtNN#9SnAQdiuyALxxPSwzhV+u&{9D@pyl;wzeLvi7AbZjlauevYRa}Ek%uu zjlWe?R7m{%{0ab|jRshcg4I(1(Lpi0a^=cwdwcttd_I4gxw*N6F=Er&+FB-+N>5i* zRGb()cIK1Q_;DKmFw9=H?bQXwaY+IUG)ZV?fc?SD{e+RaI5Bub`k{ zcVJ-PRW-0oGNq{iBEXnsWMp`Z969nWJ3G5)O|n8g2dS>EK6Lf!)sOxB{BlhRlqmqh zG0e7Y+cseC+_@XZZqj=! zLjl6}oPW&B%m8n1@9)@bHdpVN`mkYJTbumCg$uKNeSOc+L{6_283GUmPF7ad46#_8 z{HTCKP(Y9*5=ro+Nt1ps1SEX{dL)^nP7x+d(gz?)=NvqEa7=J;aMq*798Dl4Cnrx@ zv}n<9`sgHm05Ssri-v}VOg^9gP%C7;lnMYyrGL`P0)fB>09tfeH(dasDK{@GE897A z=+GDRUBIKzuDrZF$-%)P8~|i0kTfp4JAm*rZca{4n1_eQc4IfKxZehCZEe8ga*Q3y zWc_nT&f2wW?boeamt$^jKET*jWk{~U*GDeE%qQJpPQV!8 zaDPy8`}S&WZLQh3aiiy^O`9sT=_73bQKD5^TADCy*sxGzx1m%5tc?2>uHCpp4P`5^ z0`Kuouz02y*jQT_JG@c-Z``<%IDGi<2mol+Bx;%fqD=aM0|!vkXBaiRs`JhAzhHUH zVd|BVmJGDuabeM{@enw96xdjsn_?B5-{3A^OA$u&#%F6Z(9XfPA zqZ!pY?L2r6emI-oktl5!_6H(wVa|nBOQ(a!C`Vwkb=eJ5tf=!C<>lom4h{|&PZF!v z(LjAQ6nl2>-aR%nG*n`$rM&v?H&9tE?ZO}mCKXO>Hoyo6JJ`HtexHDpn3yOI3x5l{ zqRt|9fGFKlSXj8(#l__{Qvh`BMm0pnrci`YXU>E79?aCw+8iR5Oo1mnoJ=vj-eVLM z6@BjN>KdueB6Wb!2HVJFvg=$f*H-V*yJ?6FIiFJuKc?kFe$j0;F(abJ0wtl6YOI(y zXMx9PM^h|8uQB9uc^!|(!*AuDiho5^KRQ78oOkNfso=oCzetlNly7NiIYjRrGi=z{EQ7RP{)EKj^MGD9kuXR5{*dtAvwfndo12?&TUl8>4ghzF z<46Fa!ip_hwstMM z9=-s_&Y(-7QZXzRaLia>KS&76p7VoIF7{oy))$TtPa1^|0K5@%7)r})X}(YA5eJI;Q6~J^nd4!At&OqMQT>ySU4khS zUBO|n(5Ugs%F2Frbab4jGWVST;@8*LUl0fce>Y}^sv0STuh~x<0rNbH;8vYath2EG~Lq&}YqQVOR5Gs|*_Hf&X zYv0j}ko;qgmJ!;;h<>53^VPp!1d)&#lVoxQEM4;rRMko;#*P~`6h4T2#wZ_(#bONv zfO>Qo2|#EzY?Vr7r4iUrUEki60!6B{M!OE`${hL}o{u}ihJQC^F`jnkq4RL`WUh*u zEb8lCJWC8q=1ychCX2-y3;=(r1JqxsRAS=DsO$Ef2DnvG2U)o#ka4LH(B!MLhD^X_ zvtdvC5)ksWTet2OgGsp99jP6qRrFNK`sFhj$8#(e3#|wOB&RdTBmmJjgbrZt@3-LM zl@hpgr3C64nt$8D!daC{aIm+9?Hd*|vRs${D1-H%eGjr$JXNM8PgEkz<(g4Gm5^^~ z@E6`|0MS>5OiKHu5RU)+8{DeESnNK$^XgOJGv3+Y4U|{b!HN%3;O@N^TJYOhxlQ*O z1#g7~7(6z1&)Bi}>ZG#DdieaCbok)yXMYUdz}?0cSQ5DhT3QHm)U-b3 zOR*tk`%cW8o2m1ZbovWkkAj-@a78WMExVZQ;*l&+_IeoqW zw(dO(GJhGC`*baHMZhtZTm9-&Fv*ByTTxL_x~r>eFx|}Kd3wB_4sZL zm;e?1-lJJ?Z>W5eqqQ{X9IjRmuM&zO~!_4N}^Jb{_T2I43ZfNYYJ zlb0@7u;4?zN7JJr>YOtduEMm*ZhExt+@!9d34cPP_CX6;DwXw9&phJ$=xnZ876iWH z#|)lBy~B|sN8Skz4&F&p9`s<?^1F8J+Q7KDI6MNvq*+HS zMt`L{0AN5(P0b~dNQ9mwqpPU&4xBif51E&)L90yO;rDoZI>FjyPj@>evLh?^IvhBj z4MjJqRf<>@%c&=5l>mZ%marmh8cZ5DoY7j2C7khx+>ZdRtptPXIvKrt}Yj(&g9(#Vjo?EpEz`DIrXWyJqt-xctX0 zU|}AJaH1myQ>hjblBqFeZ`#qobpbT39fv z-)WU8VAJ+g$o{Rgd&bacM!=aJFa{Pp?FpE>?&+(gr3GSQV&=xi#%8M0tmLN))YO{7 zMXG2MS(Kih9`EDhvyiFdh<^(B`?Neb@SOzeq^S2uIR~*ojZ5f-`{^FjXjidCYRO%Dgfa7`uaMjq@<+U+1VLY$bf9Z>|b_XDM;_O zP?pP_$EAS4BcKUmhCx3YW=u5%5cRe-H8p?Dn>X+2%*@PUP3+OeAb+|pvfaCP?@J38 zF5JjeVH>l7p6rW?`Ou+5(IFuri7Lz0rFg14fRI@zYStKjoI7`J^Tdf0=WsZtbIf{j z^SZ`XC=_t<;>BY=K0a@&!iq*ii#Q2*JXF}|JQfxfrntDc7#@=AT5TVEUQ|@{hpVgW z0+myUg$f;hkNR?S<$v@@5G#D;l~=st;^I<-LZRV#%sv1?+m!Y7_425wsQF)f@kO>O zDWC&a2+S=MaQVOZAu1>LY=gv2yqN32n$A2@gCVhSur4K*^BxDUL zZQBhSHUvaOL~Q5t`J9Jcaic<(N~MZ~goI`5*RRJP)L}9nl`_qMlns_>iUK;rbEUcIC*(_ zrw$)JyeAW+_(5AgEx@*6Q?gjgUD3_{lcizMi`rWIl#0sTgk-O$ibRZ>zS z$TM3WoBmPCnY5nsT3}X4+4UZL;)jX z$e%AUW=&55LOKN)6gP})Kvv+5VnZIub2=!D^o%Y= zYf=)VwG2W(m_z^wU<4EdhJd5aX51_R2|*xWk@v{wIJL=vp?}jo36LhXlCnSY*qyP! jjg!rj=k(V-zV`nDu(lGdr&^C{00000NkvXXu0mjf*7pc# literal 8245 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 nmh0k44ofy`glX=O&z|80A;uum9 z_x933UIqo8BL=(vUvN$0{A9o#@YH7a?&HA^iW?a}erDQN&+5RU7|3ws2u~lw#6}lJ z0byecCKom#RtKLm4>$xQJwzA`4V#r6QWQoNjRwI`O$BgTe~ HDWM4f+o0SY literal 18140 zcmV*EKx@B=P)PyA07*naRCr#^y;*P@S-Kwhfg}im00@xazOUjUQA=qrskU3y)$Y6a+Sh)uCnhGw zVMq90zj^HI?alVXM9jlH%@G4Y+u z1QLk^kS77EbfVc*Nr^<}$v^+~`@i3T|K|TrU}hZH+l8&=uLc_1fYMT1AGh?Og99M8 z0jwlG03}GZD0;(5cTS^TDJGFNJV#aSr>di?;65QCf=Xp>rs!s1!nBCiI#>YGR@Z zPk3q!n~QQXQtB*6)8H9Y25M5@mGfRd{T~w8*|v3aXzK!e0ehd#_bF<@#Tg(T11OO1 z;wpCm^-YQ(mX?`oKAncsv|T>Um!Uxu3GA;eVRv!X_FlN_n&9i~Q-#o|jTB{-d>MoW zOKI}()EmV3EF@NGnG=lzr{S%s%W4s{`{Z{yaP2=PB+j2YlmbXWEcQwyfOr%_OYgmd zW|%IBvm6Kn6)mU=V9M~MKg2@KG0%In8O8S07!rIrZLE?qCj$M$aC*F|P~wwKoFXrVW&&6FV zuK@TUy*|M0&G3mce83`@V_JfP@S4zsiGzLHw^mVGkE)J7ln6gQ-3Qf##AuH7K5l5@ z6=IU^TdC8Drhzl?R@bI$Th&(-exv&3%Af5BVxUF|Q0Sl+Yf%VkdSVfPTJc?2)OJ+? z#rLBhT;|lg?zF2j6GAQEux*Zyj_?p@Pe~r|IB|3hanvm`VgAM*T)!*gi z%72$wOGOpi94Gd6aj?FE{m=>$`}R$-_E^d)y{PU#4Vp=PO2~>i)`TRHNMPad9qez% zrJlCaRe`qQi*R|oY3U%dG?wyRvKlc^3pBS$T~yYCDR>Jrz(%Mz=gV~#3YWW5iEx?k zqae~}q6T!xyBNhZ$MpY%0EX85T)Y;WOc zJC38RO&o2-k&t}AR&K>rU5l#DK9tebP~v3ew?1OkYe_@iP!mEPvbnm1wee9LNd`>5 zU<2BQ&!-8Y=?knz@p7h_{!{OemA%M)%bN7j3oBd z-#<|zo)NOYvk&FIs)Eh2rnz?GF)TiRDD5BeE$F}U2^g^CHpi;S3(Y7KtkgCtwN<-| z{^0C5Y}dB6?`3kisa^2_kHG}%Z!b*<`SQdzkcdWvuZN=pK+<=zyLGufC(<;1Cs9^G z@JTviN7F#LP(aCJ4Ar2})N6$2CZ#Xg?enAO!Zr0u43!+!9B2BiGJ@F9qWEEU*UAF0 zCa>m`Uq_*%FWA~y^dQ9SmV^*8&$+t`MAndqZU9I2s~mQ>E$inT4wQTS@OSs4)KyUw zbF9J9jt=%Q^Wc`eHU!YvGl1Imo@BDx%p4mbVR9OgW|^kY&Z0J)c&R*CJB#@~emDIN z9niqesq%h?E(G&tME>xHK}MmjMBXozJAiq@%7$jJa-wL$!lGk+Ab|w1Hu(x0%<)RD zlF~ACpSuETMYBLf3tiF@?9!&W5J9A0$h@K5)Bqk~cK{#y+~b(yNpeZB#%kUnheP)^-^oz5{-r*>#tcmBH!r!`Ip^gi&b0 zEbuDJ6%?IcNO5MqklHXRiMG+Mx3;wlO}&F~l$4}_Z_|=E+BNF|x>CW4T^}*Ds(>02 zHUO@Kn$ag@jr%wjwH^hKWyWm+gx?Y5kM3S+hRXv%xNGa-s;X8VvKo#SlB_n%>qX|K z5t?};oxm2F+F6daljq>8sWTPAOmm!aDC9I^Lo*O;kP`I!dT43=$EcSXr;I%#zL>rQ6l`la(}h>p(acL7E}{< z9Of7aM3?6gnwiAGuFc*hYD0fDy3buj37f~VHD{&ygoPlq>92JU$Za{XhJ5INC~n!lLri%B`U1t7FfoU&fk;KP6QO#Uv90|hSnVK(Gl1o^91KA{R6D;_1T3Y1p3 z1sH+9DTqo7rBUco|81K1wF%`)M#qT+b~j^)tt=>7un2W=SEUD?r!K(lt1|DE&S8!f zdDQMyMkDf*oqg8*HdZAVsK_n?Sy@XiR&$ny0+;nuWv-h+Mnxscyk3-fs!-zgD4@{N zGNpS?6}+r9UtM%rkml3Dt~4kYANAf=9Fe&xY)95{zyPvHd(k#{2EnGbGu0Y)H*61BZHrR@wo z&PFHK!ql9QdJ=ohpba57&Ys;WXF4p2b*0y${<-{qe=vdMD>HEURB$vM7SqOSy zZqLe^pHh;=GOJi!g1oyZQQ))1t(26MptRD9(y9Q;yo%;aRS}d8whDdH9!jp3Q^kC# zCfnE!n(;srINaS49d|UryPF%>i*E|foMNx4U_IK0&caEsw6Ry(vN=|6XgjuHLl6l- zZ6}eBg+-8qWYdj+_LD(^D4RkSQQ#z(Dk2oW)aQq@zDWr%M0BeYIs=4CAAB5}IZh-* za}xz`CmO+CJSP78P(y(ivVS=~>vXx%bM`VSygpr^C0Xy*?bqV;xD7!h7LX~Nd^kXw z0ScmQBAa~{ohPgZL}nXCZOCM`oobHpeDwX?9+Wq=p;S2Jx-@MzcCQ@pcw5nNA_1ma z2&qpT9$;@XirtNf04GobzRkrp(auxn;U&p}(XY*-3C+y0<})V}M;Lu@(}o}t4b6Zh zA1a#Vv#HlM1kt4kdLe-dQ#1@v3UtUB?UvQlp|m=PlJbfyCij@kF%sC{*~URUhW+@a zXy+6^yW2(e^<;#YN$cjmlkkczPIJJkF-4QB#X>Y^ZG-{C&?HaD@gJcnJP!0n)viY0M|^RQ%BSrtIX@OhN0 zfr%DC>C;2GlGVweOiN*j?{MH?e-~p@Ho)1?tRP*oM!LrZFVAb3gBQ`@)YJTK&P@sdWN(PA>&+`hg&k1gtwP(tX;k|B%6`~n64Prrm8hNGl4*9(#7&I>?5?x1O1yr!I(h`?;8@Htm}=R> z&e{^jEepBjcDxZ7eH4TC|9oNIC&li`_B&W`q=}lvFxfYdxF^9p>PJ~ zS|X3f_5ev%D>5}OeIv2NO>V}J;P=^B4yOwhJp-a9d>rPOoqyY_OW0mp#=$$v1x}&! z*EONKsa5!dB?hR!B4h^Ac`bpH&4n@egmk0XiZD0%3Ud>$(hxuP1ks8{WD^o;MPw7o zl2NnPcbu4G6~`W{n5(T@q-l=B93Sp%VRL32d+diUVu{Vh`*>@6K)>k=D|z9tm@wBfFeIpL7^Fyc-|>Nz zw{(agCFMx#y&`+j@zMSPwpZq`wY>07`GO?uB!jE3rWW4nI;BKsfTLyaJ5K64MQA0> z@xt^Q%#OblWXu!B9rY=;#nf^V5QlMs_*t8sSoNmS%5x zE)eV+TUOb+s#|74$c-Z(;UQ5z zlCbwuj~DK~Q^kRDC5{kZm_eL*v12sHY%{G41jSE=WVNr;^SoAJ+;=W--k% z0SpV%udxwY6^UvY*F;_rsi`>l(8^-Yj0harMer?!F|B@UUb#qY$8k9RQuZ6*tZzmI z@1tNS7qA;zLv(Vi=m1o<7|@?{d8**6YlNq!R+wH5D9fA9MmeIrxZ)TiHE|KlG0)4K z;Nku*wqj8%&5R>l0MnbiAj?DpPCsviX+^FmwG_-ZfH98ThwK+S9t(EzL`hvy1m6QscU$E;0Dylf&IJ2s8+~$~O zmNj5%_PyxCa4dYO@Oe=2#CDAu_$lOVNE1Ozjm80_nnCCOT%|;V-Fg1oF z$?;t5IjQWSAZ8ixoi&iOg8j{?%uZw+OYK+JI|K@&;JGmo zv|^iMnp*mI;pKV6BVp|CtIbwLG_!U##ky%Gi+@L-wM4f5O2TW()KQs5lyuJ^942TO zBTRp9>^TyWwcN6*06f&V^ucT(tGAaI5Vb=bpzeXFcGT3Nws%OGlc)J`Sz1R`WtTHB z$>k$b_zw2=5M5is>g*JD-Z2D_+~9D+z6k#kGk+x(D=Vz9NG>6W)D)U=Hgt$-n8DrA zCrC(A%Q^iusO;<$!GQJvv-cLK%rUR!Xn!B!SI@9tz{9L+YC|;itZG#!S_06aw_E8(+eH`W(32a3pSekq#e!q=i zLt^`rhgN#L7#zNUU|o|%L1cZIQ7lcR?6R5EE@|&U2_winK!n{_&u}DZn#siF>7tKF zjhNntk*n{RJ;fW7W7r|TqK)PDSEHU|YtlXrF?(M^3$s|CpMEDzFrN>* z02`Xy(bU?BKy|G^fu}59K0&1Lbq@mSxB{66E{?S;i0wUs+$ck18BE#En-@4@2b{zz zBQt;Z07}$A!I(4`Utz-5&suWShMU3j`J3BCp71!LW73Swj6Oy@95Mx+N^H%s97=&} zXlg@e?;t!rzd#2WegFI#vC#Q@n;S|KmES1Gok+bil;2TWqs8h|c9^SM&{RRh2 z5lJi(W%}u>sbj-bC7UxaV&Z!F(QS~cMQS-5s6TO1lmgx#OLO3l%%XV=oIIBrnqwprGU?&nT3JGbCVWwcji>%<$x1)Q(-!3;bUl4&{J*sQ!b&2`p&7~6cMwYOoUP~d0%zZ?s z3ux;EXc`M$Hb4)K3OCC6@I-Hgq7L=uSPySH+}gyJ4W4dqM=vT(W`d-ll+`_DN8al5 z2hvGwVh8K`h6I){Ut(Sp_+0l&V8X)KbA;KTe~bWJ?U7UH+?765dVO#cNL=YfrN;+% zrAL_HWNJ;{znmxCmJLpqDTqYYkWwTclY-yMpX`~GWuh19(Ob1Xm>OLM|6EOwHb zTCcpkLJ)7(H@BlYSf5t)Npm5xRG~DVT?_hhMaS7IWqKd6x=xu;U#MTGhBpZY5jLt2 z&c;@hHMCf0{!s>dZ%vNjKo$z-szBYDOBpGl3=`=9w$_#rns_B$)~l*-MnnH_`XnY} z;FZVq;NkJ`8fITU#h&ELmdj|dvyWO&{M6JbrnV%duk|mEsg^5-IZmc-^pzDhE7dj@ z#?-3bxi~)wCK*J?5@xdLy|oKv)yfp3d^8|zs^2E1hh#v+^ERBnmc8byd;4RHGl)#f zk8x}0I|Y9eUntEp%DkVX7RiDF5`;zfZeUlkdX!BFIY+svy%%*&twQ*cxlIEPq~15r znnKgPM9QPm-KPair*`k#TX8t>!GBJO8O+5LLViOmg2eocbejMpW>?n~TCyo30JW#i!>J|BO;R?R07d5}u`xSo#VbxbrtQon(Q}e4B4+VNGfbQ279|o` zd^3twGT;`t=pIy6*P^q37#>pp<(M9N9Ojt$SEa?^KqTKcA|b4=uOJ*+g(8T5|9?)1 zT%ip7Kg*^hHCW;ZiKTh4u}OB7xGPc7J0$v5%pG4t-!UB6S(?MPjRvYf?+_~K4`;yv zitkS(5SbZA)J9Ui>*5EZ(LEy%YQY@ykj?Nqrk_8s+#8&2uPeP(Xzb__K457nry(du zX7}Z^SJ1q3GQ(0CD<-OtGe+H|(1q6#iL7BG96~%E#m-J954Z#W^jC>u1SV-0x4VNQ z!2~8rNe945W`fpE^X@v68|H@Ytu13~c0xM2Th-AEZ&PcU=`;!+p$+K0&0whJDs{drx14$Lm+pEqZf$Oy-zL_SNNiEX+*_&9}F= zgF_N!<;b2m@X!9XfRTXOo2C919q$Pwm}0O=5m(VWh%%LKB&Uz4^GEg~A;bknP!9G~ z)z%GP3wyN9BXd4DmeM%EGrlUv;6PK@ckO4k`;Iw3dE)UM9NC2Mv({TxQ-{9O7gOBV z$7qfZ4-c`svn>R0di*7}B!R;P3!+h2$Wcfx8rj^TFcnTGDhJPst~MDOko}DiHre1V zDTuz7PE@sZrKMJk?f}oZ_GT1Yl2sKp#`nGdN4EQpC!gHIhAdr+7A%&OpuVL89sR>_ zX7uHl^e^WMI`Txv^!wIVm$0_7h_#gk;qTd51qot?5N>bbhy?B=>9nz2O>J;8Z6nFb zwZ9QYZ1NQnl1=X3rZxn~ji`_I49pLVTG!uSV(ld5njXCi^qs=gm7TP4bzK=Z9&WkB=+}lG(Uxe zBsNgH7$Rcay+fkcSe6FlAR0l;2HS$Cp#|05C-V4+hgchbg-sh#`QS&tFfCCkfkKu( z>O=z5BaZ~2!Orqj1#t4h2LgDYg~sB$bV>VU8BvR(%&y0v3AJmcrK8!MnRtb{nel=K zju$M58NM5vvswR?Y;@OOh_kjqP{i38uqc>W$4UDk7aXyFq`GIoJUZ7jW*Gik)76HI*s2EnVrHq$v`DFe%sJF_#2wDB<2n5UZgSE-NE?d zJA(8`b~Uthp=aov+K^P7WHobtlW#^aJu#M*`&#xovmI|q5HDmdPyhfR07*naRE^2% z1d+iEN^Iu1k{9D}z}?mZXRxjyR<51ZMZw-Li&n1b8HA65qSJ_G)rRQuJXXg?rO)5c zbprLA#ID5G|r31cd3FZiod*u~G zt;{9nr9{I>tgT4bkF(tbsXv5CR;fSCOM3bHj@ezeNj3>djaA3Gs|tBbez&fAqxo&| z&Zq^G2dGc{a&Ge6)BD)p-In^b;jx3rk=+PUw6KoD*1-Kec?Kt+WcWrB|Hzy1Fb zVm>f4fZi`GuWLdD8DS-(<4l2d2>5>JK>RUYNnt2RCJI(bBPOKk)gg(AdIIVXjzc#3V!U;Ys3-evmOvsM(hkf#z9R@NWftchcMT_qQ9f#JI@chwj>=X$F&hKWURbx{tn%K!$+n~;T zHowLEOb^mqll=n}!U}TQs53y)g~0l}V@;#*^P#b4U>;F+)pYeCz)DU^C+6%sUU>Bk zjGko{n~vIt&LY4*pd7$kUPEYk9^+5%$(&xizy!Lsb#vTEdYh_Ny~|bF(*%{XP@X-w zg;g76OtTB7sqH&)N|;|yrB}QpnzG4ugKtF;nW%OK8&E-uElH5iYM5sHoy-lFHD&YkhhgtCIcGtZ=mSpF%BpC3VrUW{&l(qpS1Nn0)a_N)UN| zYQrYMFKFnMHd>l2wPOnE{OmYJ9^a963yc?AR#t}Ex+V;tzKAL@Xfjn2OF?aaB8|wg zT=WTDMAfL>Y=xR*aVrT3p295~Z!rb1ap){)Ix`~8EQFxZl|{^tK9&*`I)=^N18D4G zE-_1zS(VVmsn?j590kIDlfF~u(a=nPJNXT&&}+Ir)hCmI5r6|*@fhyj{8C^E3t6NY z>FFIpOG}5qKW0?n@|^rwH6r^@-0j^c^Hsx9s&Yiz;H)+?FMIJQ!eb*K6PE0%YHUR< zIkedxVdx{t*675R(us$+WWNfHoqcE~`>nAj*r2iI-i%^ilG21d$Ni@-p{}vTJdvFv zSc|* z9U(e9j<^l@K0&v&Jp=GJ@ZqIn^>WdGkb`>c*4I|{H0_xB_8zp7$45UAURP37^cXPx z@~N2KB(n&p7&>|}#{O})ZDXaV|U3|i77Rzsx8%>QQ8R>M1Qyv*f7^U3#6PL?XoU}iDLdO>B&!03%H zWaLB~Ti4o&w*FJ|>G$K~fWH8(KU;WI$3=4_95II`Ok4nZzwdbgV^zWOi5^eJagE zquns+;Trlm3{pe-=s=?;0-|Xe{vP@EH`0O_Y;H%#!08k&F$>aXa`Z8lC3z$@jhL*e zWYO?uX&jC*yL4*zJLft%^x4BM;>=OIB+d zNxMx!&pY-Udp6K1%DGC=diD}31g}qey2JQgX5>#VzW<#xBDtoq1s#Luz=%>`&sCz_ zR6sHP>KPU!qjIOS9E0bspqBK3W(cAjV2+8gXBZoOA}cTAc#qeIOP4=Jb&W!TVAmWM z#WZs&6zjyLRRNUw0vQppX)@J9_kT8lq-i8=@Yd?0EmI;kFj$Y~p|i;(cCH+vKDDBi zAz%FPr5K7Rv#J}K(KSRtWSK8}zwqqq5zI+WS>-hPp|e*|t3k~y(tr?S_}y23V=GeT z%S=t!-ocbn;hNC4X?D0=qW8G0s#>A`)u&{#^c@@Deyg0-nmHz|Na)QA>~4gmp;*Zq zEh$0E$@kz61k+nQbC_de#b@OE-%4x5Ai1MOlwkQS;E5%Yr_{ zQdLD&1njz_S+=uU+q!Y#(g!Fd3S2!wzGStP@5yVLDQGBlqNLJ;vOo}}{s2le|H|Yc z=F)_U`OpU+>fa>uo~gvL@~$Poq;+KCl`ZaS{RVhz8`02rQsH_@O1SlT$3#y*|L%8I z_B8F7`qnPA4-6~t{TuP;_Tc&l zpQFm38eFMQe@UNE{Q%QQnSx05&JtWjh4B4K-CmSbdQnnN)1u`9jrHODK4GTGO$niy zIp%}kURy?dc^>;Vdu6qaVUKasz-cjBLe?BB@0vr9AicW%jr3kOb@rjH@1)AIkn#yN ztDybO+R_|eJ-#h< zhbGsY{cMd+@kj{cHWJ#cJp*Xz88YRY(I@KT(Fh*dFqiG!{pcGyo7A}4i=*9-F%=dG zui?S%Z?P*0X=7k?{=zl1axkdP6pisYl8|X+Et2pG# z6IwOLI64$_?zTfKB2iuF_*w0yNrKdN?uv+7lXob|%EdhhEzV+A(sT;Uk9lQbyGLB~e$N!1Kpm!}ZU9n=qES%p%6jH?274_-KC@d(nspMEFxI0p#_PI=Jz~Nq9Ib z#*E)aean;-M5-ohrd4J~9}8iWS@cI4G1oS=rJdh2GvEO3ee)aaNMas2$K>>dYifNr z_Xr7I`Y_V3Buglh+t=Z1*{oU_?Vt4=At9ddUBw#ErWF2C}`Qtu~rJBdoXtI2kb}=`(eWQ z#M#TJA`@>80whflJiGfn!jgP9US9z3UHMoLtY!dyP$?$##8AKk{DBtpgIuEfcUABvWNq}J7$VAlzRJEBE$5aUq0Q@Dm>I|G=MQAQLTLLdAO2j-Jjq_8S2ls9nRjk| zjp&A4e@`G#gP(o=_oc4O?BH;C4R>yTiZ%_wtR^RGv+CJ9L3y#yOu(SP=`DFITNU#`}O z!)wcUVxwK)%=znL;-|hZMo&PX2`I6LH^2J=JCbwzx_bt3{`~s|JszfMZr=O~t67Lg zlY(f~9MjB_{_SXI3;U6E>}`ak>EH^wqbwh$CM2{=4CPj7n6-XkRq>^&52?S%OfnnF zkTl06McT2!a@IS19t|y>N+@K3By(#siu*UdknW)C?LUpafzvwT-%J(>-f}z^!}s6( zTI3RC)~QqHF(^u-_7(#p#V@>@wOQX$`Bz^gaz~6xL`hS75Q~U05{FxH9N7S*+PjVX zpCZzlxxyND25M$7Pl_g21xO!+g_hw47O`-VQ+as2%t!<*ubvYynag`;|SXN-T{%KNzFnw2N&dvj+KBy6+;Kx zxexI2?sv9EOOU~T`0~e6tXz9LJ9v8Ud&DGtID#H7UHw#-G*`u5eUMsNb$x9aKiDW! zvaH8WJiF`B!yhqD%9dOl+Ma(wjhOBulGEmBcUuS`&F{M=d}5nRO5yeg(9}OHdQS>T zRvVpsWy2G~H(Zg#2xeGv!lZSPST(f`xN`mT zEIwi?Kw4aw!QCI_%aot}?9Wjxauxx_|Kj(8%w1@UL;{ELn3#V| z0hFZzmcLAUpK!V>MSifVsYQWT6_~6xbMm9>tC+GmT7vMbQ|htAn`y@gJwsHwI0pxdn5x6S#l(dzn*XCw=iJ=-X;W*Lddks-r@}Q zBVp+Qi_&*y^8;dNO=BCXTiS&dOa>*&o0I`d5~fyy5vX;UsV7fefnnxA2Bmkw6rjb+cx@cKK|rSP*COci4OCJ=E)ZnN88)CXg^Tx>FF>mKUV9tFqFIKl=G!qyZ~Z z3GEd0Zf$i5H{OzuNNxD~^$4Cly>E&A)=~Z!|4U*&w1UKORyw4%HFYop5kj{-HMMa2 zgUXao3yn@zYR6{g_+W1z3lpQZa)#Pf(;T1V#3@&WNu?t@LYvpD2;yxqt3+mzfa$Zp z^B3YH>3Gl7i^_lD1gJlJ{VSPMi({`|{UfxtDX1H(iwFvGxO?M!9%%wPo6^)M`q{(z+C27uPtespFO-~ z!!%dp4Qz0 zvvMG`sp`qv|MdP1ge9+o4er;IqcoH|$k2=qCbXmY!&kq;zGOmsVDJovhc8HN&CJZW zDCb#SKZzhx=*lW8LDO6A@xtZxi{I?Q&^FPCkJK0R?ZMVEs|_@T;iY-3&Q4-Sa%7ir zgK3Hf&s~L|12)YFk@5&3?~k+}kM4XcT?=k#Y{ivppQiTC@B(Z5#S-6l-~I+$l8ASj zWtwN1b?esGn3pJvz7;_%;goc5l?XIkz5vQ9+```@0$gZ5Jz1x!%JjiUu3C65&1V#9 z{W&)yA(1EC-i%5&L>V6lwR&?$FS)gQt12LV z$}4>+DOKTEs=d`$Z>-c|H8X8DI_BreflV{KHa~^X;+&;u&dTn)JwDN2?5(O+-2v_O zFmVrZuyS#P?429Gm!<&e?is+a3a&_j9Wv|Nd;7b%d;2>qNzx-bolgAu-}|pEgJRd# zmhsIWer;vzlE)M-h~&9(RS1pe^!SwDY`P-di25~IsW7tS^)ld0CR)-Oid-?r98?_- zhp@4>j97RThegZ~(49Cjd=bnYDn4ma4=bk9gxMjZwy(a4OxrxL(V%ta+*NdS_nVdz z_0ND{2PT-Or`|{j2@n3Wzx$5`&9IgA=FJPRtS7Sy5=5832A;+il(XqdXhOqO(Hs+< z(tN;UFvn~nkFBpDvb-SXme3#M-xYH)q24!qUgQi*a?L{431==r<$%Qr8&d^7{Nzs% z4Ax~-n2d^m^vKVi-NV?c=hEBo$shfxV12c+?%%tCNl6sAoFF>b;_N~>qua(-loJ)K z*8mxVsMBlM$6=0%ePj}v@HCdlNH4q@Sr^maIl}e07GY;?UHxe98&aChO=`zU1D(Sh zr(Q_l_KhzP39U(8vddM0k3RVmK?9;MCnhtNx@W=@zkK-=&!63wM&Mk$^dUOcCa_!= z$VB!ZzW!T;LUI`h%YsOa=ML7xUDpU_r8i?5x@D78pgE?Ww@)nO&X(}^_`{xKnqSTb zd0RQr=8hh8^qo?gmI^S(+N&x+tKa-udbkc5`mbL53~qO&ih0aU12Q!^hKCP-l%` znElxb$${QN6aECSw6>mpwD+7;h?TNg1dHZa^M^;DJ;2m>s;kZFLu_v8029tuso@qE zXL0w=cNsk+`M!^Q*jKK6lJ79l2JroNzq2vH{@Q;O=o_;|^HUM57ec6{CDKbq8L5d} zLTM4D%mg#F9s`Q)jS!-%i`XI%L$Vr>cgJiTK(H&*G#w{Sp^RKM1)F1KM+x0$w9E;h zGK+x_H5C)iN`JZP{20u!{+u+KH-Gp_x?P~ArVgKerT{B)twl8t@`{SJDZ@>MGB}9z=9Gs2v>1TfqrgCzv z_4O6px=BHoB>2iI)*Xsi# zXTkK4W38+#igwXm`s)%aLlCL`{M`en5YYQ{=)5Ta)uuUS_a7UQLNgPHOGa1{_gB!N zOwR;@bwUU$wNV&FGRIotncDE#quaK8-S+k#T)O;`a*sL8v2hc={PLHGNLE)o9xp!n z_>bZ7_;T*4T^}?}5UKsVEgd2^sF06m`h=EEQWkT};9@rxMRa8Wn`_JOl=)5iD-MSk z_{|QyrnXL$mXRa6uw=Cs9qZv|@y!j~z4f(C`d|k>`0#U(LfDEX)JqSeT2?<~R%N9J zAAIp#oe zyTbAzQ8z{=hkVzU6hyMW)}A^q@PEaQjyZI4H@=DG*CW`o02|MD(Z&9E3LAN9=mWO* zofMNk^EEoD)-Va!(8_k&-)HYtAprIOqtEY)AjMAliPwAi%Etn%n#vkl-<2P4eT_K@ zWDL*D^4|OJe~Mt9>dFc!MQ(p%&qowA9UXnBtXF6LX2Aj4sU1@bZY<6rGC%#!nPEOq zufH0BU<0b_8sMv{K}ng89^@FzF{?dfRL2) z_QL0{5!z6YcxIF+75!FBbNuYd9juc7(dK?=xx>Lhl5;AECfRl4#_zEtNwG)MeEox; zgFHC7R%m@yK+UAnH;(K7DdB7DhF2p5FG}q=fxWFbmR>%^o@A0%c2lh!Prr|7Ah*Yh z>e?m*8=6r;8n7!? zbCZ~z9!FfV{%X8AYQT#ZKR|m&uk9@&X!WZv?dB2xEH4y{)uC^{kx!UATz~vOC4z#$ zCk0&1O17!f3fXGMI~!r43Ey^9TwYNLUv&+9)wROhmX()_G929vZ4REbAgp-icztyl zuUte>;wOvLi@l)nzW2=x>5i%Uy0%Rt4az4#MlNfs56JWU3_-ewO?j z3#?qW%`wZA`@2H$Cf~fonvD^@+4h2oWHDMIPaZGdUfQiS2dabk+0XtwZ>^c%Z^s99 z)c^C}B#5k*O4ynttH}Vn^7;ifLn}pxVi9oR_Ef>+uZG7TfTyY&F1JT$1}$x3C!$X# znG1}L#Z;_l7?Jf=tgg%>5?YsrS>+NS*0#@{yMhi*dr~b|K7q^j?~Ilo+`lPJO~*-7 zmoI;8>1&@nxg!m}b+r7;?*-*ZA?BDSZ*6i6k@+cGd9iGFM?tHuZ$WKa7hG;P$SI?z z8Oh1lZGp2orTOH|u`qM-O)Sn&iH7){tu3Jq?MB17p76lHX$+lw&sOqUe_jSnqoa@U zV&swZb2@$I68igxEeYb}#4Fst|AVDtwSye3|J{xBsREMb7>)#D%L`bR9N(4oD%Iq2 zRZSi0J9^OcE+eyNR9n#&e?a&TKMiZh?w5q+{9KqD*nu$9TJq<%>U(k zc*cLHHE3z=#JO`57@=AU=>$ z;7_sGm3R8|MbU~-tTj6`fjf7;l{U-F9sc5v|DmNoh1W_K;BS8Uzk%~qtgfUW+VQuD zpk8?KNFb{1E(Rijh8DD*I4Pz8sLIZqS5W&$Gdd9ob4;}N!QP%gDTh`Tg#gBXqMWC3 z-w43%?HR)9GZ*b{sp;n^9Mpy@HX`{GCx&t6>?Nt|kxiOA+NlweK#Tct;8Y84#v0`bcoY?9T z7A0rX>92|raNE!s_=61!_jOT9iw4Y~dd(C-j*gh08Uu$fa@2wy)Qja^wQ(TLA7THb z2-XOwY@EjQBVx3~4_{){1`6EgtHOsL{Q@lU$*gD3?&GC|djnMqG4xB-ah{95JUQ_5)0p|Gda37l+VN8uZM^qA#EVJo_97~~VYHr8bvsaXs z&>}Csa1#?R@#HZ_OUS!Wtmd3Qe?3W%W%csdKmF|KJ*$Vq(MgS%r*>>a7qhu(k&~Dt zoKd|HHuVgmu2q>oV#d{CiB2TPH762>f)IUWep>i|b{>G`9kh8M-63i}){XhFtwyA> zU&m4#VP6Cz$S%Gl%pdmjaFkr`?mgqV$Ht!H$>TegztYk9*SCa5wAyz}ZMZu53gP)_ z%U_~DFxb+L*1l7MsOdP&G1DwlubyHfv?dy{-o?dA$>87_w6*sLEhzhtt=<#!h73?x z*0bY^SnX3WyB=Bo8%Nh)-%@-;i+#rgGt7@X!cI&+NMUf&HGBaczk+E?HfLoCOqA=& zL1d)6X1*XB>#LY}`50T0v~E@(Y$3-nFIZk)f%^I;oEko#w+X3`@8V}g^7{S{n6WvY zgXdr+g&NV$qC3D+qSfW-7J`_=L>h#IAlI2EcWt4I>)N`}(l?YukL2E2+g8)f%6qE%{YYEj?Nf`*1>kRrq`pw;R%u+;eC#S<}h%&uF){3QoLvT4fB zk}dN&y8q3OO0bdziEN|+S)UolswC4B&tB$qVd(0|$>BU1sArqWYBIgPes)g;BX-P> zolUm#8Jgdw<~DS8^}|n&NHLDX9-`XH_bOAUr~m*4en~_@RB6YsY3a`GZ$yNASilTy zJ9NeR>*QqmCr|ELzVxIZ=B>l3nsM^ME$IQ;yqbp2J~RubH+P;;#vE_QV;FsKOO)S! z%0(XmNCvn0kD8DCGYmjlTRYL%*eW7TD>NX*xOP^6IEI$yaKmOcL%R-YZ9>ipiQ>sP zHY$_8=@A;yFdZq&2nn)ny}9$PbUBY8)!uVgMXzwN%yBflhVhYyf}s4TSoHS@*Czu4 zbAVO;Y9WLo-=@B7M)%^lu9G!nPIsD~ek09~ZM-JFP-o6w7DFHl38DzDurhH<`+i5y zU;mhJl%xoJ(%2n@dP;!{HrH1$D>>MjrwG(Hqhsi7mPt&RAl9U#kOj&`bNu4rO>DhI zA*87dRM(=WwhqCXdQ^IR;(p4UWhx<)hK*D-{@V~j251Y5vlw~)P~ahp;hM05^8U3? z1;0-rOS-bs^RI6vSno9=QdAjCtEQ|@y~e66?XAOsrtW?;clE29BIS=}^aAH7HEM*G z%w0aee*>{dsE~ci`dPLWILn*@@$C=PfTJVW%+4`m?DW&8(}cjO5@(imkf8ywdNUM0 z^2)GeH#Rnc5QjAt0yxoqvCHMg#~=SfX!pWa0>At1|09L+arFJ$+sUXoSI|N!ntk>F zv2{7B3JQ7qz!?Oa+q4>rl9DlKTPyW$PVbx?eS#H>(~M*`ljK5ynp)*25QJZCGt~=P zn$Q_h-N$N<6QVsc6j}q@HJ6v?#bkhDQuVQK`P_R~(b_6EVajZe*%$L)e*J$*y&#Uh ze|sm9%N!^Dgrh@@Ke&Zm$-sa;!`){t!50XMYtEJz%x8|N3FanWV)o6bbm2aiKvMH{ zbe#Z)Z*x`(wV`s)>Dn$=1?aeZLgoUg`3PiXQkt6ZIO^n77AH@h15q}`i0o%)CvaPG z9IxYqDu@|1U&9-}zq5_W$G5@XGRx(zME`{kP+s9q(}Xh7G0k3hZ3&}~ek@9!keglM z_Mo}7O9-K>g22)GheK#VPN^>r z;wK>@_lb#DQkUcC|95v%2<D8~gIFvoFp|ac`SLv` zzK|Uqy%;`y2`*Q00JxlL_5F9hmGTe8uJ`}DySWkC>XTrz{M6HX(*4RrUJqXUFne=W zp3)*Oa{R?ZEZFF?Fg}R-rdIR~oDu031!|=?zj=f(OG?XXbW9u|L8(MZQ{&O>3N3iB z|JDRgzaJFB?(PAcJoR2tQQ%A=J$!IWx=TzmMb=CTG9 zv|KyZ5+ITFWxRZRM|v8Qe$z=g(%#jF-u^Q>0``>P>Cr{SGRGvE-`U+kEEdN6+%)Fr zXQX+n^Jz4@|4#g8dwUnoz4v~>X&U`C@WoOF3cZ%TG{?Zdr$$U+0<%G|Hp6R}9eE^; zXsK`OLg(OFTg_Q)L3lm#P{6tDu5yM5np) z1lmrVOz*nOXO2}3y%`JR+3oK{q-bX`3O;+`I;w*WC=p3}qtF%495bS&*`1ntE$BSx z*Jd5pVCQCv@EKNt&Yr!BhQ{V(e|Qm2n>@v>n_pvoe#+Jm%Gb~DW6>sziB*sOQ|}2)m>N%3TysoG|8``?iHFPd7@HVYE3&87<2eu>SU|kd5yZn(7m>h#SCdlC4y&n(`tsHxvPxirT z#}j-pG;|it&FvylUkHF9*EJA!MtYHj`Dt6xKQkC4iU0orl|dyQc-*|`00000NkvXX Hu0mjfQ}lN{ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index 5da522d6c0b75d78d75b8ab319ed6c34d7c6fed5..633148c8d6f0ac10cb77890f333a84b10302c1bc 100644 GIT binary patch literal 3725 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 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png index 80e38e2ff28dcc9b0f266bf57afc6f3b76f063d7..633148c8d6f0ac10cb77890f333a84b10302c1bc 100644 GIT binary patch literal 3725 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 KMNUMnLSTX@PT_d~ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png index e3be31213b1941be1efdb74e26c502b4000a5fa0..75025cfd5ccc1702d5ada42072626e319bca6cbe 100644 GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJ#^NA%Cx&(BWL^TevBYiOa8=#m>A6HCPjVkZYObfr{UWtcQ6L zcId82n8C=iy;YRQxZ&Zp4NZw`26x2549+mL-9E(CCV8MBI^v)KvqT=ZwnQ4k;oMP8 cxC6p2?e@Ae%99+g0b_^3)78&qol`;+03#ErYybcN literal 9845 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 literal 3348 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 M9V4w84g2u_0O8GAhX4Qo diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png index c8aa409bfd733268b2a178f858eea25d49b663b7..1e769fbaaddf99fce1ac901283a569d89a83a3d0 100644 GIT binary patch literal 2081 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 literal 1833 zcmchYSvcGI8pnT0#J)VLbSA}|rwx7Vrr{V>S|pVSS|MsLHBw@&5T}dwuhnX47*PgM zQcFfOmP2h7N1hs0{DoRtTSbqhjkQy>W2-Uub2B${@xI@y@Au~YJn#4ZIX5R2MT{Z< zK!rraQ}#9T&ykni-@9fdltFn*!b4|ydp^JS zMt0_obaT&k=k{(@b^}}ARXimL+)fgYZ~JxF;q#2pA9^NYwGi-_nLSVn5+976kH&ig z1`om|9(|6?!=VdX4y$X43Js>=xA$tnybI#e%9#|j`6b047*gekd0M@W)Q~MmRJjRLu;j95RGXE zp#cv$sw(>X-Pc@dEHfMjAai;OJ*M@TBC2%U2*iKuJIU@IOz6Yj>84i z=+9+S;WN+uQRK|dE`&eDVMZJDgL8`9ZB3yo*6IrO2VKa(-HR=ZPy?qlt;ZRl5nYRh z+7Ua7LAFq0x-be&+LhdCLDOh{s8Iw2y#=Qyc5W=aKe82#`1mhUGCb~&z|{wULgi_h zIUn%(?5Y`|pWAqEmUY|o_`+KKpT_d8$rS}QGX-gBxQ!BF+3lB%igJ2;Qsq&(b3ws;5sts7p;{1GoNm2Rr_tTt&u~Yx6yz>mvnwq zEp+&_{m#T{C#Md@^RuY`7EGWPeGR?7{%G^2$59iHCc7 z$TVK%-5#$)USW^vU+-gY^7%ebQs|-;=f;>#g}(9B7O;o? z*)g7`1>Fd1RCbI8sj_C|CG4_VvS#Qu7#*A2R2|k-(O{RZY~0Udy4e7 z(P1mmpiGW#G1ZT;@p4^EiCYoBK%3)iWJDA&WF#*bF4OEDSt07B2B2`b&6+MQa4}8h zruaURT4Qsxnk`pFVq?fw`SeCtAkVcoAiRqoFn>aA)2oJaSpkMU6*(tftX0r5;xnquFLEzdcJb%dxFpmmk(nZCnoJ zq~E}g664^L#2#q|@}mWm1O#YvPT9C+mG5g2JN8T27wY>r1|0{Zp3i66;96Bhu7vVE z2`f!EmHxKS{!@Q&pit^Nh9q~_`Wkmxw(;YIOz7DuR>wvi6}v}n>~rz(HpKKVUVdIB zov8OEe6ZU!wKdrXvU2!9R_yNeq>|`*W|kRhlsC#1=8FPEs9DmkRO_Tfzja{ zS!`o({vN%^AOGroS=<(S^fit5(xxuUF+}aP&7uk6=0u;^AL`DG(7UnKQ|5d@um8Z= z)h85OeMoxADpzNY&>6DPsQp5|4&(-IZB^Kl7FzUVrp~rn%sDmeAMi@~2kL>z;iti` zE?@_8?UZ_Dy>IdS$u{P@3aM@$y4bumPKI)s)&oPVtq~@G7*-l*3w2^G8O5wnw6VR0 zKvSo5eCsp07-h12Ug&A!Q>b6j!+bFA8K#RL@`;G!f5-gV_@kV$y$5H{5^S-5lqIp6 zRU&E3aQCS}tA5V0p|qg6Xsf1%?I+h5K1lL_DbcaSu}YFZmO)^}`nnUn<}NUHBxUN) zR1ydgYt50#4F=BQH>yF_L(>2I{ljnmubX05E_3JS>zxC~lJ>g~kO*%0YKNd(e*oIn BTxb9Q diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 669ec923035aacb0ade50d5bd9491d6ab9dae4fb..ecd30f349ff147c8a2f94afcaf44e4a13ad455a3 100644 GIT binary patch literal 6155 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 literal 12199 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 W>@w-idBVVQkHOQ`&t;ucLK6VS1)#hD literal 23291 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 B7X$zR literal 8218 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 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png index 0915b5d9c356b26e6671d3342c8294519da8797f..4c4449d9a185af65b278ff976ab07f66a941528a 100644 GIT binary patch literal 4828 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 B7X$zR literal 4545 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

C+3OOun1Sk@O#P=cM&_AwMTh-h{!$`t5y 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

S#=Lq}F=m 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 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png index 964f314bec4716fe85c899b10df1d27feee6ba97..04ef206c8607696ac2bb082bb1b46afe648f59f7 100644 GIT binary patch literal 2949 zcmeAS@N?(olHy`uVBq!ia0y~yU~~at4mO}j{44ikK#H+A$lZxy-8q?;3=G`%o-U3d z6>)EG8ulG>5O8(;{jXh)UCq(y#nb&}@0P4~_djs&`JCdP$_@<-jjzRA);BOPGOce= zsN!Vd5ct8tv1mC^g3<8{8;5|x2i*t4i^Ls){P_ZV8JSo(ezd&c6;N<^u)JaY896qf zNKNWDkirMro6SMm;%9=D{Sp2kz34kg-+sj^W}vx1E?6Fw+oCr+80xT?s3X+Nr3C<1z=I?U6nOK?{6xdXhSvYbyI369Fo9o%&ARut0A*F?(k(bf& z&W_ExoB|w7O%fA&1Qa$XDs)JfZ&PJta&!=2o+QY`V#dN!`1ss56$b?ljwA;or-lP< z4GMX8Zcbz2U}1FR@o?i1xB)b-*ZTG(hDHU2j#0;qhRkT18O=?j<;-XaJX#%$R+OVn fh>_N~dcZhk9Zv&m(8UM9b~S^itDnm{r-UW|d%0b> literal 45895 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 aq=>DP^rGjPrSMoalDv$Hbcv*i|Nj7Kr(tsd diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png index 94a7e559c688e8cb117f9995f4d72da94e60cb77..b2f9e0a8f711682895563ac94914ebb72f91f3a7 100644 GIT binary patch literal 9278 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 a;A=3rgZjzz(=2#%79c03C|MzH5bz(S7oJ!E literal 32729 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 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png index 5967d8166188df1da8c5ee3e4f4d54976f89f538..66a5487a223c9db9c415a840b4451379ec15b214 100644 GIT binary patch literal 4232 zcmeAS@N?(olHy`uVBq!ia0y~yVB7%09Be?56MhC-K#H+A$lZxy-8q?;3=9HJo-U3d z6>)E`HgYl;@Gu=L`@c}Pq`UnzOA*_i+hsD0Oe`D%9h@=DV%a`1AodR?wlm5C3Jwhp zK?fRCvxR3d0G05}kOzt|G%jgi^uDHM0@5U5U=I{wWb$NWp0>s}1Ekd;p$;U%GKq;z zCvx@$pol`kfj=M-4i#3Oh)re-Ie`WrX!r>d5%A!W*pQOzBn&jTf$=jlNc98}gM^c} zTGT)WGe2Voia01}CLEZwmD3kwFxwgaQHPC&*k~FX&6T6Y#b^OLS|yFvm7}eT(e~JA rLvgfeJ=z%=?In%&D{0abZ)CTU+U*^ZZ*Bq{T43;W^>bP0l+XkKmD4lt literal 61320 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 z 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 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index 2ad258e3f11a04a16f415dba4713f1a5f5be4b14..496078ba6257684b555b3bcda98c99f2ef7f35ca 100644 GIT binary patch literal 11677 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 R3iMlJ$x150N?#kl|9^VAtWM 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 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png index 7e1bbce34f49d540b2fe6ece8226304d12cfbadd..496078ba6257684b555b3bcda98c99f2ef7f35ca 100644 GIT binary patch literal 11677 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 diff --git a/app/src/main/res/values-night/splash_theme.xml b/app/src/main/res/values-night/splash_theme.xml new file mode 100644 index 0000000..52e8d48 --- /dev/null +++ b/app/src/main/res/values-night/splash_theme.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7ecc335..4b6ef53 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -57,7 +57,7 @@ Создать файл резервной копии Резервная копия сохранена Поддержка бэкапов Kotatsu - Etsudoku также может обрабатывать резервные копии Kotatsu + Shirizu также может обрабатывать резервные копии Kotatsu Лицензии с открытым исходным кодом Нет источников манги Включите источники манги, чтобы читать мангу онлайн diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml index 65aabeb..da2b30b 100644 --- a/app/src/main/res/values-v31/themes.xml +++ b/app/src/main/res/values-v31/themes.xml @@ -1,10 +1,4 @@ - + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 86f899d..9c0fcca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Etsudoku + Shirizu Settings Feed Search @@ -167,7 +167,7 @@ Create backup file Backup saved Supports Kotatsu backups - Etsudoku can handle Kotatsu backups as well + Shirizu can handle Kotatsu backups as well Open source licenses No manga sources Enable manga sources to read manga online diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 14aa48a..da2b30b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,10 +1,4 @@ - +