Refactor: Remove item_edit_history_view

This commit is contained in:
gpt-engineer-app[bot]
2025-11-02 23:55:49 +00:00
parent 9c4b80e454
commit c59d8e40d5
8 changed files with 369 additions and 63 deletions

View File

@@ -11,6 +11,7 @@ import { getErrorMessage } from '@/lib/errorHandler';
import { PhotoModal } from './PhotoModal';
import { SubmissionReviewManager } from './SubmissionReviewManager';
import { ItemEditDialog } from './ItemEditDialog';
import { ItemSelectorDialog } from './ItemSelectorDialog';
import { useIsMobile } from '@/hooks/use-mobile';
import { useAdminSettings } from '@/hooks/useAdminSettings';
import { useModerationQueueManager } from '@/hooks/moderation';
@@ -80,6 +81,10 @@ export const ModerationQueue = forwardRef<ModerationQueueRef, ModerationQueuePro
const [selectedSubmissionId, setSelectedSubmissionId] = useState<string | null>(null);
const [showItemEditDialog, setShowItemEditDialog] = useState(false);
const [editingItem, setEditingItem] = useState<SubmissionItemWithDeps | null>(null);
const [showItemSelector, setShowItemSelector] = useState(false);
const [availableItems, setAvailableItems] = useState<SubmissionItemWithDeps[]>([]);
const [bulkEditMode, setBulkEditMode] = useState(false);
const [bulkEditItems, setBulkEditItems] = useState<SubmissionItemWithDeps[]>([]);
// Confirmation dialog state
const [confirmDialog, setConfirmDialog] = useState<{
@@ -176,6 +181,19 @@ export const ModerationQueue = forwardRef<ModerationQueueRef, ModerationQueuePro
},
description: 'Focus filters',
},
{
key: 'e',
handler: () => {
// Edit first claimed submission
const claimedItem = queueManager.items.find(item =>
queueManager.queue.isLockedByMe(item.id, item.assigned_to, item.locked_until)
);
if (claimedItem) {
handleOpenItemEditor(claimedItem.id);
}
},
description: 'Edit claimed submission',
},
],
enabled: true,
});
@@ -195,22 +213,55 @@ export const ModerationQueue = forwardRef<ModerationQueueRef, ModerationQueuePro
try {
const items = await fetchSubmissionItems(submissionId);
// Find first pending item, fallback to first available
let itemToEdit = items.find(item => item.status === 'pending');
if (!itemToEdit && items.length > 0) {
itemToEdit = items[0];
}
if (itemToEdit) {
setEditingItem(itemToEdit);
setShowItemEditDialog(true);
} else {
if (!items || items.length === 0) {
toast({
title: 'No Items Found',
description: 'This submission has no items to edit',
variant: 'destructive',
});
return;
}
// Phase 3: Multi-item selector for submissions with multiple items
if (items.length > 1) {
setAvailableItems(items);
setShowItemSelector(true);
} else {
// Single item - edit directly
setEditingItem(items[0]);
setShowItemEditDialog(true);
}
} catch (error: unknown) {
toast({
title: 'Error',
description: getErrorMessage(error),
variant: 'destructive',
});
}
};
const handleSelectItem = (item: SubmissionItemWithDeps) => {
setEditingItem(item);
setShowItemSelector(false);
setShowItemEditDialog(true);
};
const handleBulkEdit = async (submissionId: string) => {
try {
const items = await fetchSubmissionItems(submissionId);
if (!items || items.length === 0) {
toast({
title: 'No Items Found',
description: 'This submission has no items to edit',
variant: 'destructive',
});
return;
}
setBulkEditItems(items);
setBulkEditMode(true);
setShowItemEditDialog(true);
} catch (error: unknown) {
toast({
title: 'Error',
@@ -435,23 +486,48 @@ export const ModerationQueue = forwardRef<ModerationQueueRef, ModerationQueuePro
submissionId={selectedSubmissionId}
open={reviewManagerOpen}
onOpenChange={setReviewManagerOpen}
onComplete={() => setReviewManagerOpen(false)}
/>
)}
{editingItem && (
<ItemEditDialog
item={editingItem}
open={showItemEditDialog}
onOpenChange={setShowItemEditDialog}
onComplete={async () => {
setShowItemEditDialog(false);
setEditingItem(null);
await queueManager.refresh();
onComplete={() => {
queueManager.refresh();
setSelectedSubmissionId(null);
}}
/>
)}
{/* Phase 3: Item Selector Dialog */}
<ItemSelectorDialog
items={availableItems}
open={showItemSelector}
onOpenChange={setShowItemSelector}
onSelectItem={handleSelectItem}
onBulkEdit={() => {
setShowItemSelector(false);
setBulkEditItems(availableItems);
setBulkEditMode(true);
setShowItemEditDialog(true);
}}
/>
{/* Phase 4 & 5: Enhanced Item Edit Dialog */}
<ItemEditDialog
item={bulkEditMode ? null : editingItem}
items={bulkEditMode ? bulkEditItems : undefined}
open={showItemEditDialog}
onOpenChange={(open) => {
setShowItemEditDialog(open);
if (!open) {
setEditingItem(null);
setBulkEditMode(false);
setBulkEditItems([]);
}
}}
onComplete={() => {
queueManager.refresh();
setEditingItem(null);
setBulkEditMode(false);
setBulkEditItems([]);
}}
/>
{/* Confirmation Dialog */}
<ConfirmationDialog
open={confirmDialog.open}