/* * 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 https://mozilla.org/MPL/2.0/. */ import FilterList from '@mui/icons-material/FilterList'; import IconButton from '@mui/material/IconButton'; import * as React from 'react'; import { useTranslation } from 'react-i18next'; import PopupState, { bindMenu, bindTrigger } from 'material-ui-popup-state'; import Menu from '@mui/material/Menu'; import DownloadIcon from '@mui/icons-material/Download'; import DoneAllIcon from '@mui/icons-material/DoneAll'; import { useMemo } from 'react'; import { CustomTooltip } from '@/modules/core/components/CustomTooltip.tsx'; import { ChapterOptions } from '@/modules/chapter/components/ChapterOptions.tsx'; import { isFilterActive, updateChapterListOptions } from '@/modules/chapter/utils/ChapterList.util.tsx'; import { ChapterBookmarkInfo, ChapterDownloadInfo, ChapterIdInfo, ChapterListOptions, ChapterReadInfo, } from '@/modules/chapter/Chapter.types.ts'; import { ChaptersDownloadActionMenuItems } from '@/modules/chapter/components/actions/ChaptersDownloadActionMenuItems.tsx'; import { Chapters } from '@/modules/chapter/services/Chapters.ts'; interface IProps { mangaId: number; options: ChapterListOptions; updateOption: ReturnType; chapters: (ChapterIdInfo & ChapterReadInfo & ChapterDownloadInfo & ChapterBookmarkInfo)[]; scanlators: string[]; excludeScanlators: string[]; } export const ChaptersToolbarMenu = ({ mangaId, options, updateOption, chapters, scanlators, excludeScanlators, }: IProps) => { const { t } = useTranslation(); const [open, setOpen] = React.useState(false); const isFiltered = isFilterActive(options); const areAllChaptersRead = useMemo(() => chapters.every(Chapters.isRead), [chapters]); const areAllChaptersDownloaded = useMemo(() => chapters.every(Chapters.isDownloaded), [chapters]); return ( <> Chapters.markAsRead(Chapters.getNonRead(chapters), true, mangaId)} color="inherit" > {(popupState) => ( <> {popupState.isOpen && ( )} )} setOpen(true)} color="inherit"> setOpen(false)} options={options} updateOption={updateOption} scanlators={scanlators} excludedScanlators={excludeScanlators} /> ); };