83 Commits

Author SHA1 Message Date
Jobobby04
04dc4ef66a The crash is fixed somehow 2023-03-15 19:01:44 -04:00
Andreas
8ad53c45e0 Convert source modules to Kotlin Multiplatform (#9172)
Use KMP in source modules

Use KMP in source-api

Expect LocalSource

(cherry picked from commit 1abf01c4a030b089e6300cb284cc93f7ed323a22)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	source-api/build.gradle.kts
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/PagePreviewSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/FollowsSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/LoginSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/MetadataSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/NamespaceSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/RandomMangaSource.kt
#	source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/UrlImportableSource.kt
2023-03-14 22:54:50 -04:00
arkon
6563490513 Remove dependency injection from core module and data module from presentation-widget module
Includes side effects:
- No longer need to restart app for user agent string change to take effect
- parseAs extension function requires a Json instance in the calling context, which doesn't necessarily need to be the default one provided by Injekt

(cherry picked from commit 93523ef50b80ef294866bfb0da54e236cdf2d9f6)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
#	core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
#	core/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
#	domain/build.gradle.kts
#	source-api/build.gradle.kts
2023-03-05 18:33:57 -05:00
arkon
148268571e Start moving some Compose components to presentation-core module
(cherry picked from commit e3cf8632305283468a5e8366a257d6d6880ca1a6)

# Conflicts:
#	app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMainScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
2023-03-05 16:03:12 -05:00
Jobobby04
70b83e1061 Minor cleanup 2023-03-05 15:05:54 -05:00
Two-Ai
0339001451 Replace RxJava in DownloadQueue (#9016)
* Misc cleanup

- Replace !List.isEmpty with List.isNotEmpty
- Remove redundant case in MoreScreenModel
- Drop no-op StateFlow.catch
  - From lint warning:
> SharedFlow never completes, so this operator typically has not
> effect, it can only catch exceptions from 'onSubscribe' operator

* Convert DownloadQueue queue to MutableStateFlow

Replace delegation to a MutableList with an internal
MutableStateFlow<List>.

In order to avoid modifying every usage of the queue as a list, add
passthrough functions for the currently used list functions. This
should be later refactored, possibly by inlining DownloadQueue
into Downloader.

DownloadQueue.updates was a SharedFlow which updated every time a
change was made to the queue. This is now equivalent to the queue
StateFlow.

Simultaneous assignments to _state.value could cause concurrency
issues. To avoid this, always modify the queue using _state.update.

* Add Download.statusFlow/progressFlow

progressFlow is based on the DownloadQueueScreenModel implementation
rather than the DownloadQueue implementation.

* Reimplement DownloadQueue.statusFlow/progressFlow

Use StateFlow<List<T>>.flatMapLatest() and List<Flow<T>>.merge() to
replicate the effect of PublishSubject.

Use drop(1) to avoid re-emitting the state of each download each time
the merged flow is recreated.

* fixup! Reimplement DownloadQueue.statusFlow/progressFlow

(cherry picked from commit bd2cb97179de60dded147f1ec9cdb55f70f28e74)
2023-02-26 20:14:36 -05:00
Jobobby04
beb28b86ac Support getMangaUrl and getChapterUrl for delegated sources 2023-02-11 20:03:26 -05:00
arkon
bd0eda0c65 Move more things around
(cherry picked from commit 1730dd6af1f5a9e6f8752a2350b1bd153262a751)

# Conflicts:
#	app/src/main/java/eu/kanade/data/source/SourcePagingSource.kt
#	app/src/main/java/eu/kanade/domain/chapter/interactor/SetReadStatus.kt
#	app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt
#	app/src/main/java/eu/kanade/domain/manga/interactor/GetManga.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/AboutScreen.kt
#	app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/App.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
#	app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
#	app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
#	data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt
2023-02-09 18:08:07 -05:00
Jobobby04
a51c25bdcf Handle getImage for delegate sources 2023-02-09 17:44:21 -05:00
Two-Ai
acc3e16230 Fixup HttpPageLoader _loadPage (#8984)
Fixup for e4bc8990 (#8955)

HttpSource.fetchImage() uses Call.asObservableSuccess(), which
cancels the call on unsubscribe. This causes the call to be cancelled
before it is used, leading to a "java.net.SocketException: Socket is
closed" when trying to use the response in putImageToCache().

To fix this, use Call.awaitSuccess() via a new HttpSource.getImage()
suspending function. This addition to source-api is only intended for
app use, so it will not be added to the extensions-api stubs.

(cherry picked from commit b4b3a4d2869fae7839b4b3111e289056e33cfea8)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
2023-02-09 17:27:31 -05:00
Two-Ai
1948545983 Replace PageLoader.getPage() with PageLoader.loadPage() (#8976)
* Follow page status via StateFlow

Keep getPage subscription since it's needed to load the pages

* Replace PageLoader.getPage with PageLoader.loadPage

(cherry picked from commit 2ef1f07aaea0852c13a4eb4096ac96c8aa507c39)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
2023-02-09 17:13:29 -05:00
Jobobby04
a9edf090c4 Lint 2023-02-07 16:50:09 -05:00
Andreas
64d829d304 Move SQLDelight to data module (#8954)
And use tachiyomi instead of eu.kanade.tachiyomi for package names in the module

(cherry picked from commit 823749fc1ed16dbf52d43839888a70de089d65b1)

# Conflicts:
#	app/build.gradle.kts
#	app/src/main/java/eu/kanade/data/history/HistoryRepositoryImpl.kt
#	app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt
#	app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt
#	app/src/main/java/eu/kanade/tachiyomi/App.kt
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/model/SMangaExtensions.kt
#	data/src/main/java/tachiyomi/data/AndroidDatabaseHandler.kt
#	data/src/main/sqldelight/tachiyomi/data/eh.sq
#	data/src/main/sqldelight/tachiyomi/data/eh_favorites.sq
#	data/src/main/sqldelight/tachiyomi/data/feed_saved_search.sq
#	data/src/main/sqldelight/tachiyomi/data/merged.sq
#	data/src/main/sqldelight/tachiyomi/data/saved_search.sq
#	data/src/main/sqldelight/tachiyomi/data/search_metadata.sq
#	data/src/main/sqldelight/tachiyomi/data/search_tags.sq
#	data/src/main/sqldelight/tachiyomi/data/search_titles.sq
#	data/src/main/sqldelight/tachiyomi/migrations/16.sqm
#	data/src/main/sqldelight/tachiyomi/migrations/24.sqm
2023-02-07 16:49:49 -05:00
Andreas
888d1f0983 Move shared configuration to subprojects in root Gradle file (#8951)
* Move shared configuration to subprojects in root Gradle file

* Missed but not forgotten

* Review changes

(cherry picked from commit 2b5d9fd76b9b7b629921bc793553cd4a571eda00)

# Conflicts:
#	app/build.gradle.kts
#	i18n/build.gradle.kts
2023-02-07 16:12:31 -05:00
Andreas
34b60a435e Create plugin for linting (#8942)
(cherry picked from commit c31e75f02f3021c52f6c24f655e2bded0c8b2b33)

# Conflicts:
#	.github/workflows/build_pull_request.yml
#	.github/workflows/build_push.yml
#	app/build.gradle.kts
#	build.gradle.kts
2023-02-07 16:11:25 -05:00
Jobobby04
708b868e7b MangaDex OAuth
Co-authored-by: Carlos <2092019+CarlosEsco@users.noreply.github.com>
2022-12-20 13:34:01 -05:00
Two-Ai
5a449ec80a Track Page progress with StateFlow (#8749)
* Update ReaderProgressIndicator documentation

ReaderProgressIndicator is not always determinate (cc554530, #5605).

* Track Page progress with StateFlow

(cherry picked from commit 593172f891667c1510d1812917cad93bfa362363)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
2022-12-17 22:56:11 -05:00
Two-Ai
5eca2bdf28 Cleanup Page status (#8696)
* Cleanup Page statusSubject and statusCallback

* Convert Page status from Int to enum

(cherry picked from commit 6ca32710be5bfed851ab695a0d9438c7ab609b24)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
2022-12-15 21:21:04 -05:00
Jobobby04
d8ba1774cb Cleanup unused strings, fix a few accidental unused strings 2022-12-03 14:37:04 -05:00
Jobobby04
797a9e6b4e Support new E-H/Exh search engine 2022-11-16 13:07:38 -05:00
Jobobby04
f06c8ef2cb Fix page previews only showing previews when the manga first loaded 2022-11-10 22:49:23 -05:00
stevenyomi
e94f9b8a2a Revert "Tweak how getChapterUrl works (#8392)" (#8427)
This reverts commit 1a25cea0d665aefdc422ffe074d50c4a72fc0fe8.

(cherry picked from commit b006fe3a2246e5ceb9bc08d01971a29a678e33b6)
2022-11-10 22:11:08 -05:00
AntsyLich
9cc5831689 Tweak how getChapterUrl works (#8392)
(cherry picked from commit 1a25cea0d665aefdc422ffe074d50c4a72fc0fe8)
2022-11-01 13:36:54 -04:00
arkon
78d87b866a Upgrade to Kotlin 1.7.20
Also run formatter and address some deprecation warnings.

(cherry picked from commit 26a42ba9c01c670f60bedfca41bd72c99aa2a278)

# Conflicts:
#	core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
2022-10-15 12:09:30 -04:00
Basara-Hatake
7fd4f5ee97
remove dead delegatedsources (#701) 2022-10-15 12:08:26 -04:00
AntsyLich
41542517f7 Add methods to get manga and chapter url (#8114)
* Add methods to get manga and chapter url

Some fork supports directly opening chapters with webview hence `getChapterUrl`

* Review Changes

* Add since to javadoc

(cherry picked from commit de23226591376e998e4ff1ff7b2d4c2a0a805b09)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
2022-10-01 19:16:27 -04:00
stevenyomi
20a4a3af98 Remove cache control on already cacheless image request (#8085)
(cherry picked from commit f4c684b4b8729fb91b685f9990b33ba344dfa9c2)

# Conflicts:
#	source-api/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt
2022-10-01 17:38:10 -04:00
Alessandro Jean
2d2ee54c99 Add support to update strategy on global update (#7902)
* Add support to update strategy.

* Add JavaDoc and bump the LIB_VERSION_MAX constant.

* Fix a word typo.

* Store update strategy enum as integer in the DB.

(cherry picked from commit ba533f30ce70bdcfbfaaae3e7758dbe38fe6fb1b)

# Conflicts:
#	app/src/main/java/eu/kanade/data/DatabaseAdapter.kt
#	app/src/main/java/eu/kanade/data/manga/MangaMapper.kt
#	app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaImpl.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
#	app/src/main/sqldelight/data/mangas.sq
#	app/src/main/sqldelight/migrations/20.sqm
2022-09-25 21:04:10 -04:00
Ivan Iskandar
35b71e2ceb Adjust source-api R8 rules (#8064)
(cherry picked from commit 747cbd24cb93a11ea15b4c43d3118e226848744f)
2022-09-24 23:14:22 -04:00
Andreas
5d1dfb5290 Split source preferences from PreferencesHelper (#8029)
(cherry picked from commit 30b3b2d3ffd5d90aee293e9ae22b3cb2a4924c2b)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/source/SourceExtensions.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesFilterPresenter.kt
2022-09-18 13:08:22 -04:00
Andreas
41c9c20e26 Use 1.x preference abstraction (#8020)
* Use 1.x preference abstraction

- Uses SharedPreferences compared to 1.x impl which uses DataStore but it breaks all settings screens currently
- Move PreferencesHelper to new PreferenceStore
  - PreferencesHelper should be split into smaller preference stores and be in core or domain
- Remove flow preferences as new PreferenceStore handles changes for us

Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>

* Fix PreferenceMutableState not updating

* Fix changes not emitting on first subscription

Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
(cherry picked from commit 0086743a5311c22fb8c07f596ab5de384862a68a)

# Conflicts:
#	app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt
#	app/src/main/java/eu/kanade/tachiyomi/App.kt
#	app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
#	core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
2022-09-18 12:31:49 -04:00
Ivan Iskandar
01710d7b78 Upgrade AGP 7.3.0 (#8016)
(cherry picked from commit 4a3070265a76d1a236abbcd5682ae753c31cffc8)

# Conflicts:
#	app/proguard-rules.pro
2022-09-18 11:50:06 -04:00
Andreas
8a322ea28e Extract source api from app module (#8014)
* Extract source api from app module

* Extract source online api from app module

(cherry picked from commit 86fe85079413f8ed6e1109b46e6131a9b788b988)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
#	core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
#	source-api/src/main/java/eu/kanade/tachiyomi/source/Source.kt
#	source-api/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt
2022-09-16 13:49:41 -04:00