In progress - Implemented RhFolderProcess
This commit is contained in:
parent
5c2fb5160b
commit
18926260fc
@ -51,6 +51,7 @@ import {
|
||||
import FolderModal from "@/components/FolderModal"
|
||||
import type { FolderData as SDKFolderData, FolderCreated } from "@/lib/4nk/models/FolderData"
|
||||
import { FolderPrivateFields, setDefaultFolderRoles } from "@/lib/4nk/models/FolderData"
|
||||
import { RhCreated, RhData, RhPrivateFields, setDefaultRhRoles } from "@/lib/4nk/models/RhData"
|
||||
import AuthModal from "@/components/4nk/AuthModal"
|
||||
import Iframe from "@/components/4nk/Iframe"
|
||||
import MessageBus from "@/lib/4nk/MessageBus"
|
||||
@ -58,7 +59,6 @@ import EventBus from "@/lib/4nk/EventBus"
|
||||
import UserStore from "@/lib/4nk/UserStore"
|
||||
import ProcessesViewer from "@/components/ProcessesViewer"
|
||||
import { iframeUrl } from "@/app/page"
|
||||
|
||||
interface FolderData {
|
||||
id: number
|
||||
name: string
|
||||
@ -356,7 +356,6 @@ export default function FoldersPage() {
|
||||
messageBus.isReady().then(() => {
|
||||
messageBus.getProcesses().then((processes: any) => {
|
||||
setProcesses(processes);
|
||||
console.log('getProcesses', processes);
|
||||
});
|
||||
});
|
||||
}
|
||||
@ -1027,17 +1026,60 @@ export default function FoldersPage() {
|
||||
)
|
||||
);
|
||||
|
||||
setShowCreateFolderModal(false);
|
||||
showNotification("success", `Dossier "${folderData.name}" créé avec succès sur 4NK`);
|
||||
setShowCreateFolderModal(false);
|
||||
showNotification("success", `Dossier "${folderData.name}" créé avec succès sur 4NK`);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Erreur lors de la création du dossier 4NK:', error);
|
||||
showNotification("error", "Erreur lors de la création du dossier");
|
||||
console.error('Erreur lors de la création du dossier 4NK:', error);
|
||||
showNotification("error", "Erreur lors de la création du dossier");
|
||||
});
|
||||
},
|
||||
[userPairingId, isConnected, iframeUrl, folderType]
|
||||
);
|
||||
|
||||
// const handleSaveNewRhFolder = useCallback(
|
||||
// (folderData: RhData) => {
|
||||
// if (!isConnected || !userPairingId) {
|
||||
// console.error('Conditions non remplies:', { isConnected, userPairingId });
|
||||
// showNotification(
|
||||
// "error",
|
||||
// `Vous devez être connecté à 4NK pour créer un dossier (Connected: ${isConnected}, PairingId: ${userPairingId ? 'OK' : 'NULL'})`
|
||||
// );
|
||||
// return;
|
||||
// }
|
||||
|
||||
// const roles = setDefaultRhRoles(userPairingId, [], []);
|
||||
// const folderPrivateFields = RhPrivateFields;
|
||||
|
||||
// MessageBus.getInstance(iframeUrl)
|
||||
// .createRhFolder(folderData, folderPrivateFields, roles)
|
||||
// .then((_folderCreated: RhCreated) => {
|
||||
// const firstStateId = _folderCreated.process.states[0].state_id;
|
||||
// MessageBus.getInstance(iframeUrl)
|
||||
// .notifyProcessUpdate(_folderCreated.processId, firstStateId)
|
||||
// .then(() =>
|
||||
// MessageBus.getInstance(iframeUrl)
|
||||
// .validateState(_folderCreated.processId, firstStateId)
|
||||
// .then(() =>
|
||||
// MessageBus.getInstance(iframeUrl)
|
||||
// .getProcesses()
|
||||
// .then(async (processes: any) => {
|
||||
// setProcesses(processes)
|
||||
// })
|
||||
// )
|
||||
// );
|
||||
|
||||
// setShowCreateFolderModal(false);
|
||||
// showNotification("success", `Dossier (RH) "${folderData.name}" créé avec succès sur 4NK`);
|
||||
// })
|
||||
// .catch((error) => {
|
||||
// console.error('Erreur lors de la création du dossier 4NK:', error);
|
||||
// showNotification("error", "Erreur lors de la création du dossier");
|
||||
// });
|
||||
// },
|
||||
// [userPairingId, isConnected, iframeUrl, folderType]
|
||||
// );
|
||||
|
||||
const handleToggleFavorite = (folderId: number) => {
|
||||
const folder = folders.find((f) => f.id === folderId)
|
||||
if (!folder) return
|
||||
|
||||
@ -5,6 +5,7 @@ import { isProfileData, type ProfileCreated, type ProfileData } from './models/P
|
||||
import { isFolderData, type FolderCreated, type FolderData } from './models/FolderData';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import type { RoleDefinition } from './models/Roles';
|
||||
import { isRhData, RhCreated, RhData } from './models/RhData';
|
||||
|
||||
export default class MessageBus {
|
||||
private static instance: MessageBus;
|
||||
@ -407,15 +408,65 @@ export default class MessageBus {
|
||||
unsubscribe();
|
||||
this.destroyMessageListener();
|
||||
// Return value must contain the data commited in the new process
|
||||
const folderData = processCreated.processData;
|
||||
if (!folderData || !isFolderData(folderData)) reject('Returned invalid process data');
|
||||
const data = processCreated.processData;
|
||||
if (!data || !isFolderData(data)) reject('Returned invalid process data');
|
||||
if (!processCreated.processId || typeof processCreated.processId !== 'string') reject('Returned invalid process id');
|
||||
// TODO check that process is of type Process
|
||||
|
||||
const folderCreated: FolderCreated = {
|
||||
processId: processCreated.processId,
|
||||
process: processCreated.process,
|
||||
folderData
|
||||
data
|
||||
};
|
||||
|
||||
resolve(folderCreated);
|
||||
});
|
||||
|
||||
const unsubscribeError = EventBus.getInstance().on('ERROR_PROCESS_CREATED', (responseId: string, error: string) => {
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
unsubscribeError();
|
||||
this.destroyMessageListener();
|
||||
reject(error);
|
||||
});
|
||||
|
||||
this.sendMessage({
|
||||
type: 'CREATE_PROCESS',
|
||||
processData: folderData,
|
||||
privateFields: folderPrivateData,
|
||||
roles,
|
||||
accessToken
|
||||
});
|
||||
}).catch(console.error);
|
||||
});
|
||||
}
|
||||
|
||||
public createRhFolder(folderData: RhData, folderPrivateData: string[], roles: Record<string, RoleDefinition>): Promise<RhCreated> {
|
||||
return new Promise<RhCreated>((resolve: (folderData: RhCreated) => void, reject: (error: string) => void) => {
|
||||
this.checkToken().then(() => {
|
||||
const userStore = UserStore.getInstance();
|
||||
const accessToken = userStore.getAccessToken()!;
|
||||
|
||||
const correlationId = uuidv4();
|
||||
this.initMessageListener(correlationId);
|
||||
|
||||
const unsubscribe = EventBus.getInstance().on('PROCESS_CREATED', (responseId: string, processCreated: any) => {
|
||||
if (responseId !== correlationId) {
|
||||
return;
|
||||
}
|
||||
unsubscribe();
|
||||
this.destroyMessageListener();
|
||||
// Return value must contain the data commited in the new process
|
||||
const data = processCreated.processData;
|
||||
if (!data || !isFolderData(data)) reject('Returned invalid process data');
|
||||
if (!processCreated.processId || typeof processCreated.processId !== 'string') reject('Returned invalid process id');
|
||||
// TODO check that process is of type Process
|
||||
|
||||
const folderCreated: RhCreated = {
|
||||
processId: processCreated.processId,
|
||||
process: processCreated.process,
|
||||
data
|
||||
};
|
||||
|
||||
resolve(folderCreated);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user