Commit Graph

426 Commits

Author SHA1 Message Date
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
37224122e6 Enable add/remove manga from library in source global search on long press (#729)
Was supposed to be added with 29860482a6
2024-04-11 02:02:25 +02:00
schroda
f036f01f70 Fix/properly reset cache and queues on server url change and backup import (#725)
* Reset cache on server url change

* Reset image queue

* Completely reset apollo store
2024-04-10 01:23:08 +02:00
schroda
d74bd2f80d Allow editing SOCKS and basic auth settings while disabled (#726)
In case these settings were disabled, the other dependent settings were not editable.
This prevented them from being set up as needed before enabling them
2024-04-10 01:22:58 +02:00
Nikita Shaposhnikov
1519d0447e Link to manga from updates (#646)
* added link component to avatar in updates

* Fix linting issues

---------

Co-authored-by: schroda <50052685+schroda@users.noreply.github.com>
2024-04-10 00:04:02 +02:00
schroda
5edb14aefc Feature/settings auto downlaod add new exclude reuploads setting (#717)
* [Codegen] Update generated files

* [Tooling] Run ts-node with transpile only option

* Add new ignore re-uploads from auto download setting
2024-04-07 21:47:07 +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
ecd9b7478b Add range selection (#707) 2024-04-05 02:03:00 +02:00
schroda
c4139b5d51 Only trigger track progress on last page read (#693) 2024-04-01 02:30:58 +02:00
schroda
5a2f77d124 Trigger track progress on last page read of chapter (#690) 2024-04-01 01:22:49 +02:00
schroda
21acbd5f48 Fix/tracking updating score (#682)
* Use SelectSetting for updating track score

* Create custom Select component
2024-03-29 18:57:52 +01:00
schroda
511b1f7c5e Specify type of custom scalars 2024-03-29 00:45:38 +01:00
schroda
d22bfaa55c Implement tracker login and logout 2024-03-29 00:45:38 +01:00
schroda
6fc70121c6 Fix/manually deleting chapter ignores bookmark (#675)
* Rename "Chapters::isAutoDeletable" to "isDeletable"

* Rename "Chapters::getAutoDeletable" to "getDeletable"

* Prevent manually deleting bookmarked chapters unless allowed
2024-03-26 23:39:04 +01:00
schroda
6186cb0ea3 Optionally hide library manga when browsing source (#665) 2024-03-23 23:44:46 +01:00
schroda
66d6c95dfd Feature/automatically load more pages until scrollbar is visible (#667)
* Rename "grifRed" to "gridWrapperRef"

* Automatically fetch more pages until scrollbar is visible
2024-03-23 23:34:33 +01:00
Chance Zibolski
0bf88d3fd1 Update reader width live when updating in reader view (#581)
Basically, instead of updating the width of the image after clicking
`ok`, the width is adjusted live, which makes it easier to figure out
the right value for the manga being viewed.

While implementing this, I realized we can't update the backend every
time we re-render when `liveUpdate` is true, so I've updated the logic
for persisting settings to support skipping the API call to save the
settings in the backend, and only perform the API it when the user
clicks ok on the number setting.

Signed-off-by: Chance Zibolski <chance.zibolski@gmail.com>
2024-03-18 18:35:35 +01: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
ed74f7c851 Make remaining image requests abortable (#645) 2024-03-08 00:24:01 +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
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
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
2a72cd43db Use "a" tag for manual backup creation download link (#626)
5017ba9932 did not fix the problem
2024-03-01 18:27:28 +01:00
schroda
c538af4462 Prevent unnecessary chapter updated due to restoring last read page (#621)
When resuming a chapter and restoring the last read page, a chapter update was send for the just restored page
2024-03-01 01:17:03 +01:00
schroda
21bb931a74 Use full available width for reader component (#618)
Due to horizontally centering the flex-box items via "alignItems", the items did not stretch anymore, which is the default value for "alignItems" and thus, did not take up the available width.

Regression introduced with ab0ecf4da0
2024-02-22 19:24:27 +01:00
schroda
629b742140 Feature/settings add new socks proxy settings (#617)
* Add new socks settings

* [VersionMapping] Require server version "r1493" for preview
2024-02-22 00:25:12 +01:00
schroda
ab0ecf4da0 Center page number correctly (#616) 2024-02-21 23:39:12 +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
97ab4004a6 Do not update chapter in case it has not been loaded yet (#612) 2024-02-18 15:20:37 +01:00
schroda
5a9618aefe Correctly update function refs when state changes (#611) 2024-02-18 15:20:30 +01:00
schroda
e5ffbb462c Feature/gql remove download ahead limit (#608)
* Use new "autoDownloadNewChaptersLimit" setting

* Use "downloadAheadLimit" from metadata

Should have been changed with 2acf2b6d33
2024-02-17 20:24:02 +01:00
schroda
fd651b6165 Feature/add vui as webui flavor (#609)
* Remove unused "downloadAhead" function

* [Codegen] Update generated files

* Add "VUI" as webui flavor

* Add info about changing the webUI channel or flavor
2024-02-17 20:16:51 +01:00
schroda
05077b4a2b Correctly link to custom repos settings (#603)
Regression introduced with 4b54b09395
2024-02-17 16:53:53 +01:00
schroda
4b54b09395 Rename "ExtensionSettings" to "BrowseSettings" (#600) 2024-02-16 19:53:00 +01:00
schroda
c099e01fb7 Add manga fetch timestamp to thumbnail url (#598)
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
2024-02-16 19:38:13 +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
0edec685f9 Correctly select next chapter id for download ahead (#596)
Chapters are being fetched sorted by descending source order, thus, the next chapters index is less than the current one

Regression introduced with 7caea4e526
2024-02-13 01:53:49 +01:00
schroda
444ebf8007 Fix/reader outdated chapter page count (#593)
* Always fetch pages for not downloaded chapter

The pages of non downloaded chapters have to be re-fetched since the local data might be out of date which would result in page fetch failures

* Correctly check for loading state of chapter

For the first render of e.g. the next chapter, the "arePagesLoaded" flag was still true from the previous chapter which caused the loading state to incorrectly be false.

This caused pages to get requested which on server side potentially pointed to invalid urls and thus the requests failed.

* Use updated chapter in case page count changed
2024-02-12 21:45:50 +01:00
schroda
5017ba9932 Handle backup creation on same domain as server (#592)
In case the webUI is hosted by the server the backup creation caused the app to navigate to the backup url which resulted in an empty page

Regression introduced with db5d3ff7c0
2024-02-12 21:45:33 +01:00
schroda
7caea4e526 Download ahead only in case current and next chapter are downloaded 2024-02-12 20:53:53 +01:00
schroda
b074de26a2 Fix/install external extension does not update extension list (#580)
* Update extension list after installing external extension file

The cache was never updated after the installation

* Make it possible to install external extension while having an empty list

* Show toasts while having an empty extension list

* Use correct extension id

* Update extension action after manual file installation

When installing an external extension the action button did not get updated due to this being an internal state of the ExtensionCard.
By including this in the key, it gets ensured that the component will get correctly updated
2024-01-29 20:59:27 +01:00
schroda
c483e71bf1 Remove automatic manga update (#583)
Since the server now has an automatic global update functionality, this is not needed anymore
2024-01-29 20:55:33 +01:00
schroda
10ec7de628 Correctly calculate width (#578) 2024-01-26 23:59:12 +01:00
schroda
f335b59dca Actually send library db cleanup mutation (#577) 2024-01-26 21:36:07 +01:00
schroda
18ca66cb40 Feature/settings add flaresolverr (#568)
* [Codegen] Update to server changes

* Set "dialogTitle" by default to "settingTitle" for "NumberSetting"

* Add FlareSolverr to settings

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

* Replace static strings with translation keys
2024-01-26 21:20:06 +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
e0c5e0521d Feature/manga migration (#536)
* Add "migration" tab to "Browse" screen

* Add missing useEffect cleanup for navbar title and actions

* Make "SourceGridLayout" reusable

* Add migration tab to "Browse"

* Add migration logic
2024-01-26 20:50:51 +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
dcbf5a1899 Fix/library manga selection type error (#566)
* Prevent TypeError when deselecting items from a specific key

This was noticed when changing the categories of a manga to a category without any selected mangas, in this case, when trying to deselect a manga after changing the categories, a TypeError was thrown which resulted in a white screen

* Remove duplicates from the list of all selected ids

* Update state via setter

* Clear selection after disabling the library selection mode

* Remove console log
2024-01-21 22:31:43 +01:00