* 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
* 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
* 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
* 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" 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
* 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
* 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
* 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"
* Pass optional browser tab only title
Makes it possible to have a different title for the "NavBar" and the browser tab
* Show number of items in category and library
---------
Co-authored-by: schroda <github@dasch.simplelogin.com>
* [Cleanup] Add enums and types
* Extract "default languages" from ISOLanguages
The "default languages" will also be translated depending on which language the user selected
* Skip duplicate chapters in the Reader
* Debounce "end of page" handling in the reader
* Update keyboard event listener
In case the "go" function changed, the listeners have to be updated
* 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
* Correctly scroll to page
Using "curPage" as the "initialPage" broke "scrolling up".
The page got reset to the first page in that case
* Support resume and scrolling to page for "DoublePagedPager"
* Support resume and scrolling to page for "PagedPager"
* Prevent "ReaderNavBar" from disappearing in "VerticalPager"
Due to handling the overflow on the "root" div and the "nav bar" being sticky and having a combined with of 100vw with the "vertical pager", once the first page was reached, that was behind the 100vw, the "nav bar" got moved out of the screen.
This made using the "nav bar" unusable for the "vertical pager".
* Add chapter dropdown to reader chapter nav buttons
Makes it possible to select a specific chapter inside the reader without having to leave and open the manga page
* Always show chapter nav buttons
In case they are unusable, they will be disabled
* [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
* Update the browser tab title
The tab title will be set to the same title as the "NavigationBar" with "- Tachidesk" as the suffix
* Set the manga title and chapter name as browser tab title in the reader
While the reader is still loading the "mangaId" and the "chapterIndex" will be set as the title.
* [#215] Handle metadata migration
Makes it possible to change "metadata keys" and the "app metadata key prefix" without losing data
* [#215] Fix checking and handling missing reader settings in metadata
With the new migration logic missing reader settings couldn't be detected anymore in case the metadata included outdated app metadata keys for the reader settings.
* [#215] Fix name of "IReaderSettings" property
* [#214] Move "reader settings" util functions into new file
* [#214] Extract "options" of "ReaderSettings" to new component
* [#214] Add component for changing the default reader settings
* [#214] Add default "ReaderSettings" to "Settings"
* [#214] Use default "ReaderSettings" stored on the server
Wait for both "manga" and "defaultSettings" to be loaded.
Otherwise, by the time the "manga" response was received, the "defaultSettings" might be still loading and thus, the local fallback "default" settings will get used as the "default settings"
* [#214] Save and update "ReaderSettings" options in case they are missing
- Manga gets read the first time => save settings in metadata
- Default settings get opened the first time => save settings in global metadata
* [#213] Add missing "meta" property
- IManga
- IMangaCard (optional)
- IChapter
- ICategory
* [#213] Add util functions for handling metadata
- global server
- manga
- chapter
- category
* [#213] Use "ReaderSettings" from the manga metadata
- get ReaderSettings from manga metadata
- remove unnecessary check "make sure settings has all the keys"
in case the stored settings in the metadata are outdated they will be filled with default values
* [#213] Reload manga only in case "mangaId" changed
In case the chapter is still from the same manga, a reload is unnecessary
* [#213] Only update the changed reader setting
Otherwise the app has to send patch requests to the server for every setting even if it didn't change
* [#213] Hide "openButton" on first render in case "navBar" is shown
The "openButton" was always set to be visible event in case the navBar was shown on the first render
* [#213] Open the "ReaderNavBar" if needed after receiving new settings
Otherwise, the drawer won't open in case the "navBar" was hidden on the first render since the default state in that case was set to false
* [#213] Update "ReaderSettings" after receiving the manga response
Otherwise, the default settings aren't getting removed
* [#213] Hide/Show "OpenButton" when opening/closing the drawer
Otherwise, the button stays hidden until it gets updated due to scrolling
* [#213] Keep "ReaderNavBar" state when opening prev/next chapter
In case the navBar wasn't sticky but opened, it got closed when the prev/next chapter got opened
* [#213] Prevent "ReaderNavBar" from closing when changing "staticNav" setting
* 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
* Add NavbarToolbar component for rendering items in toolbar through portal
* Refactor Manga screen, move chapters filtering to toolbar menu, cleanup ChapterOptions
* Fix warning
* Update layout of ChapterList and add selection for chapters, add batch download, move stuff around
* Add space to bookmark icon
* Clear actions when leaving source mangas page
* Move bookmark icon back inline and align it correctly with text
* Fixup MangaDetails buttons to update cache properly so buttons in manga menu are updated
* Move chapters filter to ChapterList
* Fixup error display overlapping with loaded content when revalidation fails
* Fixup spacing around ChapterList title
* Only show small progress if manga is loaded so there is not to many spinners
* Prevent title wrapping
* Add icon buttons to desktop sizes of manga toolbar menu
* Refactor simple queries with useSWR hook
* Fix plus button in Extensions screen
* Add type to categories query
* Add useQuery abstraction which adds loading attribute
* Reload categories even if reorder fails