intermittent commit
This commit is contained in:
@@ -182,6 +182,7 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
||||
}, [visibleFiles, folders, currentFolder, searchActive, sortColumn, sortDirection]);
|
||||
const fileListViewportRef = useRef<HTMLDivElement | null>(null);
|
||||
const fileListMeasureRowRef = useRef<HTMLDivElement | null>(null);
|
||||
const managedSpaceLoadsInFlightRef = useRef<Set<string>>(new Set());
|
||||
const [fileListViewportHeight, setFileListViewportHeight] = useState(0);
|
||||
const [fileListScrollTop, setFileListScrollTop] = useState(0);
|
||||
const [fileListRowHeight, setFileListRowHeight] = useState(DEFAULT_FILE_LIST_ROW_HEIGHT);
|
||||
@@ -291,8 +292,9 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
||||
try {
|
||||
const response = await listFileSpaces(settings);
|
||||
setSpaces(response.spaces);
|
||||
setActiveSpaceId((current) => current || response.spaces[0]?.id || "");
|
||||
await Promise.all(response.spaces.filter((space) => !isConnectorSpace(space)).map((space) => loadSpaceContents(space, { silent: true })));
|
||||
const nextActiveSpace = response.spaces.find((space) => space.id === activeSpaceId) ?? response.spaces[0] ?? null;
|
||||
setActiveSpaceId(nextActiveSpace?.id || "");
|
||||
if (nextActiveSpace && !isConnectorSpace(nextActiveSpace)) await loadSpaceContents(nextActiveSpace, { silent: true });
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : String(err));
|
||||
} finally {
|
||||
@@ -331,6 +333,8 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
||||
await loadConnectorSpaceContents(space, { silent: options.silent, folderPath: "" });
|
||||
return;
|
||||
}
|
||||
if (managedSpaceLoadsInFlightRef.current.has(space.id)) return;
|
||||
managedSpaceLoadsInFlightRef.current.add(space.id);
|
||||
if (!options.silent) {
|
||||
setBusy(true);
|
||||
setError("");
|
||||
@@ -372,6 +376,7 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : String(err));
|
||||
} finally {
|
||||
managedSpaceLoadsInFlightRef.current.delete(space.id);
|
||||
if (!options.silent) setBusy(false);
|
||||
}
|
||||
}
|
||||
@@ -411,6 +416,8 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
|
||||
const nextSpace = spaces.find((space) => space.id === activeSpaceId);
|
||||
if (nextSpace && isConnectorSpace(nextSpace)) {
|
||||
void loadConnectorSpaceContents(nextSpace, { folderPath: "", silent: true });
|
||||
} else if (nextSpace && filesBySpace[nextSpace.id] === undefined && foldersBySpace[nextSpace.id] === undefined) {
|
||||
void loadSpaceContents(nextSpace, { silent: true });
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [activeSpaceId, spaces]);
|
||||
|
||||
Reference in New Issue
Block a user