Commit Graph

300 Commits

Author SHA1 Message Date
schroda
9b96560a17 Feature/settings backup (#453)
* Show loading indicator for "NumberSetting"

* [i18n] Add lowercase interpolation format

* Add required dependencies for time settings

* Dynamically import dayjs locales for languages

* Add backup settings
2023-11-12 01:41:10 +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
9284e46c45 Prevent SelectionFAB from being behind the "ChapterCard" checkbox (#445)
The MUI Checkbox component has a z-index of 1, which causes it to register the mouse events instead of the "SelectionFAB" which is visually in front of it
2023-11-05 17:22:35 +01:00
schroda
4ab61723e7 Add missing tooltips (#444) 2023-11-05 17:22:29 +01:00
schroda
a6cc757d50 Feature/global update settings update manga metadata (#441)
* Add "updateMangas" setting to global update settings

* Sort "en.json" alphabetically
2023-11-04 14:55:25 +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
529fcf2d25 Mark first chapter as read for "mark previous as read" (#435) 2023-10-29 13:32:47 +01:00
schroda
4c6e9a8aa1 Do not add mangas to the default category (#433)
The default category is used as a fallback and should never be actually mapped to mangas in the database.
However, when using the update manga category mutation the server still creates this mapping, which then leads to issues with getting mangas for the default category
2023-10-29 13:15:17 +01:00
schroda
678df88068 Feature/modify global update settings (#432)
* Move setting components in "settings" folder

* Add setting to change global update automation
2023-10-29 02:01:59 +02:00
schroda
4c6d507405 Feature/show backup restore progress (#431)
* Extract "Progress" component

* Show backup restore progress
2023-10-29 01:49:27 +02:00
schroda
5a5b12a9e1 [ESLint] Prefer named exports (#427) 2023-10-28 00:32:02 +02:00
schroda
68e7b4b16d Feature/library global update exclude manga with state (#281)
* Extract global update settings

* Add option to exclude mangas with specific state from global update
2023-10-27 23:39:05 +02:00
schroda
09c7e804ba Refresh library mangas after update
the gql updater subscription currently return stale data, thus, the mangas do net get updated in the cache
2023-10-27 21:03:37 +02:00
schroda
2297f36efb Add manga to default categories when adding to library 2023-10-27 20:23:47 +02:00
schroda
b3a432ed2e Update typings 2023-10-27 20:23:46 +02:00
schroda
d3e15e9d3b Use gql for "subscriptions" 2023-10-27 20:23:45 +02:00
schroda
6a1c302e45 Remove SWR 2023-10-27 20:23:44 +02:00
schroda
aad87463f3 [Codegen] Use gql for "loading chapters" 2023-10-27 20:23:44 +02:00
schroda
78049282a7 Use gql for "sources" - preferences 2023-10-27 20:23:05 +02:00
schroda
12dd973179 Use gql for "mangas" VI - source mangas filter 2023-10-27 20:23:05 +02:00
schroda
3297c7d96c Use gql for "mangas" V - update manga categories 2023-10-27 20:23:05 +02:00
schroda
0a73496cba Use gql for "mangas" III - global search 2023-10-27 20:23:04 +02:00
schroda
af9d49e5e9 Use gql for "mangas" II - category mangas 2023-10-27 20:23:04 +02:00
schroda
89dc053f00 Use gql for "mangas" I - get manga 2023-10-27 20:23:04 +02:00
schroda
222f8f5c9b Use gql for "downloader" 2023-10-27 20:23:03 +02:00
schroda
ca18e750bf Use gql for "categories" 2023-10-27 20:23:03 +02:00
schroda
f0d55c01c8 Use gql for "updating chapters" 2023-10-27 20:23:03 +02:00
schroda
c75e184c57 Use gql for "updating mangas" 2023-10-27 20:23:02 +02:00
schroda
4a80e18cd0 Use gql for "extensions" 2023-10-27 20:23:02 +02:00
schroda
bffc1669e2 Move "RequestManager" in sub folder 2023-10-27 20:23:00 +02:00
Robert Perez
3155c1d602 Add option to offset first page in double page reader (#418)
* added toggle for doublespreads

* changing pages works as intended

* undid package.json changes

* deleted packege lock json

* curPage changes when changing invertDoublePage

* changed yarn.lock

* it switches better now

* fixed formatting

* changed it to offset first page

* fixed flipping when switching

* offset first page hides when double page is not enabled

* removed uncreachable line
2023-09-28 00:36:47 +02:00
Robert Perez
686f9d605f Improvements on double page (#417)
* going to next chapter and prev page works now

* cleaned comments

* updated mapping file

* changed version back

* Fixed chapters being read.

* fixed comments
2023-09-06 20:39:46 +02:00
schroda
c23799f0e0 Update "UpdateStatus" type to server changes (#413)
The "UpdateStatus" was updated in https://github.com/Suwayomi/Tachidesk-Server/pull/657 on the server side
2023-08-28 23:47:40 +02:00
schroda
dd0ab4cb86 Show "inLibraryIndicator" in "VerticalGrid" (#408) 2023-08-16 19:07:54 +02:00
schroda
48fe8d23e9 Fix/vite tsconfig setup (#404)
* Use "create-vite"s tsconfig files setup

The previous tsconfig file caused issues with vite throwing "missing identifiers of modules" errors

* Remove unused React imports

Starting with React 17 the nex JSX transform is being used
2023-08-14 21:43:06 +02:00
schroda
e4745ee812 [ESLint] Fix issues (#397) 2023-07-13 14:23:20 +02:00
schroda
04f7831dc4 Use proper button radius (#393) 2023-07-04 21:55:39 +02:00
schroda
5279339b86 Feature/update i18next to v23.x (#391)
* Update i18next to v23.x

Update to version 23.2.7

* Use new "ParseKeys" (old: "TFuncKey") type

* Remove unnecessary casts to string

Not needed anymore with the latest version
2023-07-04 21:53:25 +02:00
schroda
09b10cd5ab Fix/back button not working without browser history (#389)
* Introduce local history stack

To be able to know if the browser back navigation should be used, it is sometimes necessary to know which the previous page was.
E.g. it should not be used in case the current page is the manga page and the previous one is the reader.

* Handle cases where there is no previous page in the history stack

* Always use a button for the navigation back button

* Navigate from base route to library by replacing the current location

The base route should not be included in the history
2023-06-26 20:40:35 +02:00
schroda
0f029cb625 Fix/library manga grid infinite item size on category switch (#378)
* Revert "Fix/manga grid infinite item width (#376)"

This reverts commit 48d559ec

This fixed (and worked as expected in dev mode) the very rare issue in dev mode (you had to load the page with a small screen size and increase the screen size before the grid and grid items were rendered) and caused it frequently in production build in the Library grid when switching categories

* Fallback grid dimensions to current window dimensions

Hook only run once, which could lead to an issue where the grid item width was calculated to be infinite (e.g. in SearchAll due to strict-mode behaviour in the dev mode).
Could be that this is only an issue in dev mode due to react-strict mode.

* Remove unused "height" grid dimensions property
2023-06-17 22:31:59 +02:00
schroda
cdacc4b2a9 Always use available width for grid items (#375)
In case a manga thumbnail was smaller than the set item width, the item didn't use all its available width.
Thus, being smaller than the other items.
2023-06-17 20:54:55 +02:00
schroda
ad38641616 Only show scrollbar when necessary (#377) 2023-06-17 20:53:44 +02:00
schroda
48d559ec19 Fix/manga grid infinite item width (#376)
* Calculate GridItem width once

Was unnecessarily calculated on every item render

* Update grid dimensions everytime the height or width changes

Hook only run once, which could lead to an issue where the grid item width was calculated to be infinite.
Could be that this is only an issue in dev mode due to react-strict mode.
2023-06-17 20:53:08 +02:00
schroda
19d27fdf26 Feature/virtualize manga grid (#363)
* Disable ssr by default for "useMediaQuery"

SSR would cause the hook to run once with default values and only after the first render with real values.
This can cause issue on rendering when depending on useMediaQuery results like in 8c129f2e08

* Virtualize manga grids

* Remove SourceMangas load more guard

Was required due to the previous load more trigger logic from the MangaGrid.
Due to using Virtuoso now, load more will be triggered only once when the bottom of the grid was reached and thus won't trigger multiple load more requests

* Remove old Library pagination

Pagination is handled by virtuoso, thus, the previous pagination can be removed

* Increase initial loaded pages to make infinite load work

virtuoso requires enough initial items to be rendered, so that actual virtualization takes effect, for it to fire "endReached"

* Prevent virtuoso grid scrollbar from jumping around

In case the items have a big height difference there is a bug where the scrollbar starts jumping around the moment these new items are rendered

* Restore scroll position

For some reason the UI jumps around when accessing "document.documentElement" during loading more items.
After the items are rendered the loading placeholder gets removed and the previous items jump to the bottom of the viewport.

* Limit manga grid titles to two lines

* Remove "last page" info from MangaGrid

Info is not needed. The only thing the MangaGrid has to do is to trigger a request to load more data
2023-06-17 16:50:17 +02:00
schroda
5187d4c842 Fix "hasNextPage" calculation for Library grid (#366)
"totalPages" could have decimal places which then would lead to incorrectly disabling the "hasNextPage" flag
2023-06-16 00:15:00 +02:00
schroda
63c1ac95eb Feature/remove use back to util (#360)
* Remove "useBackTo"

Not needed

* Use browser back navigation to close the reader

This will cause the previous page (manga or updates) to be opened instead of always opening the manga page
2023-06-08 14:25:24 +02:00
schroda
f979d207e8 Open reader via the correct url when using resume FAB (#355)
With the recent update to react-router-dom v6 the route "manga/:mangaId/chapter/:chapterIndex/page/:pageIndex" doesn't get matched anymore.
The "pageIndex" is also unnecessary since it doesn't get used and instead the chapters "lastReadPage" property gets used to resume the chapter.
2023-06-08 13:40:38 +02:00
schroda
4b83ccc889 Feature/use alias for imports (#352)
* Use alias "@" for imports

* Use alias "@" for imports - Fix imports

* Use alias "@" for imports - Prevent faulty "import/extensions" linting issue

For some reason the rule throws an error for alias imports

* Use alias "@" for imports - Update "no-relative-imports" eslint rule
2023-06-05 01:42:39 +02:00
schroda
00e403ce09 Use correct endpoint for deleting downloaded chapter (#351)
Instead of deleting the downloaded chapter, a request was made to remove the download from the download queue
2023-06-05 01:23:40 +02:00
schroda
61975b5c49 Feature/update dependency react to v18.x (#346)
* Update dependency "react" to v18.x

Update to v18.2.0

* Update dependency "react" to v18.x - Fix some dependency version issue

Something caused weird tsc issues, most likely a version mismatch since it got fixed by doing a clean install (deleting node_modules folder, yarn.lock and clearing the cache) of the dependencies

* Update dependency "react" to v18.x - Fix "i18n" tsc issues

* Update dependency "react" to v18.x - Fix tsc issue

Typography can only have a single child

* Update dependency "react" to v18.x - Prevent build warning

TODO: migrate to Vite

Gets used without being declared as a dependency.
Since CRA is unmaintained this will not get fixed.

* Update dependency "react" to v18.x - Use "createRoot"

* Update dependency "react" to v18.x - Fix dnd in strict mode
2023-06-04 21:40:04 +02:00