Some settings use 0 as the disabled state.
In this case, the previous enabled value was lost.
To prevent this, the last value now gets saved and set again when enabling the setting again
* 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
* Auto open search correctly in global search
* Update search input when navigating to previous/next location
* Revert: Navigate to previous page when canceling search
Has to many edge cases and fixing them would require a global history stack which gets saved in the location state.
This then would lead to the apps internal back navigation to be the same as the browsers which is not wanted, since you should not get moved deeper into the apps navigation when clicking the back button
* Correctly autofocus search input
Sometimes the autofocus did not work, since the input did not exist yet by the time the timeout was triggered
* Restore search input open state when navigation to previous/next location
* Restore search input focus when navigating to previous/next location
* Require search to be committed with enter
* Extract back navigation logic into hook
* Navigate to previous page when canceling search
This makes the search the next page in the history stack instead of making it the previous one
* Close and open search depending on the location and available query
* Navigate to previous page in case new query is empty
* Scroll up when clicking shift + space
* Add keyboard bindings to arrow up and down
Align scroll amount with using other keys like space, arrow right/left
* Add scroll inversion with shift to other key bindings
* Scroll per mouse dragging
* 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
* 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
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
* [Codegen] Update settings fragment
* Extract logic to change a number setting
* Show slider for global update interval setting
* Add download settings
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
* 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
* going to next chapter and prev page works now
* cleaned comments
* updated mapping file
* changed version back
* Fixed chapters being read.
* fixed comments
* 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
* 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
* 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
* 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
* 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.