Commit graph

76 commits

Author SHA1 Message Date
arkon
93523ef50b 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
2023-02-20 19:02:38 -05:00
arkon
e3cf863230 Start moving some Compose components to presentation-core module 2023-02-18 15:52:52 -05:00
Quickdesh
5e8c406f7a FIX IT ALL AAAAAAAAAAAAAAA 2023-02-17 04:48:34 -05:00
Quickdesh
d76e5b2a81 Commit current fixes 2023-02-09 06:11:58 -05:00
Two-Ai
bd2cb97179
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
2023-02-07 22:13:19 -05:00
arkon
1730dd6af1 Move more things around 2023-01-27 22:31:12 -05:00
Two-Ai
b4b3a4d286
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.
2023-01-25 18:18:12 -05:00
Two-Ai
2ef1f07aae
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
2023-01-23 17:10:44 -05:00
Andreas
2b5d9fd76b
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
2023-01-20 23:04:22 -05:00
Andreas
c31e75f02f
Create plugin for linting (#8942) 2023-01-18 22:33:56 -05:00
Quickdesh
a21556bf3b Merge branch 'upstream/master' 2023-01-11 01:22:20 -05:00
jmir1
4c3ee0258e increase call timeout to 30 minutes for anime downloads 2023-01-07 01:07:42 +01:00
Two-Ai
593172f891
Track Page progress with StateFlow (#8749)
* Update ReaderProgressIndicator documentation

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

* Track Page progress with StateFlow
2022-12-16 22:18:50 -05:00
Two-Ai
6ca32710be
Cleanup Page status (#8696)
* Cleanup Page statusSubject and statusCallback

* Convert Page status from Int to enum
2022-12-07 18:28:38 -05:00
Quickdesh
efee413ecb
Anime Sources Fix (#822)
* fix no class found error for anime sources

* fix pkgname substring in AnimeExtensionDetailsScreen
2022-11-10 10:37:50 +01:00
Quickdesh
ff08f5fa8f Merge upstream 2022-11-06 19:41:13 -05:00
stevenyomi
b006fe3a22
Revert "Tweak how getChapterUrl works (#8392)" (#8427)
This reverts commit 1a25cea0d6.
2022-11-03 09:23:59 -04:00
AntsyLich
1a25cea0d6
Tweak how getChapterUrl works (#8392) 2022-10-31 13:05:27 -04:00
Quickdesh
9326be9b48 Merge remote-tracking branch 'upstream/master' 2022-10-29 18:30:40 -04:00
arkon
26a42ba9c0 Upgrade to Kotlin 1.7.20
Also run formatter and address some deprecation warnings.
2022-10-11 22:40:08 -04:00
AntsyLich
de23226591
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
2022-10-01 11:31:07 -04:00
stevenyomi
f4c684b4b8
Remove cache control on already cacheless image request (#8085) 2022-09-26 17:13:03 -04:00
Alessandro Jean
ba533f30ce
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.
2022-09-25 10:12:36 -04:00
Ivan Iskandar
747cbd24cb
Adjust source-api R8 rules (#8064) 2022-09-24 10:13:58 -04:00
Ivan Iskandar
4a3070265a
Upgrade AGP 7.3.0 (#8016) 2022-09-17 10:26:02 -04:00
Andreas
86fe850794
Extract source api from app module (#8014)
* Extract source api from app module

* Extract source online api from app module
2022-09-15 18:12:27 -04:00