From e0a74eeb9e92bfa25d0a5c98b2a530a28c286f86 Mon Sep 17 00:00:00 2001 From: KoCoder Date: Thu, 4 Jun 2026 17:17:36 +0200 Subject: [PATCH] Reset the form and refresh the list below --- .../shortener/createRedirectionForm.tsx | 18 +++++++++++++++--- src/integrations/connect-query/solid.tsx | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/components/shortener/createRedirectionForm.tsx b/src/components/shortener/createRedirectionForm.tsx index 9a64627..afc3075 100644 --- a/src/components/shortener/createRedirectionForm.tsx +++ b/src/components/shortener/createRedirectionForm.tsx @@ -1,10 +1,18 @@ -import { useConnectMutation } from "~/integrations/connect-query/solid"; -import { createURLRedirection } from "~/gen/proto/shorten/v1/shorten-ShortenService_connectquery"; +import { + useConnectMutation, + getConnectQueryKey, +} from "~/integrations/connect-query/solid"; +import { + createURLRedirection, + listURLRedirections, +} from "~/gen/proto/shorten/v1/shorten-ShortenService_connectquery"; import useAppForm from "../form/appform"; import { Button } from "../ui/button"; +import { useQueryClient } from "@tanstack/solid-query"; const CreateRedirectionForm = () => { const mutation = useConnectMutation(createURLRedirection); + const queryClient = useQueryClient(); const form = useAppForm(() => ({ defaultValues: { @@ -16,6 +24,10 @@ const CreateRedirectionForm = () => { url: values.value.url, shortCode: values.value.slug, }); + queryClient.invalidateQueries({ + queryKey: getConnectQueryKey(listURLRedirections), + }); + form.reset(); }, })); return ( @@ -36,7 +48,7 @@ const CreateRedirectionForm = () => { )} diff --git a/src/integrations/connect-query/solid.tsx b/src/integrations/connect-query/solid.tsx index b62580f..b35207c 100644 --- a/src/integrations/connect-query/solid.tsx +++ b/src/integrations/connect-query/solid.tsx @@ -88,3 +88,20 @@ export function useConnectMutation< }; }); } + +export function getConnectQueryKey< + I extends DescMessage, + O extends DescMessage +>( + schema: DescMethodUnary, + input?: MessageInitShape, +): [string, { serviceName: string; methodName: string; input?: MessageInitShape }] { + return [ + "connect-query", + { + serviceName: schema.parent.typeName, + methodName: schema.name, + ...(input !== undefined ? { input } : {}), + }, + ]; +}