Jack 9e5fa7d81a Add history page (#897)
* Add History module and integrate it into the app

Introduce the History module with components for displaying chapter updates, including UI for grouped updates by date. Update routing and constants to incorporate the new /history path.

* Replace "Updates" and "History" with unified "Recent" module

Merged the "Updates" and "History" screens into a single unified "Recent" module with corresponding navigation updates. Adjusted GraphQL types and localization files to reflect the changes. This simplifies navigation and improves user experience.

* Refactor History screen to remove unused components.

Removed unused states, layout effects, and props related to last update timestamp. Renamed variables for better clarity and updated labels and error messages to align with the history context. Simplified component structure for improved maintainability.

* ```
Refactor tab handling and integrate dynamic height adjustments.

Renamed enums for better clarity and consistency. Implemented a `tabsMenuHeight` prop to dynamically adjust component layouts based on observed height changes using `useResizeObserver`. Updated the `Updates` component to consider the calculated heights for improved rendering.
```

* Refactor `groupByDate` parameter and add `lastReadAt` field

Renamed `updates` to `histories` in `groupByDate` for clarity and added a debugging log for input data. Updated GraphQL fragment to include the `lastReadAt` field to support additional functionality.

* Refactor `groupByDate` parameter and add `lastReadAt` field

Renamed `updates` to `histories` in `groupByDate` for clarity and added a debugging log for input data. Updated GraphQL fragment to include the `lastReadAt` field to support additional functionality.

* Refactor `groupByDate` parameter and add `lastReadAt` field

Renamed `updates` to `histories` in `groupByDate` for clarity and added a debugging log for input data. Updated GraphQL fragment to include the `lastReadAt` field to support additional functionality.

* Refactor `groupByDate` parameter and add `lastReadAt` field

Renamed `updates` to `histories` in `groupByDate` for clarity and added a debugging log for input data. Updated GraphQL fragment to include the `lastReadAt` field to support additional functionality.

* "Optimize GraphQL type definition formatting in generated file

Condensed the formatting of the GetChaptersHistoryQuery type to a single line for improved readability and consistency. This change does not affect functionality but enhances maintainability of the generated code."

* Remove UpdateChecker component from History screen

The UpdateChecker component and its related navbar action have been removed from the History screen. This simplifies the navbar setup and eliminates unused functionality in this context.

* Refactor chapter fragment and type references

Updated `ChapterRecentListFieldsFragment` to `ChapterUpdateListFieldsFragment` for better alignment with naming conventions. Adjusted type imports and query structures to maintain consistency across files. No functional changes introduced.

* Refactor padding calculation logic in Updates screen.

Renamed state variable and refactored its logic for clarity and consistency. The updated logic now uses a more descriptive name, `listPadding`, to enhance code readability and maintainability.

* Pass `tabsMenuHeight` prop to History component

Added `tabsMenuHeight` prop to the `History` component to properly calculate the height for the `StyledGroupedVirtuoso` element. This ensures consistency with other components and improves layout rendering.

* Revert package.json

* Add last page read tracking to chapter history

Introduced "lastPageRead" and "pageCount" fields to track progress in chapter history. Updated UI to display the last page read along with total pages for chapters. Adjusted localization files to support the new "page" label.

* Remove last page read display from ChapterHistoryCard

The "last page read" information was removed from the ChapterHistoryCard component for a cleaner UI. This change simplifies the card's design by showing only the chapter name and relevant download state.

* Forcing an empty commit.

* Replace "Recent" screen with separate "Updates" and "History".

The "Recent" feature has been split into two distinct screens, "Updates" and "History", for improved clarity and functionality. Routes, icons, and components have been updated accordingly, and redundant code related to "Recent" has been removed.

* Clean

* Revert vi.json

* Remove unnecessary `useLocation` hook and update state logic.

The `useLocation` hook was removed as it was not used elsewhere in the component. The state property for the routing logic was updated to use `Chapters.getReaderOpenChapterLocationState` for better encapsulation and clarity.

* Update history localization by removing unused "page" key

Removed the "page" key from the "history" section in the localization file as it is no longer in use. This cleanup helps keep the translation file consistent and easier to maintain.

---------

Co-authored-by: NamNH <namitonguyen@gmail.com>
2025-03-10 21:53:40 +01:00
2024-10-07 13:53:45 +02:00
2021-08-08 04:45:35 +04:30
2025-03-10 21:53:40 +01:00
2025-03-10 21:53:40 +01:00
2024-12-24 13:42:01 +01:00
2023-09-29 00:37:46 +02:00
2024-02-23 20:35:38 +01:00
2021-08-18 05:34:00 +04:30
2024-08-18 22:55:13 +02:00
2024-05-23 01:22:12 +02:00
2023-10-27 20:19:04 +02:00
2024-12-24 13:42:01 +01:00
2025-02-17 01:12:56 +01:00

Suwayomi-WebUI

This is the repository of the default client of Suwayomi-Server.

The server has this web app bundled by default and is able to automatically update to the latest versions. Thus, there is no need to manually download any builds unless you want to host the app yourself instead of having it hosted by the Suwayomi-Server.

Features

  • All available Suwayomi-Server features are implemented
  • Library management
    • Filter/Sort/Search your manga
    • Use categories to categorize your manga
    • Select manga in your library and perform actions (e.g. download, change categories, mark as read, ...) on one or multiple manga
  • Manga chapter management
    • Filter/Sort the chapter list
    • Select chapters and perform actions (e.g. download, bookmark, mark as read, ...) on one or multiple manga
  • Select a range of manga/chapters by using shift + left click or long press
  • Download queue
  • Settings per device (e.g. different reader settings for pc, phone and tablet)
  • Reader settings per manga
  • Option to ignore duplicated chapters while reading
  • Option to automatically download next chapters while reading
  • Option to automatically delete downloaded chapters after reading them
  • Migration of manga between sources
  • Hide in library manga while browsing sources
  • Save source searches to easily reuse them
  • Overview of duplicated manga in your library (settings > library)
  • Duplication check when adding a new manga to your library
  • Quick add/remove a manga to your library in the source browse (hover with mouse on pc or long press on touch devices)
  • Inform about available WebUI and Server updates
  • Inform about successful WebUI and Server updates since the last time the app was used

Preview

An ongoing changelog of all relevant changes since the last stable release can be found here

To use the preview version you can select the PREVIEW channel in the settings of your Suwayomi-Server. The server is then able to download and also keep the version automatically up-to-date.

Keep in mind that the preview version might need a newer version than the stable server. In case your server is outdated, it will automatically downgrade to the latest compatible WebUI version.

Minified builds of WebUI can be found here Suwayomi-WebUI-preview.

Additionally, there is an online build of the WebUI preview version that is available here. Make sure to set your Suwayomi-Server hostname in Settings or you'll get infinite loading. Also note that its the latest revision of WebUI and might not work correctly if you connect to a stable build of Suwayomi-Server.

Contributing and Technical info

See CONTRIBUTING.md.

Translation

Feel free to translate the project on Weblate

Translation Progress Translation status

License

Copyright (C) Contributors to the Suwayomi project

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
Description
Material You styled Suwayomi WebUI
Readme 26 MiB
Languages
TypeScript 99.9%