diff --git a/src/components/moderation/ActiveFiltersDisplay.tsx b/src/components/moderation/ActiveFiltersDisplay.tsx
index 174a9b03..6b85793a 100644
--- a/src/components/moderation/ActiveFiltersDisplay.tsx
+++ b/src/components/moderation/ActiveFiltersDisplay.tsx
@@ -1,14 +1,12 @@
-import { Filter, MessageSquare, FileText, Image, ArrowUp, ArrowDown } from 'lucide-react';
+import { Filter, MessageSquare, FileText, Image } from 'lucide-react';
import { Badge } from '@/components/ui/badge';
-import type { EntityFilter, StatusFilter, SortConfig, SortField } from '@/types/moderation';
+import type { EntityFilter, StatusFilter } from '@/types/moderation';
interface ActiveFiltersDisplayProps {
entityFilter: EntityFilter;
statusFilter: StatusFilter;
- sortConfig: SortConfig;
defaultEntityFilter?: EntityFilter;
defaultStatusFilter?: StatusFilter;
- defaultSortField?: SortField;
}
const getEntityFilterIcon = (filter: EntityFilter) => {
@@ -20,29 +18,17 @@ const getEntityFilterIcon = (filter: EntityFilter) => {
}
};
-const getSortFieldLabel = (field: SortField): string => {
- switch (field) {
- case 'username': return 'Submitter';
- case 'submission_type': return 'Type';
- case 'escalated': return 'Escalated';
- case 'status': return 'Status';
- case 'created_at': return 'Date';
- default: return field;
- }
-};
+// Removed - sorting functionality deleted
export const ActiveFiltersDisplay = ({
entityFilter,
- statusFilter,
- sortConfig,
+ statusFilter,
defaultEntityFilter = 'all',
- defaultStatusFilter = 'pending',
- defaultSortField = 'created_at'
+ defaultStatusFilter = 'pending'
}: ActiveFiltersDisplayProps) => {
const hasActiveFilters =
entityFilter !== defaultEntityFilter ||
- statusFilter !== defaultStatusFilter ||
- sortConfig.field !== defaultSortField;
+ statusFilter !== defaultStatusFilter;
if (!hasActiveFilters) return null;
@@ -60,12 +46,6 @@ export const ActiveFiltersDisplay = ({
{statusFilter}
)}
- {sortConfig.field !== defaultSortField && (
-
- {sortConfig.direction === 'asc' ? : }
- Sort: {getSortFieldLabel(sortConfig.field)}
-
- )}
);
};
diff --git a/src/components/moderation/ModerationQueue.tsx b/src/components/moderation/ModerationQueue.tsx
index bb308199..48fa5d30 100644
--- a/src/components/moderation/ModerationQueue.tsx
+++ b/src/components/moderation/ModerationQueue.tsx
@@ -112,11 +112,9 @@ export const ModerationQueue = forwardRef((props, ref) => {
@@ -126,7 +124,6 @@ export const ModerationQueue = forwardRef((props, ref) => {
)}
diff --git a/src/components/moderation/QueueFilters.tsx b/src/components/moderation/QueueFilters.tsx
index c47bee32..2e3878cb 100644
--- a/src/components/moderation/QueueFilters.tsx
+++ b/src/components/moderation/QueueFilters.tsx
@@ -2,17 +2,14 @@ import { Filter, MessageSquare, FileText, Image, X } from 'lucide-react';
import { Label } from '@/components/ui/label';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Button } from '@/components/ui/button';
-import { QueueSortControls } from './QueueSortControls';
-import type { EntityFilter, StatusFilter, SortConfig } from '@/types/moderation';
+import type { EntityFilter, StatusFilter } from '@/types/moderation';
interface QueueFiltersProps {
activeEntityFilter: EntityFilter;
activeStatusFilter: StatusFilter;
- sortConfig: SortConfig;
isMobile: boolean;
onEntityFilterChange: (filter: EntityFilter) => void;
onStatusFilterChange: (filter: StatusFilter) => void;
- onSortConfigChange: (config: SortConfig) => void;
onClearFilters: () => void;
showClearButton: boolean;
}
@@ -29,11 +26,9 @@ const getEntityFilterIcon = (filter: EntityFilter) => {
export const QueueFilters = ({
activeEntityFilter,
activeStatusFilter,
- sortConfig,
isMobile,
onEntityFilterChange,
onStatusFilterChange,
- onSortConfigChange,
onClearFilters,
showClearButton
}: QueueFiltersProps) => {
@@ -112,13 +107,6 @@ export const QueueFilters = ({
-
- {/* Sort Controls */}
-
{/* Clear Filters Button */}
diff --git a/src/components/moderation/QueueSortControls.tsx b/src/components/moderation/QueueSortControls.tsx
deleted file mode 100644
index 3e2dd352..00000000
--- a/src/components/moderation/QueueSortControls.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-import { ArrowUp, ArrowDown } from 'lucide-react';
-import { Label } from '@/components/ui/label';
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
-import { Button } from '@/components/ui/button';
-import type { SortConfig, SortField } from '@/types/moderation';
-
-interface QueueSortControlsProps {
- sortConfig: SortConfig;
- onSortChange: (config: SortConfig) => void;
- isMobile?: boolean;
- variant?: 'inline' | 'standalone';
- showLabel?: boolean;
-}
-
-const getSortFieldLabel = (field: SortField): string => {
- switch (field) {
- case 'created_at': return 'Date Created';
- case 'username': return 'Submitter';
- case 'submission_type': return 'Type';
- case 'status': return 'Status';
- case 'escalated': return 'Escalated';
- default: return field;
- }
-};
-
-export const QueueSortControls = ({
- sortConfig,
- onSortChange,
- isMobile = false,
- variant = 'inline',
- showLabel = true
-}: QueueSortControlsProps) => {
- const handleFieldChange = (field: SortField) => {
- onSortChange({ ...sortConfig, field });
- };
-
- const handleDirectionToggle = () => {
- onSortChange({
- ...sortConfig,
- direction: sortConfig.direction === 'asc' ? 'desc' : 'asc'
- });
- };
-
- return (
-
- {showLabel && (
-
- )}
-
-
-
-
-
-
- );
-};
diff --git a/src/hooks/moderation/index.ts b/src/hooks/moderation/index.ts
index 8c1604a4..e9727013 100644
--- a/src/hooks/moderation/index.ts
+++ b/src/hooks/moderation/index.ts
@@ -12,8 +12,7 @@ export type { CachedProfile } from './useProfileCache';
export { useModerationFilters } from './useModerationFilters';
export type { ModerationFilters, ModerationFiltersConfig } from './useModerationFilters';
-export { useModerationSort } from './useModerationSort';
-export type { ModerationSort, ModerationSortConfig } from './useModerationSort';
+// Removed - sorting functionality deleted
export { usePagination } from './usePagination';
export type { PaginationState, PaginationConfig } from './usePagination';
diff --git a/src/hooks/moderation/useModerationQueueManager.ts b/src/hooks/moderation/useModerationQueueManager.ts
index 3ea47967..76e040bb 100644
--- a/src/hooks/moderation/useModerationQueueManager.ts
+++ b/src/hooks/moderation/useModerationQueueManager.ts
@@ -6,13 +6,12 @@ import {
useEntityCache,
useProfileCache,
useModerationFilters,
- useModerationSort,
usePagination,
useRealtimeSubscriptions,
} from "./index";
import { useModerationQueue } from "@/hooks/useModerationQueue";
import { smartMergeArray } from "@/lib/smartStateUpdate";
-import type { ModerationItem, EntityFilter, StatusFilter, LoadingState, SortConfig } from "@/types/moderation";
+import type { ModerationItem, EntityFilter, StatusFilter, LoadingState } from "@/types/moderation";
/**
* Configuration for useModerationQueueManager
@@ -44,7 +43,6 @@ export interface ModerationQueueManager {
// Sub-hooks (exposed for granular control)
filters: ReturnType;
pagination: ReturnType;
- sort: ReturnType;
queue: ReturnType;
// Realtime
@@ -99,11 +97,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig):
},
});
- const sort = useModerationSort({
- initialConfig: { field: "created_at", direction: "asc" },
- persist: true,
- storageKey: "moderationQueue_sortConfig",
- });
+ // Removed - sorting functionality deleted
const queue = useModerationQueue();
const entityCache = useEntityCache();
@@ -221,9 +215,7 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig):
status
)
`,
- )
- .order("escalated", { ascending: false })
- .order("created_at", { ascending: true });
+ );
// Apply tab-based status filtering
const tab = filters.activeTab;
@@ -929,7 +921,6 @@ export function useModerationQueueManager(config: ModerationQueueManagerConfig):
actionLoading,
filters,
pagination,
- sort,
queue,
newItemsCount,
pendingNewItems,
diff --git a/src/hooks/moderation/useModerationSort.ts b/src/hooks/moderation/useModerationSort.ts
deleted file mode 100644
index 35daef6e..00000000
--- a/src/hooks/moderation/useModerationSort.ts
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Moderation Queue Sort Hook
- *
- * Manages sort configuration for the moderation queue with persistence.
- */
-
-import { useState, useCallback, useEffect } from 'react';
-import type { SortConfig, SortField, SortDirection } from '@/types/moderation';
-import {
- getDefaultSortConfig,
- loadSortConfig,
- saveSortConfig,
- toggleSortDirection as toggleDirection,
- isDefaultSortConfig,
-} from '@/lib/moderation/sorting';
-
-export interface ModerationSortConfig {
- /** Initial sort configuration */
- initialConfig?: SortConfig;
-
- /** Whether to persist sort config */
- persist?: boolean;
-
- /** localStorage key for persistence */
- storageKey?: string;
-
- /** Callback when sort config changes */
- onChange?: (config: SortConfig) => void;
-}
-
-export interface ModerationSort {
- /** Current sort configuration */
- config: SortConfig;
-
- /** Sort field */
- field: SortField;
-
- /** Sort direction */
- direction: SortDirection;
-
- /** Set sort field */
- setField: (field: SortField) => void;
-
- /** Set sort direction */
- setDirection: (direction: SortDirection) => void;
-
- /** Toggle sort direction */
- toggleDirection: () => void;
-
- /** Set both field and direction */
- setConfig: (config: SortConfig) => void;
-
- /** Reset to default */
- reset: () => void;
-
- /** Check if using default config */
- isDefault: boolean;
-}
-
-/**
- * Hook for managing moderation queue sort configuration
- *
- * @param config - Configuration options
- * @returns Sort state and actions
- *
- * @example
- * ```tsx
- * const sort = useModerationSort({
- * persist: true,
- * onChange: (config) => fetchItems(config)
- * });
- *
- * // Use in component
- *
- * ```
- */
-export function useModerationSort(config: ModerationSortConfig = {}): ModerationSort {
- const {
- initialConfig,
- persist = true,
- storageKey = 'moderationQueue_sortConfig',
- onChange,
- } = config;
-
- // Load persisted or use initial/default config
- const [sortConfig, setSortConfig] = useState(() => {
- if (initialConfig) return initialConfig;
- if (persist) return loadSortConfig(storageKey);
- return getDefaultSortConfig();
- });
-
- // Persist changes
- useEffect(() => {
- if (persist) {
- saveSortConfig(sortConfig, storageKey);
- }
- onChange?.(sortConfig);
- }, [sortConfig, persist, storageKey, onChange]);
-
- // Set sort field (keep direction)
- const setField = useCallback((field: SortField) => {
- setSortConfig((prev) => ({ ...prev, field }));
- }, []);
-
- // Set sort direction (keep field)
- const setDirection = useCallback((direction: SortDirection) => {
- setSortConfig((prev) => ({ ...prev, direction }));
- }, []);
-
- // Toggle sort direction
- const toggleSortDirection = useCallback(() => {
- setSortConfig((prev) => ({
- ...prev,
- direction: toggleDirection(prev.direction),
- }));
- }, []);
-
- // Set entire config
- const setConfig = useCallback((newConfig: SortConfig) => {
- setSortConfig(newConfig);
- }, []);
-
- // Reset to default
- const reset = useCallback(() => {
- setSortConfig(getDefaultSortConfig());
- }, []);
-
- // Check if using default config
- const isDefault = isDefaultSortConfig(sortConfig);
-
- return {
- config: sortConfig,
- field: sortConfig.field,
- direction: sortConfig.direction,
- setField,
- setDirection,
- toggleDirection: toggleSortDirection,
- setConfig,
- reset,
- isDefault,
- };
-}
diff --git a/src/lib/moderation/index.ts b/src/lib/moderation/index.ts
index d8a610e5..5e81e3de 100644
--- a/src/lib/moderation/index.ts
+++ b/src/lib/moderation/index.ts
@@ -43,18 +43,7 @@ export type {
DeleteSubmissionConfig,
} from './actions';
-// Sorting utilities
-export {
- sortModerationItems,
- getDefaultSortConfig,
- loadSortConfig,
- saveSortConfig,
- toggleSortDirection,
- getSortFieldLabel,
- isDefaultSortConfig,
-} from './sorting';
-
-export type { SortConfig, SortField, SortDirection } from '@/types/moderation';
+// Removed - sorting functionality deleted
// Realtime subscription utilities
export {
diff --git a/src/lib/moderation/sorting.ts b/src/lib/moderation/sorting.ts
deleted file mode 100644
index 31a15512..00000000
--- a/src/lib/moderation/sorting.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Moderation Queue Sorting Utilities
- *
- * Provides sorting functions and utilities for moderation queue items.
- */
-
-import type { ModerationItem, SortField, SortDirection, SortConfig } from '@/types/moderation';
-
-/**
- * Sort moderation items based on configuration
- *
- * @param items - Array of moderation items to sort
- * @param config - Sort configuration
- * @returns Sorted array of items
- */
-export function sortModerationItems(
- items: ModerationItem[],
- config: SortConfig
-): ModerationItem[] {
- const { field, direction } = config;
-
- return [...items].sort((a, b) => {
- let comparison = 0;
-
- switch (field) {
- case 'created_at':
- comparison = new Date(a.created_at).getTime() - new Date(b.created_at).getTime();
- break;
-
- case 'username':
- const usernameA = a.user_profile?.username || a.user_profile?.display_name || '';
- const usernameB = b.user_profile?.username || b.user_profile?.display_name || '';
- comparison = usernameA.localeCompare(usernameB);
- break;
-
- case 'submission_type':
- comparison = (a.submission_type || '').localeCompare(b.submission_type || '');
- break;
-
- case 'status':
- comparison = a.status.localeCompare(b.status);
- break;
-
- case 'escalated':
- const escalatedA = a.escalated ? 1 : 0;
- const escalatedB = b.escalated ? 1 : 0;
- comparison = escalatedB - escalatedA; // Escalated items first
- break;
-
- default:
- comparison = 0;
- }
-
- return direction === 'asc' ? comparison : -comparison;
- });
-}
-
-/**
- * Get default sort configuration
- *
- * @returns Default sort config
- */
-export function getDefaultSortConfig(): SortConfig {
- return {
- field: 'created_at',
- direction: 'asc',
- };
-}
-
-/**
- * Load sort configuration from localStorage
- *
- * @param key - localStorage key
- * @returns Saved sort config or default
- */
-export function loadSortConfig(key: string = 'moderationQueue_sortConfig'): SortConfig {
- try {
- const saved = localStorage.getItem(key);
- if (saved) {
- return JSON.parse(saved);
- }
- } catch (error) {
- console.error('Failed to load sort config:', error);
- }
-
- return getDefaultSortConfig();
-}
-
-/**
- * Save sort configuration to localStorage
- *
- * @param config - Sort configuration to save
- * @param key - localStorage key
- */
-export function saveSortConfig(
- config: SortConfig,
- key: string = 'moderationQueue_sortConfig'
-): void {
- try {
- localStorage.setItem(key, JSON.stringify(config));
- } catch (error) {
- console.error('Failed to save sort config:', error);
- }
-}
-
-/**
- * Toggle sort direction
- *
- * @param currentDirection - Current sort direction
- * @returns Toggled direction
- */
-export function toggleSortDirection(currentDirection: SortDirection): SortDirection {
- return currentDirection === 'asc' ? 'desc' : 'asc';
-}
-
-/**
- * Get human-readable label for sort field
- *
- * @param field - Sort field
- * @returns Human-readable label
- */
-export function getSortFieldLabel(field: SortField): string {
- switch (field) {
- case 'created_at':
- return 'Date Created';
- case 'username':
- return 'Submitter';
- case 'submission_type':
- return 'Type';
- case 'status':
- return 'Status';
- case 'escalated':
- return 'Escalated';
- default:
- return field;
- }
-}
-
-/**
- * Check if sort config is default
- *
- * @param config - Sort configuration to check
- * @returns True if config matches default
- */
-export function isDefaultSortConfig(config: SortConfig): boolean {
- const defaultConfig = getDefaultSortConfig();
- return (
- config.field === defaultConfig.field &&
- config.direction === defaultConfig.direction
- );
-}
diff --git a/src/types/moderation.ts b/src/types/moderation.ts
index 68a059bf..33b31b84 100644
--- a/src/types/moderation.ts
+++ b/src/types/moderation.ts
@@ -99,26 +99,7 @@ export type StatusFilter = 'all' | 'pending' | 'partially_approved' | 'flagged'
*/
export type QueueTab = 'mainQueue' | 'archive';
-/**
- * Fields that can be used for sorting the moderation queue
- */
-export type SortField = 'created_at' | 'username' | 'submission_type' | 'status' | 'escalated';
-
-/**
- * Direction for sorting (ascending or descending)
- */
-export type SortDirection = 'asc' | 'desc';
-
-/**
- * Configuration for sorting the moderation queue
- */
-export interface SortConfig {
- /** Field to sort by */
- field: SortField;
-
- /** Direction to sort */
- direction: SortDirection;
-}
+// Removed - sorting functionality deleted
/**
* Loading states for the moderation queue