diff --git a/apps/readest-app/src/components/BookDetailModal.tsx b/apps/readest-app/src/components/BookDetailModal.tsx index 92d8b9d2..21e38b37 100644 --- a/apps/readest-app/src/components/BookDetailModal.tsx +++ b/apps/readest-app/src/components/BookDetailModal.tsx @@ -2,11 +2,13 @@ import clsx from 'clsx'; import React, { useEffect, useState } from 'react'; import Image from 'next/image'; +import Alert from '@/components/Alert'; import { Book } from '@/types/book'; import { BookDoc } from '@/libs/document'; import { useEnv } from '@/context/EnvContext'; import { useSettingsStore } from '@/store/settingsStore'; import { useTranslation } from '@/hooks/useTranslation'; +import { useLibraryStore } from '@/store/libraryStore'; import { formatDate, formatLanguage, formatPublisher, formatSubject } from '@/utils/book'; import WindowButtons from '@/components/WindowButtons'; import Spinner from './Spinner'; @@ -20,9 +22,11 @@ interface BookDetailModalProps { const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => { const _ = useTranslation(); const [loading, setLoading] = useState(false); + const [showDeleteAlert, setShowDeleteAlert] = useState(false); const [bookMeta, setBookMeta] = useState(null); const { envConfig } = useEnv(); const { settings } = useSettingsStore(); + const { deleteBook } = useLibraryStore(); useEffect(() => { if (!isOpen) return; @@ -57,6 +61,16 @@ const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => { onClose(); }; + const handleDelete = () => { + setShowDeleteAlert(true); + } + + const confirmDelete = () => { + deleteBook(envConfig, book); + handleClose(); + setShowDeleteAlert(false); + }; + if (!isOpen) return null; if (!bookMeta) @@ -112,6 +126,12 @@ const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => {

{book.author || _('Unknown')}

+ @@ -161,6 +181,14 @@ const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => { + {showDeleteAlert && ( + { setShowDeleteAlert(false); handleClose(); }} + onClickConfirm={confirmDelete} + /> + )} ); };