From 8242d186fefaa3219c413967bb17fbcce8b0f4f2 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 10 Jun 2025 13:51:49 +0300 Subject: [PATCH] fix create slot --- .../profile/schedule/slots/[documentId]/page.tsx | 7 +++++++ .../schedule/day-slots-list/day-slot-add-form.tsx | 3 +++ apps/web/hooks/api/slots.ts | 10 +++++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/web/app/(main)/profile/schedule/slots/[documentId]/page.tsx b/apps/web/app/(main)/profile/schedule/slots/[documentId]/page.tsx index 986aa79..6529c27 100644 --- a/apps/web/app/(main)/profile/schedule/slots/[documentId]/page.tsx +++ b/apps/web/app/(main)/profile/schedule/slots/[documentId]/page.tsx @@ -1,3 +1,4 @@ +import { getSlot } from '@/actions/api/slots'; import { Container } from '@/components/layout'; import { PageHeader } from '@/components/navigation'; import { SlotButtons, SlotDateTime, SlotOrdersList } from '@/components/schedule'; @@ -8,9 +9,15 @@ type Props = { params: Promise }; export default async function SlotPage(props: Readonly) { const parameters = await props.params; + const documentId = parameters.documentId; const queryClient = new QueryClient(); + await queryClient.prefetchQuery({ + queryFn: () => getSlot({ documentId }), + queryKey: ['slot', documentId], + }); + return ( diff --git a/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx b/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx index b0633c9..cb74176 100644 --- a/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx +++ b/apps/web/components/schedule/day-slots-list/day-slot-add-form.tsx @@ -3,6 +3,7 @@ import { EditableTimeRangeForm } from '@/components/shared/time-range'; import { useSlotCreate } from '@/hooks/api/slots'; +import { useDateTimeStore } from '@/stores/datetime'; import { ScheduleStoreProvider, useScheduleStore } from '@/stores/schedule'; import { withContext } from '@/utils/context'; import { Enum_Slot_State } from '@repo/graphql/types'; @@ -11,6 +12,7 @@ import { PlusSquare } from 'lucide-react'; import { type FormEvent } from 'react'; export const DaySlotAddForm = withContext(ScheduleStoreProvider)(function () { + const selectedDate = useDateTimeStore((store) => store.date); const endTime = useScheduleStore((state) => state.endTime); const resetTime = useScheduleStore((state) => state.resetTime); const startTime = useScheduleStore((state) => state.startTime); @@ -22,6 +24,7 @@ export const DaySlotAddForm = withContext(ScheduleStoreProvider)(function () { if (startTime && endTime) { addSlot({ input: { + date: selectedDate, state: Enum_Slot_State.Open, time_end: endTime, time_start: startTime, diff --git a/apps/web/hooks/api/slots.ts b/apps/web/hooks/api/slots.ts index 08dfec7..a443121 100644 --- a/apps/web/hooks/api/slots.ts +++ b/apps/web/hooks/api/slots.ts @@ -71,10 +71,18 @@ export const useSlotCreate = () => { return useMutation({ mutationFn: createSlot, mutationKey: ['slot', 'create'], - onSuccess: () => { + onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ['slots', masterId], }); + + const documentId = data?.createSlot?.documentId; + + if (documentId) + queryClient.prefetchQuery({ + queryFn: () => getSlot({ documentId }), + queryKey: ['slot', documentId], + }); }, }); };