* 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
* 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
* 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.
* [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
* 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
* 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
* 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
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
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
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
The "loading" and "networkStatus" state do not get correctly updated when e.g. calling "fetchMore".
This seems to happen because an abort signal is passed on every hook call.
Due to passing this signal, the passed args to the hook change, and thus, it looks like apollo considers this a completely new hook call.
By preventing the signal from being passed, the hook correctly updates these states, but, on the contrary, it is not possible to abort these requests anymore