From 5c79e3514a9cc039effeb481c05a8037421a792d Mon Sep 17 00:00:00 2001 From: Rohith Singh <104308198+RohittCodes@users.noreply.github.com> Date: Sun, 22 Dec 2024 00:26:36 +0530 Subject: [PATCH] feat: edit description (#406) * feat: edit-desc * included pw-tests --- ...description.spec.ts-update-description.png | Bin 0 -> 48729 bytes playwright-tests/update-description.spec.ts | 18 ++++ src/components/EditorNav.tsx | 19 +++- .../dialogs/edit-description-dialog.tsx | 96 ++++++++++++++++++ 4 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 playwright-tests/snapshots/update-description.spec.ts-update-description.png create mode 100644 playwright-tests/update-description.spec.ts create mode 100644 src/components/dialogs/edit-description-dialog.tsx diff --git a/playwright-tests/snapshots/update-description.spec.ts-update-description.png b/playwright-tests/snapshots/update-description.spec.ts-update-description.png new file mode 100644 index 0000000000000000000000000000000000000000..bf99f8be6d4d2abdc8ed8227a721956a991a35f2 GIT binary patch literal 48729 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 { + await page.goto("http://localhost:5177/editor?snippet_id=snippet_3") + await page.getByRole("button", { name: "Fake testuser Login" }).click() + await page.locator('[id="radix-\\:rm\\:"]').click() + await page.waitForTimeout(2000) + await page.getByRole("menuitem", { name: "Edit Description" }).click() + await page.getByPlaceholder("Enter new description").press("End") + await page + .getByPlaceholder("Enter new description") + .fill("Check out this new description") + await page.getByRole("button", { name: "Update" }).click() + await page.locator('[id="radix-\\:rm\\:"]').click() + await page.waitForTimeout(2000) + await page.getByRole("menuitem", { name: "Edit Description" }).click() + await expect(page).toHaveScreenshot("update-description.png") +}) diff --git a/src/components/EditorNav.tsx b/src/components/EditorNav.tsx index 06bc3e50..9c1b7289 100644 --- a/src/components/EditorNav.tsx +++ b/src/components/EditorNav.tsx @@ -22,6 +22,7 @@ import { Eye, EyeIcon, File, + FilePenLine, MoreVertical, Package, Pencil, @@ -44,6 +45,7 @@ import { useRenameSnippetDialog } from "./dialogs/rename-snippet-dialog" import { DownloadButtonAndMenu } from "./DownloadButtonAndMenu" import { SnippetLink } from "./SnippetLink" import { TypeBadge } from "./TypeBadge" +import { useUpdateDescriptionDialog } from "./dialogs/edit-description-dialog" export default function EditorNav({ circuitJson, @@ -72,6 +74,10 @@ export default function EditorNav({ const isLoggedIn = useGlobalStore((s) => Boolean(s.session)) const { Dialog: RenameDialog, openDialog: openRenameDialog } = useRenameSnippetDialog() + const { + Dialog: UpdateDescriptionDialog, + openDialog: openupdateDescriptionDialog, + } = useUpdateDescriptionDialog() const { Dialog: DeleteDialog, openDialog: openDeleteDialog } = useConfirmDeleteSnippetDialog() const { Dialog: CreateOrderDialog, openDialog: openCreateOrderDialog } = @@ -209,7 +215,7 @@ export default function EditorNav({ )} -

+
{snippet && }
+ void + snippetId: string + currentDescription: string + onUpdate?: (newDescription: string) => void +}) => { + const [newDescription, setNewDescription] = useState(currentDescription) + const axios = useAxios() + const { toast } = useToast() + const qc = useQueryClient() + + const updateDescriptionMutation = useMutation({ + mutationFn: async () => { + const response = await axios.post("/snippets/update", { + snippet_id: snippetId, + description: newDescription, + }) + if (response.status !== 200) { + throw new Error("Failed to update description") + } + return response.data + }, + onMutate: async () => { + await qc.cancelQueries({ queryKey: ["snippets", snippetId] }) + const previousSnippet = qc.getQueryData(["snippets", snippetId]) + qc.setQueryData(["snippets", snippetId], (old: any) => ({ + ...old, + description: newDescription, + })) + return { previousSnippet } + }, + onSuccess: () => { + onUpdate?.(newDescription) + onOpenChange(false) + toast({ + title: "Description updated", + description: "Successfully updated snippet description", + }) + }, + onError: (error, variables, context) => { + qc.setQueryData(["snippets", snippetId], context?.previousSnippet) + console.error("Error updating description:", error) + toast({ + title: "Error", + description: "Failed to update the description. Please try again.", + variant: "destructive", + }) + }, + onSettled: () => { + qc.invalidateQueries({ queryKey: ["snippets", snippetId] }) + }, + }) + + return ( + + + + Update Description + +