/** * Moderation Queue Constants * * Centralized configuration values for the moderation system. */ export const MODERATION_CONSTANTS = { // TanStack Query configuration QUERY_STALE_TIME: 30000, // 30 seconds QUERY_GC_TIME: 5 * 60 * 1000, // 5 minutes QUERY_RETRY_COUNT: 2, // Realtime configuration REALTIME_DEBOUNCE_MS: 500, // 500ms REALTIME_OPTIMISTIC_REMOVAL_TIMEOUT: 5000, // 5 seconds // Lock configuration LOCK_DURATION_MS: 15 * 60 * 1000, // 15 minutes LOCK_EXTENSION_MS: 10 * 60 * 1000, // 10 minutes // Cache configuration MAX_ENTITY_CACHE_SIZE: 500, MAX_PROFILE_CACHE_SIZE: 500, // Pagination DEFAULT_PAGE_SIZE: 25, MAX_PAGE_SIZE: 100, // Filter debounce FILTER_DEBOUNCE_MS: 300, // Role Labels ROLE_LABELS: { admin: 'Administrator', moderator: 'Moderator', user: 'User', superuser: 'Superuser', } as const, // Status Labels STATUS_LABELS: { pending: 'Pending Review', approved: 'Approved', rejected: 'Rejected', partially_approved: 'Partially Approved', escalated: 'Escalated', in_review: 'In Review', } as const, // Submission Type Labels SUBMISSION_TYPE_LABELS: { park: 'Park', ride: 'Ride', company: 'Company', ride_model: 'Ride Model', photo: 'Photo', } as const, // Report Type Labels REPORT_TYPE_LABELS: { spam: 'Spam', inappropriate: 'Inappropriate Content', harassment: 'Harassment', misinformation: 'Misinformation', fake_info: 'Fake Information', offensive: 'Offensive Language', other: 'Other', } as const, // Entity Type Labels ENTITY_TYPE_LABELS: { park: 'Park', ride: 'Ride', company: 'Company', ride_model: 'Ride Model', review: 'Review', profile: 'Profile', content_submission: 'Content Submission', } as const, // Status Colors (for badges) STATUS_COLORS: { pending: 'secondary', approved: 'default', rejected: 'destructive', partially_approved: 'outline', escalated: 'destructive', in_review: 'secondary', } as const, // Report Status Colors REPORT_STATUS_COLORS: { pending: 'secondary', reviewed: 'default', dismissed: 'outline', resolved: 'default', } as const, } as const; export type ModerationConstants = typeof MODERATION_CONSTANTS; // Helper functions for type-safe label access export function getRoleLabel(role: keyof typeof MODERATION_CONSTANTS.ROLE_LABELS): string { return MODERATION_CONSTANTS.ROLE_LABELS[role] || role; } export function getStatusLabel(status: keyof typeof MODERATION_CONSTANTS.STATUS_LABELS): string { return MODERATION_CONSTANTS.STATUS_LABELS[status] || status; } export function getSubmissionTypeLabel(type: keyof typeof MODERATION_CONSTANTS.SUBMISSION_TYPE_LABELS): string { return MODERATION_CONSTANTS.SUBMISSION_TYPE_LABELS[type] || type; } export function getReportTypeLabel(type: keyof typeof MODERATION_CONSTANTS.REPORT_TYPE_LABELS): string { return MODERATION_CONSTANTS.REPORT_TYPE_LABELS[type] || type; } export function getEntityTypeLabel(type: keyof typeof MODERATION_CONSTANTS.ENTITY_TYPE_LABELS): string { return MODERATION_CONSTANTS.ENTITY_TYPE_LABELS[type] || type; }