Commit Graph

84 Commits

Author SHA1 Message Date
schroda
ba3aefc854 Lazy load app routes 2024-04-30 00:39:47 +02:00
schroda
082f923e10 Improve i18n resource typing 2024-04-24 23:56:06 +02:00
schroda
a7cafb59a4 Fix missing translations for language selection setting 2024-04-24 23:53:43 +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
80ad5e06be Optionally don't fire storage event
In case a value should be updated without informing subscribes about the change.
E.g. to prevent unnecessary re-renders when using a storage hook
2024-04-16 02:45:25 +02:00
schroda
1df4b4b311 Fix/source mangas applied filters lost when triggering search (#741)
* Delete storage item when setting "undefined"

* Preserve source browse filters on search

The set filters were lost in case a search was triggered
2024-04-14 15:18:51 +02:00
schroda
1b28ae27fa Feature/cleanup manga card (#716)
* Extract manga badge components

* Extract list/grid manga card

* Disable default promise error handler in production
2024-04-07 21:30:47 +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
0c22a9012e Feature/cleanup metadata related logic (#657)
* Remove unnecessary parameter from "requestUpdateServerMetadata"

* Streamline updating metadata server settings

* Move metadata related logic
2024-03-16 16:21:15 +01:00
schroda
aea5dad0ce Remember last used migration flags (#656) 2024-03-16 14:02:54 +01:00
schroda
c005316f56 Feature/update iso languages (#652)
* Extract iso language list to new file

* Update iso language list

* Add function to get full iso language object

* Change i18n resource key of "Norwegian Bokmål"
2024-03-09 02:52:34 +01:00
schroda
5e6c1c1c1b Add new languages to resources (#650) 2024-03-09 01:56:13 +01:00
schroda
535cb1b359 Fix/save active device only in local storage (#643)
* Save "activeDevice" in the local storage

* Set default back to for "DeviceSetting"
2024-03-07 01:12:35 +01:00
schroda
a3bc98c632 Consider more ui settings as global (#641) 2024-03-06 23:23:49 +01:00
schroda
4aec3c94ef Feature/support settings per device (#640)
* Optionally prevent deletion and mutation of "MutableListSetting" items

* Save server metadata per device

This makes it possible to e.g. have different settings on a desktop and a smartphone.
2024-03-06 23:07:48 +01:00
schroda
224df1300f Feature/improve back navigation button (#636)
* Improve detection of last page in history

* Use "useBackButton" in reader
2024-03-04 20:40:14 +01:00
schroda
8bdf035ca7 Feature/add option to remove manga from categories when removing from library (#633)
* Optionally remove manga categories when removing them from library

* Use "Mangas::removeFromLibrary"

* Handle uncatched promises
2024-03-02 15:28:58 +01:00
schroda
ceec260d14 Feature/reader setting add scale small pages (#615)
* Add option to stretch small pages

In case "fit page to window" is enabled, small pages can be scaled up to the available width and height, while maintaining the aspect ratio

* Cleanup "imageStyle" function
2024-02-21 02:42:07 +01:00
schroda
2acf2b6d33 Feature/download ahead trigger chapter downloads client side (#597)
* Trigger download ahead while reading client side

* Trigger download ahead while reading earlier

Download ahead was only triggered once the chapter got marked as read

* Optionally ignore dupe chapters for download ahead

* Consider current chapters scanlator for dupe check

* Update download ahead related settings

- add new metadata setting for download ahead limit
- previous setting
  - rename
  - update usage (auto download new chapters limit)

* Select chapter to auto delete while reading depending on ignore dupe setting

Currently, the n-th to last chapter always got deleted ignoring if "ignore dupes" setting was enabled or not.

* Only auto delete chapter while reading if it is read

In case not the last read but the n-th to last read chapter should get auto deleted while reading, it currently just got deleted ignoring if it has been read or not.
2024-02-16 19:16:18 +01:00
schroda
2dab88eb7e Decrease default "reader width" to 50% (#576) 2024-01-26 20:54:19 +01:00
Chance Zibolski
4d75474b39 Fix reader width (#567)
* Fix reader width

The margin: auto on the Box container for the image was preventing 100% width
to actually mean 100%.

Now that 100% is actually possible, I think fitPageToWindow makes more
sense as a default. Additionally, since the image can fill 100% of the
page, it can cover the ReaderNavBar, so set the z-index of the
ReaderNavBar so it's rendered on top of the image and clickable.

Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>

* Support configuring reader width for DoublePage readers

Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>

* Fix single page of DoublePageReader not being able to take up full width

In case the parent container is flex row, the container does not automatically take up 100% of the available width, thus, the page also was not able to take up 100% of the width

* Fix applying reader width to double pages

The set reader width can't be applied to each page of the double pages because otherwise it will already take up 100% of the available width with the setting only being at 50%.

Instead, the set width has to be divided by 2, so that both pages take up the set reader width

* Prevent double page spinner from being larger than 100% of the available width

* Update width styling of the page spinner

* Always center pages in the middle of the screen

* Take up full height fitting page to window height

---------

Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2024-01-26 20:51:08 +01:00
schroda
6edf3bad64 [ESLint] Allow zero warnings (#575) 2024-01-26 20:49:43 +01:00
Chance Zibolski
5032a0ae94 Make reader width configurable (#565)
Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
2024-01-21 22:33:13 +01:00
schroda
37ce494fda Log promise failures instead of ignoring them (#531)
In case the failure does not get handled, it should at least get logged, to prevent silently ignoring it
2023-12-31 01:42:54 +01:00
schroda
edc2a62a76 Feature/cleanup files (#528)
* Move menu components into new dir

* Move chapter components into new dir

* Extract menu helper functions

* Move "SelectionFAB" to "collection" dir

* Move debounce hook to global utils dir

* Rename manga "hooks" to "useRefreshManga"
2023-12-30 14:30:04 +01:00
schroda
e025efb9dc Feature/add manga to library category select dialog (#519)
* Move "SearchSettings" into "LibrarySettings"

* Change property "setOpen" to "onClose" for "CategorySelect"

* Optionally show category selection when adding manga to library

* Update "ignore filters" translation

* Move "ignore_filters" setting to "metadataServerSettings"
2023-12-27 18:08:16 +01:00
schroda
446deeae06 Feature/library manga actions (#506)
* Extend "IMangaGridProps" from "DefaultGridProps"

* Move library manga filtering into hook

* Add logic to select mangas

* Add manga actions

* Remove cache only policy for category mangas

Unclear why this was added

* Prevent SelectionFAB from being hidden by the mobile footer

On e.g. the library page, the footer is visible and thus, the fab was not completely visible

* Update categories of manga only after clicking "OK"

Previously, selecting a category resulted in an immediate mutation.
To be able to reuse the "CategorySelect" component to change the categories of multiple mangas at once, this behaviour is not suited.

* Add action to change categories of multiple mangas

* Cancel selection mode after removal from library

The mangas would still be selected and other action could get performed. However, this should only be possible for mangas that are in the library

* Remove unintentionally added console log

Accidentally added with 980da657d9
2023-12-25 21:37:45 +01:00
schroda
ad0f072651 Feature/automatic chapter deletion more options (#484)
* Add missing translations keys

* [Codegen] Update to latest server schema changes

* [VersionMapping] Require server version "r1431" for preview

* Rename "deleteChaptersAutoMarkedRead" metadata setting

* Add more options to auto delete chapters while reading

Makes it possible to delete the last to fifth to last read chapter instead of only being able to delete the last read chapter
2023-12-05 22:20:13 +01:00
schroda
d12ac27b61 Feature/download ahead while reading (#464)
* Download next chapters when marking chapter as read while reading

* Add "auto delete chapter" settings

* Delete chapter after finished reading

* Delete chapters after marking them as read

* Improve "mark previous as read" action

Send only ids of chapters that are actually unread
2023-11-19 21:17:35 +01:00
schroda
197ee5c94b Persist server settings when disabling them (#462)
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
2023-11-19 00:13:49 +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
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
5a5b12a9e1 [ESLint] Prefer named exports (#427) 2023-10-28 00:32:02 +02:00
schroda
b3a432ed2e Update typings 2023-10-27 20:23:46 +02:00
schroda
89dc053f00 Use gql for "mangas" I - get manga 2023-10-27 20:23:04 +02:00
schroda
f0d55c01c8 Use gql for "updating chapters" 2023-10-27 20:23:03 +02:00
schroda
80cb06dfd5 Use gql for "global metadata" 2023-10-27 20:23:01 +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
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
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
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
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
0fb204f141 Feature/request manager remove get client usage (#325)
* Remove "getClient" usage from "metadata" util

* Remove "getClient" usage from "useRefreshManga" hook

* Remove "getClient" usage from "isDupChapter" util function

* Use correct endpoint for setting category metadata

"/meta" suffix was missing from url

* Use correct http method for updating manga metadata
2023-06-04 00:50:58 +02:00
Alexandre
d60ed0c055 Add fit page to window reader setting (#323)
* Add fit page to window reader setting

* Renamed option and conditional rendering

* Rename translation key
2023-06-03 20:53:52 +02:00
schroda
a457d80c44 Feature/streamline backend requests (#297)
* 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"
2023-05-18 13:25:19 +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
schroda
8dae72604f Update to SWR version 2.x (#296)
* Update SWR to version 2.1.5

* Improve generic type names

* Use "isLoading" property of "useSWR" response

* Correctly load library without selected tab

With the latest SWR version the library was empty on the first load.
Not sure what exactly is the reason, but due to "isPaused" the request wasn't sent even after "activeTab" wasn't undefined anymore.
Instead of using "isPaused", passing "null" as the key will also prevent SWR from doing the request.
2023-05-15 11:56:55 +02:00
schroda
bd91510227 Remove eslint rule deactivations (#290) 2023-05-11 18:00:37 +02:00