kontenhumas-fe/hooks/useWorkflowStatusCheck.ts

123 lines
2.9 KiB
TypeScript

"use client";
import { useEffect } from "react";
import { httpGetInterceptor } from "@/service/http-config/http-interceptor-service";
import { useWorkflowModal } from "@/components/modals/WorkflowModalProvider";
import { getInfoProfile } from "@/service/auth";
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<T = any> {
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<T = any> {
error: boolean;
message: string;
data: T | null;
}
export function useWorkflowStatusCheck() {
const { showWorkflowModal } = useWorkflowModal();
const checkWorkflowStatus = async () => {
try {
const response = await getInfoProfile();
console.log("Response approvalWorkflowInfo: ", response);
if (response?.data?.data && response?.data?.data?.approvalWorkflowInfo) {
const workflowInfo = response.data.data.approvalWorkflowInfo;
// Show modal if workflow is not setup
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]);
}