* 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 these settings were disabled, the other dependent settings were not editable.
This prevented them from being set up as needed before enabling them
* 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
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>
* 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.
* 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
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
* 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
* Remove unused "downloadAhead" function
* [Codegen] Update generated files
* Add "VUI" as webui flavor
* Add info about changing the webUI channel or flavor
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
* 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.
Chapters are being fetched sorted by descending source order, thus, the next chapters index is less than the current one
Regression introduced with 7caea4e526
* 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
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
* 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
* [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
* 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>