Skip to content

Commit

Permalink
fix: sync quick action buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
bryanlundberg committed Sep 17, 2024
1 parent 5c2f116 commit 457b5b2
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 27 deletions.
72 changes: 52 additions & 20 deletions src/components/menu-solve-options/menu-solve-options.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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) {
Expand All @@ -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]);

Expand Down Expand Up @@ -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("", {
Expand All @@ -100,6 +123,7 @@ export default function MenuSolveOptions({
selectedCube: selectedCube,
type: "BOOKMARK",
});

const lastCubes = await getAllCubes();
setCubes([...lastCubes]);

Expand All @@ -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,
});
}
};
Expand Down
12 changes: 7 additions & 5 deletions src/components/sheets/sheet-solve-details/SheetSolveDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,13 @@ export default function SheetSolveDetails() {
<Textarea className="mt-3 resize-none h-40" />
</div> */}

<MenuSolveOptions
solve={solve}
onDeleteSolve={handleCloseDialogSolve}
caseOfUse="modal-solve"
/>
{solve && (
<MenuSolveOptions
solve={solve}
onDeleteSolve={handleCloseDialogSolve}
caseOfUse="modal-solve"
/>
)}

<Image
src={"/brand_logo.svg"}
Expand Down
4 changes: 2 additions & 2 deletions src/store/DialogSolve.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ interface DialogSolveProps {
isDialogSolveOpen: boolean;
handleOpenDialogSolve: ({ solve }: { solve: Solve }) => void;
handleCloseDialogSolve: () => void;
handleSetSolveInDialog: ({ solve }: { solve: Solve }) => void;
handleSetSolveInDialog: ({ solve }: { solve: Solve | null }) => void;
}

export const useDialogSolve = create<DialogSolveProps>((set) => ({
Expand All @@ -18,7 +18,7 @@ export const useDialogSolve = create<DialogSolveProps>((set) => ({
handleCloseDialogSolve: () => {
set((prev) => ({ ...prev, isDialogSolveOpen: false }));
},
handleSetSolveInDialog: ({ solve }: { solve: Solve }) => {
handleSetSolveInDialog: ({ solve }: { solve: Solve | null }) => {
set((prev) => ({ ...prev, solve: solve }));
},
}));

0 comments on commit 457b5b2

Please sign in to comment.