From 457b5b22a3c81f0deeb595033efa173cb19d293f Mon Sep 17 00:00:00 2001 From: Bryan Lundberg Date: Tue, 17 Sep 2024 08:11:18 -0600 Subject: [PATCH] fix: sync quick action buttons --- .../menu-solve-options/menu-solve-options.tsx | 72 +++++++++++++------ .../sheet-solve-details/SheetSolveDetails.tsx | 12 ++-- src/store/DialogSolve.ts | 4 +- 3 files changed, 61 insertions(+), 27 deletions(-) diff --git a/src/components/menu-solve-options/menu-solve-options.tsx b/src/components/menu-solve-options/menu-solve-options.tsx index 7885181..c808ad0 100644 --- a/src/components/menu-solve-options/menu-solve-options.tsx +++ b/src/components/menu-solve-options/menu-solve-options.tsx @@ -10,6 +10,7 @@ import { Solve } from "@/interfaces/Solve"; import formatTime from "@/lib/formatTime"; import updateSolve from "@/lib/updateSolve"; import { useDialogSolve } from "@/store/DialogSolve"; +import { useSolveFiltersStore } from "@/store/SolvesFilters"; import { useTimerStore } from "@/store/timerStore"; import { BookmarkFilledIcon, @@ -30,11 +31,11 @@ export default function MenuSolveOptions({ caseOfUse: "last-solve" | "modal-solve"; }) { const t = useTranslations("Index"); - const { selectedCube, setCubes, setSelectedCube } = useTimerStore(); + const { selectedCube, setCubes, setSelectedCube, lastSolve, setLastSolve } = + useTimerStore(); const dialog = useDialogSolve(); - const { lastSolve, setLastSolve } = useTimerStore(); - if (!solve && !selectedCube) return null; + if (!selectedCube) return null; const handleDeleteSolve = async () => { if (solve && selectedCube) { @@ -44,6 +45,20 @@ export default function MenuSolveOptions({ type: "DELETE", }); + if (caseOfUse === "last-solve") { + if (lastSolve?.id === dialog.solve?.id) { + dialog.handleSetSolveInDialog({ solve: null }); + } + setLastSolve(null); + } + + if (caseOfUse === "modal-solve") { + if (lastSolve?.id === dialog.solve?.id) { + setLastSolve(null); + } + dialog.handleSetSolveInDialog({ solve: null }); + } + const lastCubes = await getAllCubes(); setCubes([...lastCubes]); @@ -76,14 +91,22 @@ export default function MenuSolveOptions({ setSelectedCube({ ...lastCube }); } - if (caseOfUse === "modal-solve") { - dialog.handleSetSolveInDialog({ - solve: { ...solve, plus2: !solve.plus2 }, - }); - } - - if (caseOfUse === "last-solve" && lastSolve) { - setLastSolve({ ...lastSolve, plus2: !lastSolve.plus2 }); + if (lastCube) { + const solvesGlobal = [ + ...lastCube.solves.session, + ...lastCube.solves.all, + ]; + + const updatedSolve = solvesGlobal.find((i) => i.id === solve.id); + + if (updatedSolve && lastSolve && updatedSolve.id === lastSolve.id) { + dialog.handleSetSolveInDialog({ solve: { ...updatedSolve } }); + setLastSolve({ ...updatedSolve }); + } else if (updatedSolve && caseOfUse === "modal-solve") { + dialog.handleSetSolveInDialog({ solve: { ...updatedSolve } }); + } else if (updatedSolve && caseOfUse === "last-solve") { + setLastSolve({ ...updatedSolve }); + } } toast("", { @@ -100,6 +123,7 @@ export default function MenuSolveOptions({ selectedCube: selectedCube, type: "BOOKMARK", }); + const lastCubes = await getAllCubes(); setCubes([...lastCubes]); @@ -108,19 +132,27 @@ export default function MenuSolveOptions({ setSelectedCube({ ...lastCube }); } - if (caseOfUse === "modal-solve") { - dialog.handleSetSolveInDialog({ - solve: { ...solve, bookmark: !solve.bookmark }, - }); - } - - if (caseOfUse === "last-solve" && lastSolve) { - setLastSolve({ ...lastSolve, bookmark: !lastSolve.bookmark }); + if (lastCube) { + const solvesGlobal = [ + ...lastCube.solves.session, + ...lastCube.solves.all, + ]; + + const updatedSolve = solvesGlobal.find((i) => i.id === solve.id); + + if (updatedSolve && lastSolve && updatedSolve.id === lastSolve.id) { + dialog.handleSetSolveInDialog({ solve: { ...updatedSolve } }); + setLastSolve({ ...updatedSolve }); + } else if (updatedSolve && caseOfUse === "modal-solve") { + dialog.handleSetSolveInDialog({ solve: { ...updatedSolve } }); + } else if (updatedSolve && caseOfUse === "last-solve") { + setLastSolve({ ...updatedSolve }); + } } toast("", { description: "Bookmark status updated.", - duration: 1000, + duration: 500, }); } }; diff --git a/src/components/sheets/sheet-solve-details/SheetSolveDetails.tsx b/src/components/sheets/sheet-solve-details/SheetSolveDetails.tsx index 7f624b8..263d4b3 100644 --- a/src/components/sheets/sheet-solve-details/SheetSolveDetails.tsx +++ b/src/components/sheets/sheet-solve-details/SheetSolveDetails.tsx @@ -79,11 +79,13 @@ export default function SheetSolveDetails() {