Minor fix
This commit is contained in:
parent
7982f7b300
commit
ed54f2e7e2
@ -63,7 +63,7 @@ export default function FoldersPage() {
|
||||
}
|
||||
|
||||
// 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;
|
||||
try {
|
||||
const messageBus = MessageBus.getInstance(iframeUrl);
|
||||
@ -73,7 +73,7 @@ export default function FoldersPage() {
|
||||
} catch (err) {
|
||||
console.error('Error fetching folder private data:', err);
|
||||
}
|
||||
};
|
||||
}, [myFolderProcesses]);
|
||||
|
||||
// Function to load folders from 4NK processes (adapted to new FolderData model)
|
||||
const loadFoldersFrom4NK = useCallback(() => {
|
||||
@ -82,6 +82,7 @@ export default function FoldersPage() {
|
||||
const folderData: FolderData[] = [];
|
||||
let hasAllPrivateData = true;
|
||||
let hasFoldersToLoad = false;
|
||||
const missingPrivateData: Array<{processId: string, stateId: string}> = [];
|
||||
|
||||
Object.entries(folderProcesses).forEach(([processId, process]: [string, any]) => {
|
||||
// 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
|
||||
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) {
|
||||
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
|
||||
}
|
||||
|
||||
@ -122,6 +123,12 @@ export default function FoldersPage() {
|
||||
// Manage loading state
|
||||
if (hasFoldersToLoad && !hasAllPrivateData) {
|
||||
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) {
|
||||
setLoadingFolders(false);
|
||||
setFolders(folderData);
|
||||
@ -193,13 +200,6 @@ export default function FoldersPage() {
|
||||
}
|
||||
}, [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
|
||||
const filteredFolders = folders.filter(folder => {
|
||||
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");
|
||||
});
|
||||
},
|
||||
[isConnected, userPairingId, loadFoldersFrom4NK]
|
||||
[isConnected, userPairingId]
|
||||
);
|
||||
|
||||
// Auth connection handler
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user