From 9a4ece33bf0711b14ec11744a93ca7ab37117bec Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Fri, 16 Jan 2026 14:25:52 +0100 Subject: [PATCH] Refresh event list after create --- resources/js/admin/mobile/EventFormPage.tsx | 10 ++++++++++ .../mobile/__tests__/EventFormPage.test.tsx | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/resources/js/admin/mobile/EventFormPage.tsx b/resources/js/admin/mobile/EventFormPage.tsx index 35801e1..e9840b3 100644 --- a/resources/js/admin/mobile/EventFormPage.tsx +++ b/resources/js/admin/mobile/EventFormPage.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { useNavigate, useParams } from 'react-router-dom'; +import { useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { CalendarDays, ChevronDown, MapPin } from 'lucide-react'; import { YStack, XStack } from '@tamagui/stacks'; @@ -31,6 +32,7 @@ import { useBackNavigation } from './hooks/useBackNavigation'; import { useAdminTheme } from './theme'; import { withAlpha } from './components/colors'; import { useAuth } from '../auth/context'; +import { useEventContext } from '../context/EventContext'; type FormState = { name: string; @@ -52,6 +54,8 @@ export default function MobileEventFormPage() { const navigate = useNavigate(); const { t } = useTranslation(['management', 'common']); const { user } = useAuth(); + const { selectEvent, refetch } = useEventContext(); + const queryClient = useQueryClient(); const { text, muted, subtle, danger, border, surface, primary } = useAdminTheme(); const isSuperAdmin = user?.role === 'super_admin' || user?.role === 'superadmin'; @@ -259,6 +263,9 @@ export default function MobileEventFormPage() { }, } as Parameters[0]; const { event } = await createEvent(payload); + selectEvent(event.slug); + void queryClient.invalidateQueries({ queryKey: ['tenant-events'] }); + void refetch(); void trackOnboarding('event_created', { event_id: event.id }); navigate(adminPath(`/mobile/events/${event.slug}`)); } @@ -307,6 +314,9 @@ export default function MobileEventFormPage() { ...pendingPayload, accepted_waiver: consents.acceptedWaiver, }); + selectEvent(event.slug); + void queryClient.invalidateQueries({ queryKey: ['tenant-events'] }); + void refetch(); void trackOnboarding('event_created', { event_id: event.id }); navigate(adminPath(`/mobile/events/${event.slug}`)); setConsentOpen(false); diff --git a/resources/js/admin/mobile/__tests__/EventFormPage.test.tsx b/resources/js/admin/mobile/__tests__/EventFormPage.test.tsx index 1351fa6..0f2690b 100644 --- a/resources/js/admin/mobile/__tests__/EventFormPage.test.tsx +++ b/resources/js/admin/mobile/__tests__/EventFormPage.test.tsx @@ -4,12 +4,21 @@ import { act, fireEvent, render, screen } from '@testing-library/react'; const backMock = vi.fn(); const navigateMock = vi.fn(); +const selectEventMock = vi.fn(); +const refetchMock = vi.fn(); +const invalidateQueriesMock = vi.fn(); vi.mock('react-router-dom', () => ({ useNavigate: () => navigateMock, useParams: () => ({}), })); +vi.mock('@tanstack/react-query', () => ({ + useQueryClient: () => ({ + invalidateQueries: invalidateQueriesMock, + }), +})); + vi.mock('../hooks/useBackNavigation', () => ({ useBackNavigation: () => backMock, })); @@ -92,6 +101,13 @@ vi.mock('../../auth/context', () => ({ useAuth: () => ({ user: { role: 'tenant_admin' } }), })); +vi.mock('../../context/EventContext', () => ({ + useEventContext: () => ({ + selectEvent: selectEventMock, + refetch: refetchMock, + }), +})); + import { getEventTypes } from '../../api'; import MobileEventFormPage from '../EventFormPage';