diff --git a/lib/contexts/FourNKContext.tsx b/lib/contexts/FourNKContext.tsx index 2592638..eb084ae 100644 --- a/lib/contexts/FourNKContext.tsx +++ b/lib/contexts/FourNKContext.tsx @@ -4,7 +4,7 @@ import { createContext, useContext, useState, useEffect, useCallback, ReactNode import MessageBus from "@/lib/4nk/MessageBus"; import { iframeUrl } from "@/app/page"; 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 export interface EnrichedFolderData extends FolderData { @@ -82,45 +82,51 @@ export function FourNKProvider({ children }: { children: ReactNode }) { return; } - // console.log(validStates); + let basePrivateData; + let mergedMessages: FolderChatData[] = []; + let mergedMessagesOwner: FolderChatData[] = []; - // validStates.forEach(state => { - hasFoldersToLoad = true; - const stateToProcess = referenceState; + validStates.forEach((state: any) => { + hasFoldersToLoad = true; + 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... - if (!privateData) { - hasAllPrivateData = false; - missingPrivateData.push({ processId, stateId: stateToProcess.state_id }); - 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); + // Si on n'a pas les données pour cet état de référence... + if (!privateData) { + hasAllPrivateData = false; + missingPrivateData.push({ processId, stateId: stateToProcess.state_id }); + 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); - /* - // 4. CONDITION B: On vérifie si cet état contient des messages. - const hasMessages = (privateData.messages && privateData.messages.length > 0); - const hasMessagesOwner = (privateData.messages_owner && privateData.messages_owner.length > 0); + if (privateData.messages_owner instanceof Map) { + const messageOwnerObj = Object.fromEntries(privateData.messages_owner); + mergedMessagesOwner.push(messageOwnerObj); + } - // Si cet état n'a pas de messages, on l'ignore (return) - if (!hasMessages && !hasMessagesOwner) { - return; // Passe à l'état suivant - } - */ + if (privateData.messages instanceof Map) { + const messageObj = Object.fromEntries(privateData.messages); + mergedMessages.push(messageObj); + } + if (privateData.folderNumber) { + basePrivateData = privateData; + } + }); + + if (!basePrivateData) return; folderData.push({ processId: processId, - folderNumber: mainFolderNumber, // La clé unique - name: privateData.name || `Dossier ${mainFolderNumber}`, - description: privateData.description || '', - created_at: privateData.created_at || new Date().toISOString(), - updated_at: privateData.updated_at || new Date().toISOString(), - notes: privateData.notes || [], - messages: privateData.messages || [], - messages_owner: privateData.messages_owner || [], + folderNumber: mainFolderNumber, + name: basePrivateData.name || `Dossier ${mainFolderNumber}`, + description: basePrivateData.description || '', + created_at: basePrivateData.created_at || new Date().toISOString(), + updated_at: basePrivateData.updated_at || new Date().toISOString(), + notes: basePrivateData.notes || [], + messages: mergedMessages || [], + messages_owner: mergedMessagesOwner || [], }); - // }); }); @@ -136,7 +142,7 @@ export function FourNKProvider({ children }: { children: ReactNode }) { setFolders(folderData); 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(() => { if (!processes || !userPairingId) return;