Minor fix

This commit is contained in:
Omar Oughriss 2025-10-31 16:53:01 +01:00
parent 7982f7b300
commit ed54f2e7e2

View File

@ -63,7 +63,7 @@ export default function FoldersPage() {
} }
// Function to fetch folder private data // Function to fetch folder private data
const fetchFolderPrivateData = async (processId: string, stateId: string) => { const fetchFolderPrivateData = useCallback(async (processId: string, stateId: string) => {
if (!myFolderProcesses.includes(processId)) return; if (!myFolderProcesses.includes(processId)) return;
try { try {
const messageBus = MessageBus.getInstance(iframeUrl); const messageBus = MessageBus.getInstance(iframeUrl);
@ -73,7 +73,7 @@ export default function FoldersPage() {
} catch (err) { } catch (err) {
console.error('Error fetching folder private data:', err); console.error('Error fetching folder private data:', err);
} }
}; }, [myFolderProcesses]);
// Function to load folders from 4NK processes (adapted to new FolderData model) // Function to load folders from 4NK processes (adapted to new FolderData model)
const loadFoldersFrom4NK = useCallback(() => { const loadFoldersFrom4NK = useCallback(() => {
@ -82,6 +82,7 @@ export default function FoldersPage() {
const folderData: FolderData[] = []; const folderData: FolderData[] = [];
let hasAllPrivateData = true; let hasAllPrivateData = true;
let hasFoldersToLoad = false; let hasFoldersToLoad = false;
const missingPrivateData: Array<{processId: string, stateId: string}> = [];
Object.entries(folderProcesses).forEach(([processId, process]: [string, any]) => { Object.entries(folderProcesses).forEach(([processId, process]: [string, any]) => {
// Only include processes that belong to the user (myFolderProcesses) // Only include processes that belong to the user (myFolderProcesses)
@ -99,10 +100,10 @@ export default function FoldersPage() {
// Get private data for this state if available // Get private data for this state if available
const privateData = folderPrivateData[latestState.state_id]; const privateData = folderPrivateData[latestState.state_id];
// If we don't have private data yet, trigger fetch and mark as incomplete // If we don't have private data yet, mark as incomplete and collect missing data
if (!privateData) { if (!privateData) {
hasAllPrivateData = false; hasAllPrivateData = false;
setTimeout(() => fetchFolderPrivateData(processId, latestState.state_id), 0); missingPrivateData.push({processId, stateId: latestState.state_id});
return; // Skip creating folder until we have private data return; // Skip creating folder until we have private data
} }
@ -122,6 +123,12 @@ export default function FoldersPage() {
// Manage loading state // Manage loading state
if (hasFoldersToLoad && !hasAllPrivateData) { if (hasFoldersToLoad && !hasAllPrivateData) {
setLoadingFolders(true); setLoadingFolders(true);
// Fetch missing private data (but only once per missing item)
missingPrivateData.forEach(({processId, stateId}) => {
if (!folderPrivateData[stateId]) {
fetchFolderPrivateData(processId, stateId);
}
});
} else if (hasAllPrivateData) { } else if (hasAllPrivateData) {
setLoadingFolders(false); setLoadingFolders(false);
setFolders(folderData); setFolders(folderData);
@ -193,13 +200,6 @@ export default function FoldersPage() {
} }
}, [folderProcesses, myFolderProcesses, loadFoldersFrom4NK]); }, [folderProcesses, myFolderProcesses, loadFoldersFrom4NK]);
// Update folders when private data changes
useEffect(() => {
if (folderProcesses && Object.keys(folderPrivateData).length > 0) {
loadFoldersFrom4NK();
}
}, [folderPrivateData, loadFoldersFrom4NK, folderProcesses]);
// Filter and sort folders // Filter and sort folders
const filteredFolders = folders.filter(folder => { const filteredFolders = folders.filter(folder => {
const matchesSearch = folder.name.toLowerCase().includes(searchTerm.toLowerCase()) || const matchesSearch = folder.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
@ -291,7 +291,7 @@ export default function FoldersPage() {
showNotification("error", "Erreur lors de la création du dossier"); showNotification("error", "Erreur lors de la création du dossier");
}); });
}, },
[isConnected, userPairingId, loadFoldersFrom4NK] [isConnected, userPairingId]
); );
// Auth connection handler // Auth connection handler