Fix chapter list selection with active filters

The selection always used the whole chapter list regardless of the active filters, which potentially caused hidden chapters from getting selected
This commit is contained in:
schroda
2025-05-20 23:26:45 +02:00
parent 7885bcda98
commit e888c989e9

View File

@@ -138,18 +138,17 @@ export const ChapterList = ({
); );
const chapters = useMemo(() => chaptersData?.chapters.nodes ?? [], [chaptersData?.chapters.nodes]); const chapters = useMemo(() => chaptersData?.chapters.nodes ?? [], [chaptersData?.chapters.nodes]);
const chapterIds = useMemo(() => chapters.map((chapter) => chapter.id), [chapters]);
const { areNoItemsSelected, areAllItemsSelected, selectedItemIds, handleSelectAll, handleSelection } =
useSelectableCollection(chapters.length, { itemIds: chapterIds, currentKey: 'default' });
const visibleChapters = useMemo(() => filterAndSortChapters(chapters, options), [chapters, options]); const visibleChapters = useMemo(() => filterAndSortChapters(chapters, options), [chapters, options]);
const visibleChapterIds = useMemo(() => Chapters.getIds(visibleChapters), [visibleChapters]);
const areAllChaptersRead = Mangas.isFullyRead(manga); const areAllChaptersRead = Mangas.isFullyRead(manga);
const areAllChaptersDownloaded = Mangas.isFullyDownloaded(manga); const areAllChaptersDownloaded = Mangas.isFullyDownloaded(manga);
const noChaptersFound = chapters.length === 0; const noChaptersFound = chapters.length === 0;
const noChaptersMatchingFilter = !noChaptersFound && visibleChapters.length === 0; const noChaptersMatchingFilter = !noChaptersFound && visibleChapters.length === 0;
const { areNoItemsSelected, areAllItemsSelected, selectedItemIds, handleSelectAll, handleSelection } =
useSelectableCollection(visibleChapterIds.length, { itemIds: visibleChapterIds, currentKey: 'default' });
const onSelect = useCallback( const onSelect = useCallback(
(id: number, selected: boolean, selectRange?: boolean) => handleSelection(id, selected, { selectRange }), (id: number, selected: boolean, selectRange?: boolean) => handleSelection(id, selected, { selectRange }),
[handleSelection], [handleSelection],
@@ -235,9 +234,7 @@ export const ChapterList = ({
<SelectableCollectionSelectAll <SelectableCollectionSelectAll
areAllItemsSelected={areAllItemsSelected} areAllItemsSelected={areAllItemsSelected}
areNoItemsSelected={areNoItemsSelected} areNoItemsSelected={areNoItemsSelected}
onChange={(checked) => onChange={(checked) => handleSelectAll(checked, checked ? visibleChapterIds : [])}
handleSelectAll(checked, checked ? chapters.map((chapter) => chapter.id) : [])
}
/> />
</Stack> </Stack>
</ChapterListHeader> </ChapterListHeader>