123 lines
2.9 KiB
TypeScript
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]);
|
|
}
|