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:
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user