mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 12:51:14 -05:00
feat: Implement API and cache improvements
This commit is contained in:
@@ -80,6 +80,7 @@ import { logger } from '@/lib/logger';
|
||||
import { contactCategories } from '@/lib/contactValidation';
|
||||
import { invokeWithTracking } from '@/lib/edgeFunctionTracking';
|
||||
import { AdminLayout } from '@/components/layout/AdminLayout';
|
||||
import { queryKeys } from '@/lib/queryKeys';
|
||||
|
||||
interface ContactSubmission {
|
||||
id: string;
|
||||
@@ -159,7 +160,7 @@ export default function AdminContact() {
|
||||
|
||||
// Fetch contact submissions
|
||||
const { data: submissions, isLoading } = useQuery({
|
||||
queryKey: ['admin-contact-submissions', statusFilter, categoryFilter, searchQuery, showArchived],
|
||||
queryKey: queryKeys.admin.contactSubmissions(statusFilter, categoryFilter, searchQuery, showArchived),
|
||||
queryFn: async () => {
|
||||
let query = supabase
|
||||
.from('contact_submissions')
|
||||
@@ -282,7 +283,10 @@ export default function AdminContact() {
|
||||
.order('created_at', { ascending: true })
|
||||
.then(({ data }) => setEmailThreads((data as EmailThread[]) || []));
|
||||
}
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
},
|
||||
onError: (error: Error) => {
|
||||
handleError(error, { action: 'Send Email Reply' });
|
||||
@@ -320,7 +324,10 @@ export default function AdminContact() {
|
||||
if (error) throw error;
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
handleSuccess('Status Updated', 'Contact submission status has been updated');
|
||||
setSelectedSubmission(null);
|
||||
setAdminNotes('');
|
||||
@@ -345,7 +352,10 @@ export default function AdminContact() {
|
||||
if (error) throw error;
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
handleSuccess('Archived', 'Contact submission has been archived');
|
||||
setSelectedSubmission(null);
|
||||
},
|
||||
@@ -368,7 +378,10 @@ export default function AdminContact() {
|
||||
if (error) throw error;
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
handleSuccess('Restored', 'Contact submission has been restored from archive');
|
||||
setSelectedSubmission(null);
|
||||
},
|
||||
@@ -388,7 +401,10 @@ export default function AdminContact() {
|
||||
if (error) throw error;
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
handleSuccess('Deleted', 'Contact submission has been permanently deleted');
|
||||
setSelectedSubmission(null);
|
||||
},
|
||||
@@ -428,7 +444,10 @@ export default function AdminContact() {
|
||||
};
|
||||
|
||||
const handleRefreshSubmissions = () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['admin-contact-submissions'] });
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['admin-contact-submissions'],
|
||||
exact: false
|
||||
});
|
||||
};
|
||||
|
||||
const handleCopyTicket = (ticketNumber: string) => {
|
||||
|
||||
Reference in New Issue
Block a user