Refresh event list after create
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { useNavigate, useParams } from 'react-router-dom';
|
import { useNavigate, useParams } from 'react-router-dom';
|
||||||
|
import { useQueryClient } from '@tanstack/react-query';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { CalendarDays, ChevronDown, MapPin } from 'lucide-react';
|
import { CalendarDays, ChevronDown, MapPin } from 'lucide-react';
|
||||||
import { YStack, XStack } from '@tamagui/stacks';
|
import { YStack, XStack } from '@tamagui/stacks';
|
||||||
@@ -31,6 +32,7 @@ import { useBackNavigation } from './hooks/useBackNavigation';
|
|||||||
import { useAdminTheme } from './theme';
|
import { useAdminTheme } from './theme';
|
||||||
import { withAlpha } from './components/colors';
|
import { withAlpha } from './components/colors';
|
||||||
import { useAuth } from '../auth/context';
|
import { useAuth } from '../auth/context';
|
||||||
|
import { useEventContext } from '../context/EventContext';
|
||||||
|
|
||||||
type FormState = {
|
type FormState = {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -52,6 +54,8 @@ export default function MobileEventFormPage() {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { t } = useTranslation(['management', 'common']);
|
const { t } = useTranslation(['management', 'common']);
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
|
const { selectEvent, refetch } = useEventContext();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
const { text, muted, subtle, danger, border, surface, primary } = useAdminTheme();
|
const { text, muted, subtle, danger, border, surface, primary } = useAdminTheme();
|
||||||
const isSuperAdmin = user?.role === 'super_admin' || user?.role === 'superadmin';
|
const isSuperAdmin = user?.role === 'super_admin' || user?.role === 'superadmin';
|
||||||
|
|
||||||
@@ -259,6 +263,9 @@ export default function MobileEventFormPage() {
|
|||||||
},
|
},
|
||||||
} as Parameters<typeof createEvent>[0];
|
} as Parameters<typeof createEvent>[0];
|
||||||
const { event } = await createEvent(payload);
|
const { event } = await createEvent(payload);
|
||||||
|
selectEvent(event.slug);
|
||||||
|
void queryClient.invalidateQueries({ queryKey: ['tenant-events'] });
|
||||||
|
void refetch();
|
||||||
void trackOnboarding('event_created', { event_id: event.id });
|
void trackOnboarding('event_created', { event_id: event.id });
|
||||||
navigate(adminPath(`/mobile/events/${event.slug}`));
|
navigate(adminPath(`/mobile/events/${event.slug}`));
|
||||||
}
|
}
|
||||||
@@ -307,6 +314,9 @@ export default function MobileEventFormPage() {
|
|||||||
...pendingPayload,
|
...pendingPayload,
|
||||||
accepted_waiver: consents.acceptedWaiver,
|
accepted_waiver: consents.acceptedWaiver,
|
||||||
});
|
});
|
||||||
|
selectEvent(event.slug);
|
||||||
|
void queryClient.invalidateQueries({ queryKey: ['tenant-events'] });
|
||||||
|
void refetch();
|
||||||
void trackOnboarding('event_created', { event_id: event.id });
|
void trackOnboarding('event_created', { event_id: event.id });
|
||||||
navigate(adminPath(`/mobile/events/${event.slug}`));
|
navigate(adminPath(`/mobile/events/${event.slug}`));
|
||||||
setConsentOpen(false);
|
setConsentOpen(false);
|
||||||
|
|||||||
@@ -4,12 +4,21 @@ import { act, fireEvent, render, screen } from '@testing-library/react';
|
|||||||
|
|
||||||
const backMock = vi.fn();
|
const backMock = vi.fn();
|
||||||
const navigateMock = vi.fn();
|
const navigateMock = vi.fn();
|
||||||
|
const selectEventMock = vi.fn();
|
||||||
|
const refetchMock = vi.fn();
|
||||||
|
const invalidateQueriesMock = vi.fn();
|
||||||
|
|
||||||
vi.mock('react-router-dom', () => ({
|
vi.mock('react-router-dom', () => ({
|
||||||
useNavigate: () => navigateMock,
|
useNavigate: () => navigateMock,
|
||||||
useParams: () => ({}),
|
useParams: () => ({}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
vi.mock('@tanstack/react-query', () => ({
|
||||||
|
useQueryClient: () => ({
|
||||||
|
invalidateQueries: invalidateQueriesMock,
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
vi.mock('../hooks/useBackNavigation', () => ({
|
vi.mock('../hooks/useBackNavigation', () => ({
|
||||||
useBackNavigation: () => backMock,
|
useBackNavigation: () => backMock,
|
||||||
}));
|
}));
|
||||||
@@ -92,6 +101,13 @@ vi.mock('../../auth/context', () => ({
|
|||||||
useAuth: () => ({ user: { role: 'tenant_admin' } }),
|
useAuth: () => ({ user: { role: 'tenant_admin' } }),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
vi.mock('../../context/EventContext', () => ({
|
||||||
|
useEventContext: () => ({
|
||||||
|
selectEvent: selectEventMock,
|
||||||
|
refetch: refetchMock,
|
||||||
|
}),
|
||||||
|
}));
|
||||||
|
|
||||||
import { getEventTypes } from '../../api';
|
import { getEventTypes } from '../../api';
|
||||||
import MobileEventFormPage from '../EventFormPage';
|
import MobileEventFormPage from '../EventFormPage';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user