From 1f2513d5650ecd43fd50748ea947bda43aff9cbb Mon Sep 17 00:00:00 2001 From: natreex Date: Mon, 22 Dec 2025 18:17:07 -0500 Subject: [PATCH] Refactor `DeleteBook` component to update synchronization states and remove unused session updates --- components/book/settings/DeleteBook.tsx | 37 +++++++------------------ 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/components/book/settings/DeleteBook.tsx b/components/book/settings/DeleteBook.tsx index 578f822..8e21495 100644 --- a/components/book/settings/DeleteBook.tsx +++ b/components/book/settings/DeleteBook.tsx @@ -9,18 +9,21 @@ import {AlertContext, AlertContextProps} from "@/context/AlertContext"; import AlertBox from "@/components/AlertBox"; import OfflineContext, {OfflineContextType} from "@/context/OfflineContext"; import {BookContext} from "@/context/BookContext"; +import {BooksSyncContext, BooksSyncContextProps} from "@/context/BooksSyncContext"; +import {SyncedBook} from "@/lib/models/SyncedBook"; interface DeleteBookProps { bookId: string; } export default function DeleteBook({bookId}: DeleteBookProps) { - const {session, setSession} = useContext(SessionContext); + const {session} = useContext(SessionContext); const {lang} = useContext(LangContext) const {isCurrentlyOffline} = useContext(OfflineContext); const {book} = useContext(BookContext); const [showConfirmBox, setShowConfirmBox] = useState(false); const {errorMessage} = useContext(AlertContext) + const {serverOnlyBooks,setServerOnlyBooks,localOnlyBooks,setLocalOnlyBooks} = useContext(BooksSyncContext); function handleConfirmation(): void { setShowConfirmBox(true); @@ -34,7 +37,8 @@ export default function DeleteBook({bookId}: DeleteBookProps) { id: bookId, }); } else { - if (book?.localBook) { + const ifLocalBook:SyncedBook|undefined = localOnlyBooks.find((book: SyncedBook):boolean => book.id === bookId); + if (ifLocalBook) { response = await window.electron.invoke('db:book:delete', { id: bookId, }); @@ -51,33 +55,12 @@ export default function DeleteBook({bookId}: DeleteBookProps) { } if (response) { setShowConfirmBox(false); - const updatedBooks: BookProps[] = (session.user?.books || []).reduce((acc: BookProps[], book: BookProps): BookProps[] => { - if (book.bookId !== bookId) { - acc.push({...book}); - } - return acc; - }, []); - if (!response) { - errorMessage("Une erreur est survenue lors de la suppression du livre."); + if (book?.localBook){ + setLocalOnlyBooks(localOnlyBooks.filter((book:SyncedBook):boolean => book.id !== bookId)); return; } - const updatedUser = { - ...(JSON.parse(JSON.stringify(session.user))), - books: updatedBooks - }; - - const newSession = { - ...JSON.parse(JSON.stringify(session)), - user: updatedUser, - isConnected: true, - accessToken: session.accessToken - }; - - setSession(newSession); - - setTimeout((): void => { - setSession({...newSession}); - }, 0); + setServerOnlyBooks(serverOnlyBooks.filter((book:SyncedBook):boolean => book.id !== bookId)); + setShowConfirmBox(false); } } catch (e: unknown) { if (e instanceof Error) {