settings fix

This commit is contained in:
m
2026-08-25 21:06:47 +02:00
parent 70adedeed2
commit 1cf9cf24a4
4 changed files with 6 additions and 60 deletions
+1 -7
View File
@@ -101,7 +101,7 @@ export function HomeScreen() {
const insets = useSafeAreaInsets(); const insets = useSafeAreaInsets();
const [page, setPage] = useState(1); const [page, setPage] = useState(1);
const { data, isLoading, error, isFetching, refetch } = useFiles(null, page, PAGE_SIZE); const { data, isLoading, error, isFetching, refetch } = useFiles(null, page, PAGE_SIZE);
const { hasPermission, requestPermission, pickDirectory, pickAndScanRecursive, folders, refreshFolders, discovered } = useLocalFiles(); const { hasPermission, requestPermission, pickAndScanRecursive, folders, refreshFolders, discovered } = useLocalFiles();
const freeLocalSpace = useFreeLocalSpace(); const freeLocalSpace = useFreeLocalSpace();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const [searchQuery, setSearchQuery] = useState(''); const [searchQuery, setSearchQuery] = useState('');
@@ -388,11 +388,6 @@ export function HomeScreen() {
setRemoveFolderConfirmId(null); setRemoveFolderConfirmId(null);
}, [removeFolderConfirmId, refreshFolders]); }, [removeFolderConfirmId, refreshFolders]);
const handleAddFolder = useCallback(async () => {
setSettingsModalVisible(false);
await pickDirectory();
}, [pickDirectory]);
const handleAddFolderRecursive = useCallback(async () => { const handleAddFolderRecursive = useCallback(async () => {
setSettingsModalVisible(false); setSettingsModalVisible(false);
await pickAndScanRecursive(); await pickAndScanRecursive();
@@ -673,7 +668,6 @@ export function HomeScreen() {
folders={folders} folders={folders}
onToggleVisibility={handleToggleFolderVisibility} onToggleVisibility={handleToggleFolderVisibility}
onRemoveFolder={handleRemoveFolder} onRemoveFolder={handleRemoveFolder}
onAddFolder={handleAddFolder}
onAddFolderRecursive={handleAddFolderRecursive} onAddFolderRecursive={handleAddFolderRecursive}
onUpdateSyncMode={handleUpdateSyncMode} onUpdateSyncMode={handleUpdateSyncMode}
onUpdateSyncCellular={handleUpdateSyncCellular} onUpdateSyncCellular={handleUpdateSyncCellular}
+3 -25
View File
@@ -19,8 +19,7 @@ interface SettingsModalProps {
folders: StoredFolder[]; folders: StoredFolder[];
onToggleVisibility: (folderId: string) => void; onToggleVisibility: (folderId: string) => void;
onRemoveFolder: (folderId: string) => void; onRemoveFolder: (folderId: string) => void;
onAddFolder: () => void; onAddFolderRecursive: () => void;
onAddFolderRecursive?: () => void;
onUpdateSyncMode: (folderId: string, mode: SyncMode) => void; onUpdateSyncMode: (folderId: string, mode: SyncMode) => void;
onUpdateSyncCellular: (folderId: string, enabled: boolean) => void; onUpdateSyncCellular: (folderId: string, enabled: boolean) => void;
globalSyncMode: SyncGlobalMode; globalSyncMode: SyncGlobalMode;
@@ -47,7 +46,6 @@ export function SettingsModal({
folders, folders,
onToggleVisibility, onToggleVisibility,
onRemoveFolder, onRemoveFolder,
onAddFolder,
onAddFolderRecursive, onAddFolderRecursive,
onUpdateSyncMode, onUpdateSyncMode,
onUpdateSyncCellular, onUpdateSyncCellular,
@@ -106,7 +104,6 @@ export function SettingsModal({
onBack={() => setView('menu')} onBack={() => setView('menu')}
onToggleVisibility={onToggleVisibility} onToggleVisibility={onToggleVisibility}
onRemoveFolder={handleRemoveFolder} onRemoveFolder={handleRemoveFolder}
onAddFolder={onAddFolder}
onAddFolderRecursive={onAddFolderRecursive} onAddFolderRecursive={onAddFolderRecursive}
/> />
)} )}
@@ -190,15 +187,13 @@ function FoldersView({
onBack, onBack,
onToggleVisibility, onToggleVisibility,
onRemoveFolder, onRemoveFolder,
onAddFolder,
onAddFolderRecursive, onAddFolderRecursive,
}: { }: {
folders: StoredFolder[]; folders: StoredFolder[];
onBack: () => void; onBack: () => void;
onToggleVisibility: (id: string) => void; onToggleVisibility: (id: string) => void;
onRemoveFolder: (folder: StoredFolder) => void; onRemoveFolder: (folder: StoredFolder) => void;
onAddFolder: () => void; onAddFolderRecursive: () => void;
onAddFolderRecursive?: () => void;
}) { }) {
return ( return (
<ScrollView style={styles.viewContainer} showsVerticalScrollIndicator={false}> <ScrollView style={styles.viewContainer} showsVerticalScrollIndicator={false}>
@@ -241,17 +236,10 @@ function FoldersView({
}) })
)} )}
<TouchableOpacity style={styles.addBtn} onPress={onAddFolder}> <TouchableOpacity style={styles.addBtn} onPress={onAddFolderRecursive}>
<MaterialIcons name="add" size={20} color="#fff" /> <MaterialIcons name="add" size={20} color="#fff" />
<Text style={styles.addBtnText}>Ajouter un dossier</Text> <Text style={styles.addBtnText}>Ajouter un dossier</Text>
</TouchableOpacity> </TouchableOpacity>
{onAddFolderRecursive && (
<TouchableOpacity style={styles.scanRootBtn} onPress={onAddFolderRecursive}>
<MaterialIcons name="linear-scale" size={20} color="#fff" />
<Text style={styles.addBtnText}>Ajouter (scan récursif)</Text>
</TouchableOpacity>
)}
</ScrollView> </ScrollView>
); );
} }
@@ -538,16 +526,6 @@ const styles = StyleSheet.create({
marginTop: 16, marginTop: 16,
gap: 8, gap: 8,
}, },
scanRootBtn: {
flexDirection: 'row',
alignItems: 'center',
justifyContent: 'center',
backgroundColor: '#8E24AA',
borderRadius: 10,
paddingVertical: 12,
marginTop: 10,
gap: 8,
},
addBtnText: { addBtnText: {
fontSize: 15, fontSize: 15,
color: '#fff', color: '#fff',
+1 -26
View File
@@ -251,31 +251,6 @@ export function useDeviceFiles() {
}); });
}, []); }, []);
const pickDirectory = useCallback(async () => {
try {
const result = await FileSystem.StorageAccessFramework.requestDirectoryPermissionsAsync();
if (!result.granted) return false;
const dirUri = result.directoryUri;
const parts = dirUri.split('/');
const dirName = decodeURIComponent(parts[parts.length - 1] ?? 'Dossier');
safDirectory.addFolder(dirUri, dirName);
setFolders(safDirectory.getAll());
const folderFiles = await scanSafFolder({ id: 'new', uri: dirUri, name: dirName, visible: true, syncMode: 'none', syncCellular: false, source: 'saf' });
setFiles((prev) => {
const existing = new Set(prev.map((f) => f.id));
const merged = [...prev];
for (const f of folderFiles) {
if (!existing.has(f.id)) merged.push(f);
}
return merged;
});
return true;
} catch (err) {
return false;
}
}, []);
const pickAndScanRecursive = useCallback(async (): Promise<{ addedFolders: number }> => { const pickAndScanRecursive = useCallback(async (): Promise<{ addedFolders: number }> => {
try { try {
const result = await FileSystem.StorageAccessFramework.requestDirectoryPermissionsAsync(); const result = await FileSystem.StorageAccessFramework.requestDirectoryPermissionsAsync();
@@ -371,7 +346,7 @@ export function useDeviceFiles() {
return { return {
files, isLoading, hasPermission, files, isLoading, hasPermission,
requestPermission, rescan, requestPermission, rescan,
pickDirectory, pickAndScanRecursive, pickAndScanRecursive,
folders, refreshFolders, folders, refreshFolders,
discovered, discoverMediaAlbums, discovered, discoverMediaAlbums,
}; };
+1 -2
View File
@@ -4,7 +4,7 @@ import { fileStore } from '../services/fileStore';
import { UnifiedFileItem } from '../types'; import { UnifiedFileItem } from '../types';
export function useLocalFiles() { export function useLocalFiles() {
const { files: deviceFiles, isLoading: deviceLoading, hasPermission, requestPermission, rescan, pickDirectory, pickAndScanRecursive, folders, refreshFolders, discovered, discoverMediaAlbums } = useDeviceFiles(); const { files: deviceFiles, isLoading: deviceLoading, hasPermission, requestPermission, rescan, pickAndScanRecursive, folders, refreshFolders, discovered, discoverMediaAlbums } = useDeviceFiles();
const lastDeviceCount = useRef(0); const lastDeviceCount = useRef(0);
useEffect(() => { useEffect(() => {
@@ -75,7 +75,6 @@ export function useLocalFiles() {
hasPermission, hasPermission,
requestPermission, requestPermission,
rescan, rescan,
pickDirectory,
pickAndScanRecursive, pickAndScanRecursive,
folders, folders,
refreshFolders, refreshFolders,