Commit Graph

256 Commits

Author SHA1 Message Date
schroda
cee566d9b2 [Codegen] Update manga chapter total count on initial refresh (#582)
In case a manga hadn't been initialized yet, its chapter total count was still 0 after refreshing the manga and its chapter list data.
This was caused because its chapter list hadn't been fetched yet by the time the manga refresh mutation resolved.
2024-01-29 20:55:49 +01:00
schroda
18ca66cb40 Feature/settings add flaresolverr (#568)
* [Codegen] Update to server changes

* Set "dialogTitle" by default to "settingTitle" for "NumberSetting"

* Add FlareSolverr to settings

* [VersionMapping] Require server version "r1477" for preview

* Replace static strings with translation keys
2024-01-26 21:20:06 +01:00
schroda
ab4cddfedd Force a reconnect in case a heartbeat is missing (#569)
There seems to be cases where the connection is lost without the client being able to reconnect (e.g. active subscription -> system hibernation -> waking up system => not receiving any messages anymore).
2024-01-26 20:55:14 +01:00
schroda
e0c5e0521d Feature/manga migration (#536)
* Add "migration" tab to "Browse" screen

* Add missing useEffect cleanup for navbar title and actions

* Make "SourceGridLayout" reusable

* Add migration tab to "Browse"

* Add migration logic
2024-01-26 20:50:51 +01:00
schroda
5224ad1391 Add missing id to request (#571)
The id is required to normalize the data
2024-01-26 20:50:09 +01:00
schroda
24379c1e46 Infinitely try to reconnect gql subscriptions (#563) 2024-01-21 22:31:20 +01:00
Chance Zibolski
05f57730db Support configuring automatic downloads by category (#562)
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
2024-01-21 22:31:04 +01:00
schroda
de596426bf [Codegen] Update generated files (#561)
Should have been updated with 1c2a196950
2024-01-17 13:48:43 +01:00
schroda
1c2a196950 Fix/adding manga to library not updating category (#559)
* Refetch categories after updating a manga

After adding/removing a manga to/from the library, the categories did not update.

* Include manga categories int the manga update mutation response
2024-01-17 13:45:30 +01:00
schroda
42e3d64f80 Clear extensions cache after extension repos change (#555)
This will force a refetch of the extensions the next time the list gets opened which will update the extensions on the server
2024-01-15 23:22:25 +01:00
schroda
3973eda089 [ServerMapping][Codegen] Update to latest server gql MangaType changes (#546) 2024-01-11 03:53:06 +01:00
schroda
fd1fa63064 Feature/show extension repo only in case more than one repo is set (#543)
* Rename "isSingleRepoSet" prop to "showSourceRepo"

* Show repo of source in case sources of different repos are installed

* Center the source icon
2024-01-09 22:09:31 +01:00
schroda
39b79c6ebe Feature/settings support custom extension repos (#539)
* [Codegen] Support custom extension repos

* [VersionMapping] Require server version "r1444" for preview
2024-01-06 18:38:16 +01:00
schroda
05fa3d0732 Fix/chapter not getting deleted after being read (#532)
* Create permanent subscriptions

The subscriptions have to be permanently open, otherwise, the cache gets outdated.

E.g. in case a view is open, which does not subscribe to the download updates, finished downloads are never received and thus, data of existing chapters/mangas in the cache get outdated

* [Codegen][Tool] Get latest data from cache for automatic chapter deletion after reading

The manga chapters query is on "standby" to prevent the reader from rerender in case the underlying query data updates, which would cause the reader to jump back to the beginning of the last read page.
Thus, when checking if the chapter should be automatically deleted, the data from the query can't be used, since it is outdated.
2024-01-01 22:40:39 +01:00
schroda
37ce494fda Log promise failures instead of ignoring them (#531)
In case the failure does not get handled, it should at least get logged, to prevent silently ignoring it
2023-12-31 01:42:54 +01:00
schroda
ecea80f41e Merge manga action menus (#527) 2023-12-30 14:26:50 +01:00
schroda
a3a52064cc Feature/cleanup chapter actions (#525)
* Extract chapter actions into "Chapters"

* Extract chapter action menu into component

* Rename "SelectionFABActionItem" to "MenuItem"

* Decouple "MenuItem" from "SelectionFAB"

* Use "MenuItem" in "ActionMenus"

* Merge chapter action menus

* Simplify chapter "mark as read" action
2023-12-30 04:04:59 +01:00
schroda
a1dca02fea Add missing extension key field to mutation result (#522)
Regression introduced with c8747d6db4
2023-12-28 16:08:02 +01:00
schroda
f12f025e9d Add option to remove non library mangas from categories (#520)
It's currently not possible to filter out non library mangas from the mangas field of categories, thus, the totalCount of mangas in a category might be greater than what is actually displayed in the library.
2023-12-27 18:17:41 +01:00
schroda
446deeae06 Feature/library manga actions (#506)
* Extend "IMangaGridProps" from "DefaultGridProps"

* Move library manga filtering into hook

* Add logic to select mangas

* Add manga actions

* Remove cache only policy for category mangas

Unclear why this was added

* Prevent SelectionFAB from being hidden by the mobile footer

On e.g. the library page, the footer is visible and thus, the fab was not completely visible

* Update categories of manga only after clicking "OK"

Previously, selecting a category resulted in an immediate mutation.
To be able to reuse the "CategorySelect" component to change the categories of multiple mangas at once, this behaviour is not suited.

* Add action to change categories of multiple mangas

* Cancel selection mode after removal from library

The mangas would still be selected and other action could get performed. However, this should only be possible for mangas that are in the library

* Remove unintentionally added console log

Accidentally added with 980da657d9
2023-12-25 21:37:45 +01:00
schroda
980da657d9 [Codegen] Check cache before executing query for a single item (#513)
E.g. in case a manga was already loaded through the category mangas query, the query for that specific manga should not run against the server if it hasn't been executed before
2023-12-25 21:20:07 +01:00
schroda
c8747d6db4 Use correct key to normalize extensions (#512) 2023-12-25 21:16:04 +01:00
schroda
2390361fb2 [Codegen] Request manga download count with chapter deletion mutation (#516)
After deleting a chapter, the download count of the chapters manga did not update, because the information was not requested with the mutation
2023-12-25 21:15:41 +01:00
schroda
e966b0328b Remove unnecessary query refetches with mutations (#508) 2023-12-23 15:15:08 +01:00
schroda
f4e8441238 Prevent ApolloError handling the manga category mutation result (#510)
Unclear what is causing the error or why this is fixing it, but without requesting the categories total count, the mutation fails on the first execution with "Uncaught (in promise) ApolloError: Cannot convert object to primitive value"
2023-12-23 15:14:57 +01:00
schroda
f542c17fd6 Update download subscription to server changes
The download subscription now sends messages for finished downloads, thus, it's not required anymore to refetch the chapters.
2023-12-16 20:35:35 +01:00
schroda
1dc60af67c Add logic to reorder downloads (#495) 2023-12-13 02:05:03 +01:00
schroda
78310496aa Feature/about screen add option to check for and trigger updates (#485)
* [VersionMapping] Require server version "r1436" for preview

* Move ts util types to new type file

* Add buttons for updating server and webUI
2023-12-09 23:08:27 +01:00
schroda
fbf627b3aa Add option to clear the server cache (#487) 2023-12-09 14:16:52 +01:00
schroda
ad0f072651 Feature/automatic chapter deletion more options (#484)
* Add missing translations keys

* [Codegen] Update to latest server schema changes

* [VersionMapping] Require server version "r1431" for preview

* Rename "deleteChaptersAutoMarkedRead" metadata setting

* Add more options to auto delete chapters while reading

Makes it possible to delete the last to fifth to last read chapter instead of only being able to delete the last read chapter
2023-12-05 22:20:13 +01:00
schroda
259d1d87df Show info about hosted WebUI in "About" (#482) 2023-11-27 19:14:43 +01:00
schroda
7c69a4a5a1 Feature/global update last timestamp use stale data while fetching (#473)
* Cache last update timestamp

* Correctly detect update as finished

The update status on server side does not get reset, thus, in case a previous update was finished, it would get detected as finished and handled once on the initial render.
2023-11-25 15:35:36 +01:00
schroda
a4bd44de9e Correctly merge chapter requests (#474)
A re-fetch wasn't correctly detected which resulted in outdated data to be shown.
The pageInfo was also not correctly merged, which resulted in losing the previous response start cursor and "has previous page" info
2023-11-25 15:35:26 +01:00
schroda
aa01d6712b Update extensions list after extension update (#471) 2023-11-24 03:20:16 +01:00
schroda
7adc28a35c Feature/gql improve queries mutations subscriptions (#470)
* [Codegen] Request less fields for category mutations

* [Codegen] Request less fields for chapter mutations

* [Codegen] Request less fields for downloader mutations

* [Codegen] Request less fields for extension mutations

* [Codegen] Request less fields for manga mutations

* [Codegen] Request less fields for source mutations

* [Codegen] Request less fields for updater subscription

* [Codegen] Request less fields for downloader subscription

* [Codegen] Combine chapter update mutations
2023-11-24 03:17:49 +01:00
schroda
3b147b1b46 Fix/update gql after server changes (#469)
* [Codegen] Update files

* Update "AboutServer"

* Cache "WebUIUpdateInfo"
2023-11-24 01:33:56 +01:00
schroda
cdf9229457 Feature/global update show last update time (#468)
* Show last global update timestamp

* Add update button to "Updates" screen
2023-11-19 22:43:29 +01:00
schroda
d12ac27b61 Feature/download ahead while reading (#464)
* Download next chapters when marking chapter as read while reading

* Add "auto delete chapter" settings

* Delete chapter after finished reading

* Delete chapters after marking them as read

* Improve "mark previous as read" action

Send only ids of chapters that are actually unread
2023-11-19 21:17:35 +01:00
schroda
7db5435967 Remove "useCache" query from image requests (#465)
Should have been removed with eda682d9ab
2023-11-19 21:17:10 +01:00
schroda
cac60fed2c Feature/server settings (#458)
* Move "Server Address" setting to server settings

* Rename "ServerDirSetting" to "TextSetting"

* Use "TextSetting" for server address

* Reset value when closing the dialog

* Support passwords in "TextSetting"

* Add server settings
2023-11-18 19:55:44 +01:00
schroda
482db4626a Prevent infinite re-renders in extensions (#457)
Regression introduced with 593acc7f89
2023-11-18 19:55:35 +01:00
schroda
a0a52b11a1 Fix/pagination of sources which require pages to be fetched in order (#451)
* Handle sources that do not support revalidation

At least e-hentai is not able to handle out of order pagination requests.
E.g. in case the last request was for page 1 and the next one is for page 3, the result will be for page 2, because e-hentai just ignores the request page number and just returns the next page after the last fetched one.

* Optionally clear source browse cache when opening component

At least e-hentai is not able to handle out of order pagination requests.
The revalidation logic will cause exactly this.
Due to this, the revalidation for these sources is disabled.
To prevent an out of date cache, it gets cleared when routing to the source component
2023-11-11 23:43:22 +01:00
schroda
345fbcb5c7 Fix/apollo client spamming infinite requets on failure (#450)
* Remove abort controller by default from requests

Apollo client is, for whatever reason, considering it a new hook call when passing an abort controller to be passed to the actual request.
On request failures this then causes infinite requests due to it being a new hook call.

* Move side effect into useEffect

This was missed and started causing issues after the changes of 60429d9d98544e1e49a112aacf77bdbb831740ec.
Due to the changes, the component did not re-render unnecessarily which caused the component not to re-render with the fetched data

* Reset fetching initial pages state

The state was never reset, thus, in case of an error, the initial pages fetch was never triggered again
2023-11-11 23:42:58 +01:00
schroda
291e1899f9 Remove re-fetching of manga query on chapter update (#449)
The mutation returns the mutated manga, thus, updating the cache which makes this  refetch unnecessary and just creates redundant requests.
2023-11-11 23:42:33 +01:00
schroda
c5f943d571 Get latest manga data from the apollo cache (#447)
When using the cached results, replace them with the latest cached data from apollo.
This will have the updated data, that was inserted from the manga update mutation
2023-11-05 22:40:35 +01:00
schroda
593acc7f89 Refresh extension list after updating (#446)
When using the cached results, replace them with the latest cached data from apollo.
This will have the updated data, that was inserted from the extension update mutation
2023-11-05 22:37:28 +01:00
schroda
7cb062d453 Feature/extensions always use fetch mutation to get list (#440)
* Reset the cache after importing a backup

* Add option to delete cached data after ttl is reached

* Always use mutation to get extensions list
2023-11-04 22:40:38 +01:00
schroda
14e7af9a4a Feature/modify download settings (#429)
* [Codegen] Update settings fragment

* Extract logic to change a number setting

* Show slider for global update interval setting

* Add download settings
2023-11-04 14:40:43 +01:00
schroda
1acda66b16 Feature/update backup restore to server changes (#438)
* [Codegen] Update back query/mutation

* Update backup restore

* [VersionMapping] Require server version "r1410" for preview
2023-11-02 13:01:01 +01:00
schroda
a638333684 Handle source browse when first page is also the last page (#436)
In case the first page was also the last page, there is no next page that can be fetched.
On large screens, where the initial pages to fetch are 2, this resulted in an endless loading screen
2023-10-29 20:51:53 +01:00