* Add script to run eslint for the project
* Add GitHub Action for linting
Prevent merges with linting errors
* Rename GitHub Action "build_push" to "build_push_master"
* Always show month and day of the chapters release date with 2 digits
In case the month or date is one digit a leading 0 will be added
* Show more detailed upload date information for chapter uploads from today or yesterday
In case the upload date is from today or yesterday the shown upload date will be e.g. "Today at 02:50", otherwise, just the date will be shown e.g. "04.01.2023"
* 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
* Fix library update progress rendering
The websocket sends a list with mangas for each category (completed, running, pending) instead of a number.
This resulted in the progress to always be 0
* Prevent TypeError
The "UpdateStatus" can have a "statusMap" that contains not data.
Co-authored-by: schroda <github@dasch.simplelogin.com>