Implement Site Builder with Puck and Booking Widget

This commit is contained in:
poduck
2025-12-10 23:54:10 -05:00
parent 384fe0fd86
commit 76c0d71aa0
25 changed files with 1103 additions and 1 deletions

View File

@@ -0,0 +1,58 @@
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import api from '../api/client';
export const useSite = () => {
return useQuery({
queryKey: ['site'],
queryFn: async () => {
const response = await api.get('/sites/me/');
return response.data;
},
});
};
export const usePages = () => {
return useQuery({
queryKey: ['pages'],
queryFn: async () => {
const response = await api.get('/sites/me/pages/');
return response.data;
},
});
};
export const usePage = (pageId: string) => {
return useQuery({
queryKey: ['page', pageId],
queryFn: async () => {
const response = await api.get(`/sites/me/pages/${pageId}/`);
return response.data;
},
enabled: !!pageId,
});
};
export const useUpdatePage = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async ({ id, data }: { id: string; data: any }) => {
const response = await api.patch(`/sites/me/pages/${id}/`, data);
return response.data;
},
onSuccess: (data, variables) => {
queryClient.invalidateQueries({ queryKey: ['page', variables.id] });
queryClient.invalidateQueries({ queryKey: ['pages'] });
},
});
};
export const usePublicPage = () => {
return useQuery({
queryKey: ['publicPage'],
queryFn: async () => {
const response = await api.get('/public/page/');
return response.data;
},
retry: false,
});
};