Improved loadFoldersFrom4NK to get retrieve folder with his messages

This commit is contained in:
Sadrinho27 2025-11-12 09:28:14 +01:00
parent 15d9d80b52
commit dd5e55f089

View File

@ -4,7 +4,7 @@ import { createContext, useContext, useState, useEffect, useCallback, ReactNode
import MessageBus from "@/lib/4nk/MessageBus"; import MessageBus from "@/lib/4nk/MessageBus";
import { iframeUrl } from "@/app/page"; import { iframeUrl } from "@/app/page";
import UserStore from "@/lib/4nk/UserStore"; import UserStore from "@/lib/4nk/UserStore";
import { FolderData } from "@/lib/4nk/models/FolderData"; import { FolderChatData, FolderData } from "@/lib/4nk/models/FolderData";
// Interface enrichie qui inclut maintenant les membres ET les fichiers // Interface enrichie qui inclut maintenant les membres ET les fichiers
export interface EnrichedFolderData extends FolderData { export interface EnrichedFolderData extends FolderData {
@ -82,45 +82,51 @@ export function FourNKProvider({ children }: { children: ReactNode }) {
return; return;
} }
// console.log(validStates); let basePrivateData;
let mergedMessages: FolderChatData[] = [];
let mergedMessagesOwner: FolderChatData[] = [];
// validStates.forEach(state => { validStates.forEach((state: any) => {
hasFoldersToLoad = true; hasFoldersToLoad = true;
const stateToProcess = referenceState; const stateToProcess = state;
const privateData = folderPrivateData[stateToProcess.state_id]; const privateData = folderPrivateData[stateToProcess.state_id];
// Si on n'a pas les données pour cet état de référence... // Si on n'a pas les données pour cet état de référence...
if (!privateData) { if (!privateData) {
hasAllPrivateData = false; hasAllPrivateData = false;
missingPrivateData.push({ processId, stateId: stateToProcess.state_id }); missingPrivateData.push({ processId, stateId: stateToProcess.state_id });
return; // On quitte ce process, on réessaiera au prochain rendu return; // On quitte ce process, on réessaiera au prochain rendu
} }
// console.log("Données déchiffrées pour le state:", stateToProcess.state_id, privateData); // console.log("Données déchiffrées pour le state:", stateToProcess.state_id, privateData);
/* if (privateData.messages_owner instanceof Map) {
// 4. CONDITION B: On vérifie si cet état contient des messages. const messageOwnerObj = Object.fromEntries(privateData.messages_owner);
const hasMessages = (privateData.messages && privateData.messages.length > 0); mergedMessagesOwner.push(messageOwnerObj);
const hasMessagesOwner = (privateData.messages_owner && privateData.messages_owner.length > 0); }
// Si cet état n'a pas de messages, on l'ignore (return) if (privateData.messages instanceof Map) {
if (!hasMessages && !hasMessagesOwner) { const messageObj = Object.fromEntries(privateData.messages);
return; // Passe à l'état suivant mergedMessages.push(messageObj);
} }
*/
if (privateData.folderNumber) {
basePrivateData = privateData;
}
});
if (!basePrivateData) return;
folderData.push({ folderData.push({
processId: processId, processId: processId,
folderNumber: mainFolderNumber, // La clé unique folderNumber: mainFolderNumber,
name: privateData.name || `Dossier ${mainFolderNumber}`, name: basePrivateData.name || `Dossier ${mainFolderNumber}`,
description: privateData.description || '', description: basePrivateData.description || '',
created_at: privateData.created_at || new Date().toISOString(), created_at: basePrivateData.created_at || new Date().toISOString(),
updated_at: privateData.updated_at || new Date().toISOString(), updated_at: basePrivateData.updated_at || new Date().toISOString(),
notes: privateData.notes || [], notes: basePrivateData.notes || [],
messages: privateData.messages || [], messages: mergedMessages || [],
messages_owner: privateData.messages_owner || [], messages_owner: mergedMessagesOwner || [],
}); });
// });
}); });
@ -136,7 +142,7 @@ export function FourNKProvider({ children }: { children: ReactNode }) {
setFolders(folderData); setFolders(folderData);
setLoadingFolders(false); setLoadingFolders(false);
} }
}, [folderProcesses, myFolderProcesses, folderPrivateData, fetchFolderPrivateData, setFolders, setLoadingFolders]); // J'ai ajouté setFolders et setLoadingFolders aux dépendances }, [folderProcesses, myFolderProcesses, folderPrivateData, fetchFolderPrivateData, setFolders, setLoadingFolders]);
const loadMembersFrom4NK = useCallback(() => { const loadMembersFrom4NK = useCallback(() => {
if (!processes || !userPairingId) return; if (!processes || !userPairingId) return;