feat: move signature to global load and fix add a post

This commit is contained in:
Nevo David 2025-06-09 20:35:54 +07:00
parent 4b5580bc55
commit 9d98020be1
4 changed files with 49 additions and 9 deletions

View File

@ -28,6 +28,7 @@ export const CalendarContext = createContext({
currentMonth: dayjs().month(),
customer: null as string | null,
sets: [] as { name: string; id: string; content: string[] }[],
signature: undefined as any,
comments: [] as Array<{
date: string;
total: number;
@ -144,11 +145,16 @@ export const CalendarWeekProvider: FC<{
revalidateOnFocus: false,
});
const defaultSign = useCallback(async () => {
return await (await fetch('/signatures/default')).json();
}, []);
const setList = useCallback(async () => {
return (await fetch('/sets')).json();
}, []);
const { data: sets, mutate } = useSWR('sets', setList);
const { data: sign} = useSWR('default-sign', defaultSign);
const setFiltersWrapper = useCallback(
(filters: {
@ -211,6 +217,7 @@ export const CalendarWeekProvider: FC<{
changeDate,
comments,
sets: sets || [],
signature: sign,
}}
>
{children}

View File

@ -337,6 +337,7 @@ export const CalendarColumn: FC<{
display,
reloadCalendarView,
sets,
signature,
} = useCalendar();
const toaster = useToaster();
const modal = useModals();
@ -550,7 +551,6 @@ export const CalendarColumn: FC<{
);
const addModal = useCallback(async () => {
const signature = await (await fetch('/signatures/default')).json();
const set: any = !sets.length
? undefined
: await new Promise((resolve) => {
@ -597,7 +597,7 @@ export const CalendarColumn: FC<{
...p,
}))}
mutate={reloadCalendarView}
{...(signature?.id
{...(signature?.id && !set
? {
onlyValues: [
{
@ -609,14 +609,13 @@ export const CalendarColumn: FC<{
date={
randomHour ? getDate.hour(Math.floor(Math.random() * 24)) : getDate
}
{...set?.content ? {set: JSON.parse(set.content)} : {}}
{...(set?.content ? { set: JSON.parse(set.content) } : {})}
reopenModal={() => ({})}
/>
),
size: '80%',
// title: `Adding posts for ${getDate.format('DD/MM/YYYY HH:mm')}`,
});
}, [integrations, getDate, sets]);
}, [integrations, getDate, sets, signature]);
const openStatistics = useCallback(
(id: string) => () => {
modal.openModal({
@ -967,7 +966,7 @@ export const Statistics = () => {
);
};
const SetSelectionModal: FC<{
export const SetSelectionModal: FC<{
sets: any[];
onSelect: (set: any) => void;
onContinueWithoutSet: () => void;

View File

@ -5,14 +5,47 @@ import dayjs from 'dayjs';
import { useCalendar } from '@gitroom/frontend/components/launches/calendar.context';
import { useFetch } from '@gitroom/helpers/utils/custom.fetch';
import { useT } from '@gitroom/react/translation/get.transation.service.client';
import { SetSelectionModal } from '@gitroom/frontend/components/launches/calendar';
import { useSet } from '@gitroom/frontend/components/launches/set.context';
export const NewPost = () => {
const fetch = useFetch();
const modal = useModals();
const { integrations, reloadCalendarView } = useCalendar();
const { integrations, reloadCalendarView, sets } = useCalendar();
const t = useT();
const createAPost = useCallback(async () => {
const date = (await (await fetch('/posts/find-slot')).json()).date;
const set: any = !sets.length
? undefined
: await new Promise((resolve) => {
modal.openModal({
title: t('select_set', 'Select a Set'),
closeOnClickOutside: true,
closeOnEscape: true,
withCloseButton: true,
onClose: () => resolve('exit'),
classNames: {
modal: 'bg-secondary text-textColor',
},
children: (
<SetSelectionModal
sets={sets}
onSelect={(selectedSet) => {
resolve(selectedSet);
modal.closeAll();
}}
onContinueWithoutSet={() => {
resolve(undefined);
modal.closeAll();
}}
/>
),
});
});
if (set === 'exit') return;
modal.openModal({
closeOnClickOutside: false,
closeOnEscape: false,
@ -25,6 +58,7 @@ export const NewPost = () => {
allIntegrations={integrations.map((p) => ({
...p,
}))}
{...(set?.content ? { set: JSON.parse(set.content) } : {})}
reopenModal={createAPost}
mutate={reloadCalendarView}
integrations={integrations}
@ -34,7 +68,7 @@ export const NewPost = () => {
size: '80%',
title: ``,
});
}, [integrations]);
}, [integrations, sets]);
return (
<button
onClick={createAPost}

View File

@ -40,7 +40,7 @@
"prisma-reset": "cd ./libraries/nestjs-libraries/src/database/prisma && pnpm dlx prisma db push --force-reset && npx prisma db push",
"docker-build": "./var/docker/docker-build.sh",
"docker-create": "./var/docker/docker-create.sh",
"postinstall": "npm run update-plugins && npm run prisma-generate",
"postinstall": "pnpm run update-plugins && pnpm run prisma-generate",
"test": "jest --coverage --detectOpenHandles --reporters=default --reporters=jest-junit"
},
"dependencies": {