Add ChaptersCueImportModal for importing chapters from .cue files

- Implemented a new modal component for importing chapters from .cue files, allowing users to select and preview chapters.
- Added functionality to parse .cue files and display chapter information, including start times and titles.
- Integrated the modal into the chapters page, providing a button to open the import modal.
- Updated localization strings to support new UI elements and messages related to cue file import.
- Added Cypress tests to ensure correct behavior when importing valid and invalid cue files.
This commit is contained in:
Piotr Niełacny 2025-12-19 10:27:41 +00:00
parent 626596b192
commit 5d5b67a069
4 changed files with 413 additions and 1 deletions

View file

@ -19,6 +19,7 @@
"ButtonChangeRootPassword": "Change Root Password",
"ButtonCheckAndDownloadNewEpisodes": "Check & Download New Episodes",
"ButtonChooseAFolder": "Choose a folder",
"ButtonChooseCueFile": "Choose .cue file",
"ButtonChooseFiles": "Choose files",
"ButtonClearFilter": "Clear Filter",
"ButtonClose": "Close",
@ -47,6 +48,7 @@
"ButtonLibrary": "Library",
"ButtonLogout": "Logout",
"ButtonLookup": "Lookup",
"ButtonImportCue": "Import .cue",
"ButtonManageTracks": "Manage Tracks",
"ButtonMapChapterTitles": "Map Chapter Titles",
"ButtonMatchAllAuthors": "Match All Authors",
@ -147,6 +149,7 @@
"HeaderEreaderSettings": "Ereader Settings",
"HeaderFiles": "Files",
"HeaderFindChapters": "Find Chapters",
"HeaderImportCue": "Import .cue",
"HeaderIgnoredFiles": "Ignored Files",
"HeaderItemFiles": "Item Files",
"HeaderItemMetadataUtils": "Item Metadata Utils",
@ -760,6 +763,8 @@
"MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
"MessageChapterStartIsAfter": "Chapter start is after the end of your audiobook",
"MessageChaptersNotFound": "Chapters not found",
"MessageCueNoChaptersFound": "No chapters found in .cue file",
"MessageCueSelectFile": "Select a .cue file to preview chapters",
"MessageCheckingCron": "Checking cron...",
"MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
"MessageConfirmDeleteApiKey": "Are you sure you want to delete API key \"{0}\"?",
@ -1023,6 +1028,7 @@
"ToastChaptersMustHaveTitles": "Chapters must have titles",
"ToastChaptersRemoved": "Chapters removed",
"ToastChaptersUpdated": "Chapters updated",
"ToastCueParseFailed": "Failed to parse .cue file",
"ToastCollectionItemsAddFailed": "Item(s) added to collection failed",
"ToastCollectionRemoveSuccess": "Collection removed",
"ToastCollectionUpdateSuccess": "Collection updated",