"use client"; import { useEffect } from "react"; import { httpGetInterceptor } from "@/service/http-config/http-interceptor-service"; import { useWorkflowModal } from "@/components/modals/WorkflowModalProvider"; interface UserInfo { id: number; username: string; email: string; fullname: string; address: string; phoneNumber: string; workType?: string; genderType?: string; identityType?: string; identityNumber?: string; dateOfBirth?: string; lastEducation?: string; keycloakId: string; userRoleId: number; userLevelId: number; userLevelGroup: string; statusId: number; createdById?: number; profilePicturePath?: string; isActive: boolean; createdAt: string; updatedAt: string; approvalWorkflowInfo: { hasWorkflowSetup: boolean; defaultWorkflowId?: number; defaultWorkflowName?: string; requiresApproval?: boolean; autoPublishArticles?: boolean; isApprovalActive?: boolean; }; } // interface ApiResponse { // success: boolean; // code: number; // messages: string[]; // data: UserInfo | null; // } interface ApiResponse { error: boolean; message: string; data: T | null; } interface UserInfo { id: number; username: string; email: string; fullname: string; address: string; phoneNumber: string; workType?: string; genderType?: string; identityType?: string; identityNumber?: string; dateOfBirth?: string; lastEducation?: string; keycloakId: string; userRoleId: number; userLevelId: number; userLevelGroup: string; statusId: number; createdById?: number; profilePicturePath?: string; isActive: boolean; createdAt: string; updatedAt: string; approvalWorkflowInfo: { hasWorkflowSetup: boolean; defaultWorkflowId?: number; defaultWorkflowName?: string; requiresApproval?: boolean; autoPublishArticles?: boolean; isApprovalActive?: boolean; }; } interface ApiResponse { error: boolean; message: string; data: T | null; } export function useWorkflowStatusCheck() { const { showWorkflowModal } = useWorkflowModal(); const checkWorkflowStatus = async () => { try { const response = (await httpGetInterceptor("users/info")) as | ApiResponse | undefined; if (response && !response.error && response.data?.approvalWorkflowInfo) { const workflowInfo = response.data.approvalWorkflowInfo; if (!workflowInfo.hasWorkflowSetup) { showWorkflowModal(workflowInfo); } } } catch (error) { console.error("Error checking workflow status:", error); } }; return { checkWorkflowStatus }; } export function useAutoWorkflowCheck() { const { checkWorkflowStatus } = useWorkflowStatusCheck(); useEffect(() => { checkWorkflowStatus(); }, [checkWorkflowStatus]); }