Files
openchamber/packages/ui/src/hooks/useFileSystemAccess.ts
T

42 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-12-07 19:32:53 +02:00
import { useCallback, useEffect, useState } from 'react';
2026-04-27 15:45:14 +03:00
import { isDesktopShell, requestDirectoryAccess, startAccessingDirectory, stopAccessingDirectory } from '@/lib/desktop';
2025-12-07 19:32:53 +02:00
export const useFileSystemAccess = () => {
const [isDesktop, setIsDesktop] = useState(false);
useEffect(() => {
2026-04-27 15:45:14 +03:00
setIsDesktop(isDesktopShell());
2025-12-07 19:32:53 +02:00
}, []);
2026-01-06 21:31:04 +02:00
const requestAccess = useCallback(async (directoryPath: string): Promise<{ success: boolean; path?: string; projectId?: string; error?: string }> => {
2025-12-07 19:32:53 +02:00
if (!isDesktop) {
return { success: true, path: directoryPath };
}
return await requestDirectoryAccess(directoryPath);
}, [isDesktop]);
const startAccessing = useCallback(async (directoryPath: string): Promise<{ success: boolean; error?: string }> => {
if (!isDesktop) {
return { success: true };
}
return await startAccessingDirectory(directoryPath);
}, [isDesktop]);
const stopAccessing = useCallback(async (directoryPath: string): Promise<{ success: boolean; error?: string }> => {
if (!isDesktop) {
return { success: true };
}
return await stopAccessingDirectory(directoryPath);
}, [isDesktop]);
return {
isDesktop,
requestAccess,
startAccessing,
stopAccessing
};
};