This commit is contained in:
IGNY8 VPS (Salman)
2025-11-11 22:19:22 +00:00
parent ce9663438b
commit c84a02c757
2 changed files with 154 additions and 184 deletions

View File

@@ -14,16 +14,9 @@ import {
import { useToast } from '../../components/ui/toast/ToastContainer';
import { FileIcon, DownloadIcon, BoltIcon } from '../../icons';
import { createImagesPageConfig } from '../../config/pages/images.config';
import ProgressModal from '../../components/common/ProgressModal';
import ImageQueueModal from '../../components/common/ImageQueueModal';
import { useProgressModal } from '../../hooks/useProgressModal';
export default function Images() {
const toast = useToast();
// Progress modal for AI functions
const progressModal = useProgressModal();
const hasReloadedRef = useRef(false);
// Data state
const [images, setImages] = useState<ContentImagesGroup[]>([]);
@@ -174,31 +167,24 @@ export default function Images() {
const result = await generateImages(imageIds);
if (result.success) {
if (result.task_id) {
// Open progress modal for async task
progressModal.openModal(
result.task_id,
'Generate Images',
'ai-generate-images-from-prompts-01-desktop'
);
// Show toast message (no progress modal)
const generated = result.images_generated || 0;
const failed = result.images_failed || 0;
if (generated > 0) {
toast.success(`Images generated: ${generated} image${generated !== 1 ? 's' : ''} created${failed > 0 ? `, ${failed} failed` : ''}`);
} else if (failed > 0) {
toast.error(`Image generation failed: ${failed} image${failed !== 1 ? 's' : ''} failed`);
} else {
// Synchronous completion
const generated = result.images_generated || 0;
const failed = result.images_failed || 0;
if (generated > 0) {
toast.success(`Images generated: ${generated} image${generated !== 1 ? 's' : ''} created${failed > 0 ? `, ${failed} failed` : ''}`);
} else {
toast.error(`Image generation failed: ${failed} image${failed !== 1 ? 's' : ''} failed`);
}
loadImages(); // Reload to show new images
toast.success('Image generation completed');
}
loadImages(); // Reload to show new images
} else {
toast.error(result.error || 'Failed to generate images');
}
} catch (error: any) {
toast.error(`Failed to generate images: ${error.message}`);
}
}, [toast, progressModal, loadImages, images]);
}, [toast, loadImages, images]);
// Get max in-article images from the data (to determine column count)
const maxInArticleImages = useMemo(() => {
@@ -284,50 +270,6 @@ export default function Images() {
setCurrentPage(1);
}}
/>
{/* Image Queue Modal for Image Generation */}
{progressModal.imageQueue && progressModal.imageQueue.length > 0 ? (
<ImageQueueModal
isOpen={progressModal.isOpen}
queue={progressModal.imageQueue}
onClose={() => {
const wasCompleted = progressModal.progress.status === 'completed';
progressModal.closeModal();
// Reload data after modal closes (if completed)
if (wasCompleted && !hasReloadedRef.current) {
hasReloadedRef.current = true;
loadImages();
setTimeout(() => {
hasReloadedRef.current = false;
}, 1000);
}
}}
/>
) : (
/* Progress Modal for other AI Functions */
<ProgressModal
isOpen={progressModal.isOpen}
title={progressModal.title}
percentage={progressModal.progress.percentage}
status={progressModal.progress.status}
message={progressModal.progress.message}
details={progressModal.progress.details}
taskId={progressModal.taskId || undefined}
functionId={progressModal.functionId}
onClose={() => {
const wasCompleted = progressModal.progress.status === 'completed';
progressModal.closeModal();
// Reload data after modal closes (if completed)
if (wasCompleted && !hasReloadedRef.current) {
hasReloadedRef.current = true;
loadImages();
setTimeout(() => {
hasReloadedRef.current = false;
}, 1000);
}
}}
/>
)}
</>
);
}