"use client"; import React, { useState, useEffect } from "react"; import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; import { IconX, SettingsIcon } from "@/components/icons"; import { useRouter, usePathname } from "next/navigation"; interface WorkflowSetupModalProps { isOpen: boolean; onClose: () => void; workflowInfo?: { hasWorkflowSetup: boolean; defaultWorkflowId?: number; defaultWorkflowName?: string; requiresApproval?: boolean; autoPublishArticles?: boolean; isApprovalActive?: boolean; }; onRefresh?: () => Promise; } export default function WorkflowSetupModal({ isOpen, onClose, workflowInfo, onRefresh }: WorkflowSetupModalProps) { const router = useRouter(); const pathname = usePathname(); const [isVisible, setIsVisible] = useState(false); useEffect(() => { if (isOpen) { setIsVisible(true); } }, [isOpen]); const handleClose = () => { // Allow closing if workflow is setup OR if user is on tenant settings page if (workflowInfo?.hasWorkflowSetup || pathname?.includes('/admin/settings/tenant') || pathname?.includes('/tenant')) { setIsVisible(false); setTimeout(() => { onClose(); }, 200); } }; const handleSetupWorkflow = () => { // Navigate to tenant settings router.push("/admin/settings/tenant"); // Modal will be auto-hidden by WorkflowModalProvider when user reaches tenant settings page }; if (!isOpen) return null; return ( { // Prevent closing by clicking outside unless workflow is setup or on tenant settings page if (!workflowInfo?.hasWorkflowSetup && !pathname?.includes('/admin/settings/tenant') && !pathname?.includes('/tenant')) { e.preventDefault(); } }} onEscapeKeyDown={(e) => { // Prevent closing by pressing ESC unless workflow is setup or on tenant settings page if (!workflowInfo?.hasWorkflowSetup && !pathname?.includes('/admin/settings/tenant') && !pathname?.includes('/tenant')) { e.preventDefault(); } }} > {workflowInfo?.hasWorkflowSetup ? (
) : (
!
)} Workflow Status
{!workflowInfo?.hasWorkflowSetup ? ( // No Workflow Setup
!

Workflow Belum Dikonfigurasi

Anda belum melakukan setup workflow, silahkan setup terlebih dahulu.

{(pathname?.includes('/admin/settings/tenant') || pathname?.includes('/tenant')) && ( )}
) : '' // Workflow Setup Complete // // //
//
// //
//
//

// Workflow Sudah Dikonfigurasi //

//
//
// Workflow: // {workflowInfo.defaultWorkflowName} //
//
// Requires Approval: // // {workflowInfo.requiresApproval ? 'Yes' : 'No'} // //
//
// Auto Publish: // // {workflowInfo.autoPublishArticles ? 'Yes' : 'No'} // //
//
// Status: // // {workflowInfo.isApprovalActive ? 'Active' : 'Inactive'} // //
//
//
// //
//
//
//
//
}
); }