With the changes from df006bb348, the requested download queue data changed not matching the previously used type.
The unnecessary cast then hid the tsc issues during compilation
* Require "Theme" to be passed to "SxProps"
Decreases typescript performance otherwise
* Disallow "top" and "third-level" MUI imports
* Exclude "node_modules" in tsconfig
In case the fetch timestamp of a manga changed, it's possible that the thumbnail has changed as well, thus, the currently cached image should be ignored
* 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
* 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.
* 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.
* 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
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
* 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
* Update dependency "react-router-dom" to v6.x
Update to v6.11.2
* Update dependency "react-router-dom" to v6.x - Replace "Switch" with "Routes"
* Update dependency "react-router-dom" to v6.x - Relative paths
* Update dependency "react-router-dom" to v6.x - Nested routes
* Update dependency "react-router-dom" to v6.x - Prevent route warnings
- Route without an element causes a warning message.
- Routes with non-matching Route causes a warning message.
* Update dependency "react-router-dom" to v6.x - Replace "useHistory" with "useNavigate"
* Update dependency "react-router-dom" to v6.x - Fix "Link" usage
* Update dependency "react-router-dom" to v6.x - Overwrite "useParams" and "useLocations" typing
For both functions it's the users fault if they are getting used incorrectly.
It's inconvenient to always have to make sure the params exist (useParam) or to cast the return object to a specific type (useLocation)
- "useParams": Make generic type non-optional
- "useLocation": Add generic type
* Update dependency "react-router-dom" to v6.x - Fix use-query-params provider
* 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
* Introduce "RequestManager"
* Use "RequestManager" - Simple replacements
- Get rid of all "util/client" imports
- replace old requests with new "RequestManager"
- remove "fetcher" from global SWR config
instead of using the SWR hooks by themselves, the "requestManager" is supposed to be used
* Use "RequestManager" - Do requests via SWR hooks
Use SWR hooks at places where it's easily usable
* Prevent trailing slashes in the "baseUrl"
* Fix i18n tsc issue
"t" can return null by default.
This was already disabled in the config, but it had no effect on tsc.
* Fix translation in "DefaultNavBar"
key was missing and since this is a constant the translation wouldn't update in case the language got changed after first load.
* Enable typing for i18n translation keys
* Add translation keys
* Move "dependencies" close to "devDependencies"
Makes it easier to have a quick overview
* Upgrade "react-scripts" to latest version
With new versions of node (> v16) the build scripts fails with the following error "error:0308010C:digital envelope routines::unsupported"
* Upgrade "react-scripts" to v5 - Fix import
* Upgrade "eslint" dependencies
The latest version of "react-scripts" uses eslint v8 causing the following error "... ERROR in Plugin "react" was conflicted between ".eslintrc.js" >> eslint-config-airbnb ..."
* Upgrade "eslint" dependencies - Allow nested components as props
* Upgrade "eslint" dependencies - Fix lint issues
* Rename file
".d.ts" files are files that are automatically generated during compilation (in case option is set) and shouldn't be created manually.
* Export types and interfaces
* Add missing imports
* [Prettier] Increase max line length to 120
100 is quite low, especially on modern monitors.
The length is also reached quite quickly with 4 spaces per tab depending on the indentation depth
* [Prettier] Increase max line length to 120 - Fix formatting
* [Prettier] Add "prettier"
Makes the formatting of the code consistent.
By using the eslint-plugin-prettier formatting issues will be highlighted as a lint error.
These errors will be auto fixed by running "lint --fix" (which can be done automatically on file save)
* [Prettier] Add "prettier" - Fix formatting
* Move context providers and configuration providers to separate component, extract theme to separate file
* Use custom palette color instead of direct colors
* Replace different clicable things with CardActionArea to get transition and links
* Refactor DownloadQueue, update layout, unify all the download progress indicators
* Unify active filter indicator
* Use divider instead of hr
* Fix background color in extensions light theme
* Fix thumbnail overlay in library screen list view
* Don't show download button on downloaded updates
* Enable passing backLink through location state. Explicitly handle cases for BACK
* Allow pages to override default backLink. Fix manga page back link
* Cleanup
* - Changed the value in Manga from 960 to 900( md breakpooint)
- The CicularLoader in About and Reader screens is now centered to the whole screen
- Changed relative imports in About screen to absolute imports
- removed changed styles from Browse Screen, PageNumber
* Migrated Source Card, Extension Card and LoadingPlaceHolder to MUI system
* Migrated CategorySelect and LandSelect to using the sx prop
* migrated ReaderNavbar to mui 5
* - Removed Unused Styles from Page
- Migrated DoublePage, doublePagedPager, PagedPager, Vertical Pager and Horizontal Pager.
* Replaced style prop with sx prop
* removed useStyles completely from the project except for the Manga Screen
* added a comment
* Fixed the Source Card Buttons padding
* Removed the trailing backspace
Co-authored-by: Sascha Hahne <ntbm@users.noreply.github.com>
Co-authored-by: Sascha Hahne <ntbm@users.noreply.github.com>