Commit Graph

74 Commits

Author SHA1 Message Date
schroda
bbafe893de Extract version update info dialog into component 2024-05-03 14:46:05 +02:00
schroda
61b43b80af Merge version update close buttons into one 2024-05-03 01:48:12 +02:00
schroda
0f16429c14 Fix EmptyView styling 2024-04-29 16:22:46 +02:00
schroda
c19df43e4a Fix styling of SearchAll error messages 2024-04-29 15:37:01 +02:00
schroda
054585f488 Rename "EmptyView" 2024-04-29 15:29:33 +02:00
schroda
7531edbd59 Add retry logic to Library error handling 2024-04-28 02:58:28 +02:00
schroda
773d2b1026 Add missing error handling 2024-04-28 02:58:24 +02:00
schroda
09bf1163fa Remove logging of image request failures 2024-04-26 17:29:58 +02:00
schroda
7ceb1af23e Prevent webUI update available dialog when auto update is enabled
The automatic webUI update checks were not triggered in case the auto update setting was disabled but it was still possible for the update info dialog to be shown
2024-04-23 18:19:20 +02:00
schroda
ebd84d5b20 Disable webUI update check when auto update is enabled 2024-04-21 16:17:04 +02:00
schroda
d5241009b6 Optionally ignore available server update
Makes it possible to never show the info dialog again for the available version update
2024-04-21 15:06:47 +02:00
schroda
9954341434 Remind about server update later on dialog close
Stop opening server update info dialog for one hour after the dialog was closed
2024-04-21 15:06:23 +02:00
schroda
f61ed31bd5 Globally inform about available webUI updates
In case the automatic webUI updates setting was disabled the user was never informed about available webUI updates
2024-04-21 15:03:25 +02:00
schroda
ad4f59f324 Extract automated update check into hook 2024-04-21 15:03:25 +02:00
schroda
c4d77d2325 Globally inform about successful webUI updates
In case automatic webUI updates are disabled, the user gets informed about available updates
2024-04-21 15:03:24 +02:00
schroda
7725673dd7 Move ServerUpdateChecker to "util" folder 2024-04-21 12:52:31 +02:00
schroda
18365a26c1 Update image when src url changes
When e.g. switching between 2 different manga pages, the thumbnail did not update because the img fetch was not triggered in case the src url changed
2024-04-21 00:04:00 +02:00
schroda
473e85a8ed Feature/use second level mui imports (#743)
* Require "Theme" to be passed to "SxProps"

Decreases typescript performance otherwise

* Disallow "top" and "third-level" MUI imports

* Exclude "node_modules" in tsconfig
2024-04-14 15:50:12 +02:00
schroda
9a738775f1 Fix/search bar search disappearing after submit (#728)
* Correctly update search string on location change

Regression introduced with aab3e25031

* Remove unnecessary usage of "useSessionStorage"

This did not add anything and made no sense
2024-04-10 23:46:08 +02:00
schroda
aab3e25031 Feature/improve restoring grid snapshots (#713)
* Update local storage functions

* Update local storage hooks

* Add session storage

* Improve storing virtuoso grid snapshot

* Use "useSyncExternalStore" for browser storage access

* Get rid of location replacements in "AppbarSearch"

Use session storage instead to prevent reloading the page all the time due to changing the location

* Get rid of location replacements in "SourceMangas"

Use session storage instead to prevent reloading the page all the time due to changing the location
2024-04-07 15:22:03 +02:00
schroda
74cf4b7c50 Add option to use img tag to fetch images
MangaUpdates covers could not be fetched via the fetch api because there were cors issues
2024-03-29 00:45:38 +01:00
schroda
f913f5ec32 Show image placeholder
Instead of trying to load invalid url
2024-03-29 00:45:38 +01:00
schroda
21eda17bc1 Add "SearchTextField" 2024-03-29 00:45:38 +01:00
schroda
06b2bca340 Add prioritization to image requests (#671)
In the reader the preloaded page requests were triggered before the actual page got rendered and thus, the image request of the rendered page had to wait for all the preloaded images to finish
2024-03-24 19:08:36 +01:00
schroda
1d49945caa Fix check for fetch abortion error (#668) 2024-03-24 15:03:29 +01:00
schroda
a96038bcb7 Prevent image loading placeholder for cached images (#669)
Give the image time to get loaded from the cache before setting the loading state
2024-03-24 15:03:20 +01:00
schroda
ed74f7c851 Make remaining image requests abortable (#645) 2024-03-08 00:24:01 +01:00
schroda
daf6b50249 Fix/deprioritize image requests (#638)
* Use "fetch" instead of "axios"

Axios does not support prioritizing requests

* Deprioritize image requests

The browser requests images (<img>) with low priority by default.
Due to switching to loading images via axios (f852ce70e7), the image requests had the same priority as other requests and thus blocked e.g. xhr requests
2024-03-05 02:07:05 +01:00
schroda
f0fc31ceac Fix/spinner image not able to be opened in new tab or saved (#635)
After the object url has been revoked the image can't be used anymore
2024-03-03 23:07:12 +01:00
schroda
79d35404d3 Fix/double page mode not aborting preload image requests (#628)
* Use request manager to preload images in DoublePagedPager

Was forgotten to update along with f852ce70e7

The requests for the preload also never got aborted

* Revoke object urls after load
2024-03-01 18:27:46 +01:00
schroda
f852ce70e7 Abort image requests on unmount (#624) 2024-03-01 01:17:23 +01:00
schroda
38b364bb55 Remove reader webtoon mode page gaps (#552)
Regression introduced with 199b62341f
2024-01-15 14:27:29 +01:00
schroda
738a22233b Internationalize failed img retry text (#551) 2024-01-15 00:55:39 +01:00
schroda
199b62341f Feature/add retry button for failed image requests (#550)
* Improve img loading placeholder

Prevent showing a loading placeholder in case the image is already cached.

* Add failed img load retry button
2024-01-15 00:32:39 +01:00
schroda
db65b9df44 Feature/merge source and extensions screen on desktop (#535)
* Merge "source" and "extension" screen for desktop

* Move "tab" related components into new folder

* Reuse "tab" components for "browse" screen

* Prevent extension list from being taller than 100% of the parents height

- remove margin - virtuoso has issues calculating the height otherwise
- change group title styling, fontSize caused issues

* Align "source" list group header with "extension"

* Remove bottom padding from "ExtensionCard"

* Move "GroupedVirtuoso" related components into folder

* Use "GroupedVirtuoso" for "extensions"

There was an issue with the height calculation of the virtuoso list, which apparently was caused by the conditional rendering of the group title and item as list items.
Due to this, while scrolling down, the virtuoso list caused an overflow, which rendered the scrollbar, which in turn caused the list items to shrink in width.
The end result of this was, that the list items "jumped" slightly on the initial render of the items, due to the scrollbar appearing and disappearing
2024-01-02 23:32:49 +01:00
schroda
356303ab5a Allow browser context menu for images in reader (#524)
The changes of dabe88385d removed the ability to copy/open images in a new tab due to enabling scrolling via left mouse click and dragging the mouse.
2023-12-28 20:22:34 +01:00
schroda
db5d3ff7c0 Remove "directLink" prop (#488)
Is not required anymore since "Link" of react-router-dom is a "<a>" element now anyway.
It also caused the following warning

"react-dom.development.js:86  Warning: React does not recognize the `directLink` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `directlink` instead. If you accidentally passed it from a parent component, remove it from the DOM element"
2023-12-09 14:16:44 +01:00
schroda
ee9811bf53 Correctly detect keyboard input "Enter" (#479)
The "code" property returns the physical key that was pressed.
Thus, e.g. "Enter" on the numpad is "NumpadEnter" and not "Enter".
2023-11-26 14:29:03 +01:00
schroda
8d4687428f Fix/app search (#456)
* 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
2023-11-12 19:04:40 +01:00
schroda
35c34b6d1b Feature/search bar improvements (#455)
* 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
2023-11-12 03:21:26 +01:00
schroda
4ab61723e7 Add missing tooltips (#444) 2023-11-05 17:22:29 +01: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
89dc053f00 Use gql for "mangas" I - get manga 2023-10-27 20:23:04 +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
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
schroda
1ce27ea939 Feature/update dependency mui to v5.x (#332)
* Update dependency "mui" to v5.x

Update to v5.13.3

Fixes issue of "SxProps" not being exported by "@mui/material"

* Update dependency "mui" to v5.x - Fix grid item size

Update to v5.13.3

Fixes issue of "SxProps" not being exported by "@mui/material"

* Update dependency "mui" to v5.x - Replace "ListItem" with "ListItemButton"

* Update dependency "mui" to v5.x - Fix tsc issue

* Update dependency "mui" to v5.x - Prevent reader white screen

Due to "initialChapter" being a function returning an object, it causes a re-render everytime due to it (the object) being used as a dependency.
This caused a white screen when skipping to the previous or next chapter
2023-06-04 21:13:07 +02:00
schroda
6911f60eb4 Feature/remove dependency mui system (#331)
* Remove duplicated dependency "@mui/system"

Already included in "@mui/material"

* Remove duplicated dependency "@mui/system" - Fix theme "custom" palette

Already included in "@mui/material"

* Remove duplicated dependency "@mui/system" - Fix imports

Already included in "@mui/material"
2023-06-04 21:08:39 +02:00
schroda
aa801a57ee Feature/updates screen use infinite swr hook (#303)
* Use "RequestManager" for loading updates

* [Cleanup] Fix typing

* Memoize grouped updates

* [TSConfig] Increase target version

Makes it possible to iterate over a "IterableIterator" (e.g. [...<Map>.entries()])

* Use "GroupedVirtuoso" for "Updates" screen

* Optionally use "padding" instead of margin for the loading placeholder

In case the loading placeholder gets used in a "react-virtuoso" list, the margin might cause issues with the calculated height.

* Use "padding" instead of "margin"

"Margin" breaks "react-virtuosos" height calculation

* Add background color to group header

With virtuoso the group headers are sticky, thus, a background color is needed

* Simplify "groupByDate" object structure

It's not necessary to save the items inside the group object
2023-05-18 13:48:01 +02:00
schroda
58eb2fead3 Feature/enforce license notice in each file via eslint rule (#304)
* [ESLint] Add "eslint-plugin-header" as dev dependency

* [ESLint::eslint-plugin-header] Setup rule

* [ESLint::eslint-plugin-header] Fix errors
2023-05-18 13:17:41 +02:00