sync files

This commit is contained in:
m
2026-07-27 21:44:57 +02:00
parent 5c85ffa5fe
commit cb9cea6ff3
14 changed files with 1032 additions and 114 deletions
+33 -2
View File
@@ -1,10 +1,14 @@
import { createMMKV } from 'react-native-mmkv';
export type SyncMode = 'none' | 'manual' | 'auto';
export type StoredFolder = {
id: string;
uri: string;
name: string;
visible: boolean;
syncMode: SyncMode;
syncCellular: boolean;
};
const storage = createMMKV({ id: 'vaultdrop-saf' });
@@ -18,7 +22,20 @@ function generateId(): string {
function getAllRaw(): StoredFolder[] {
const raw = storage.getString(FOLDERS_KEY);
if (!raw) return [];
return JSON.parse(raw) as StoredFolder[];
const parsed = JSON.parse(raw) as StoredFolder[];
let migrated = false;
for (const f of parsed) {
if (f.syncMode === undefined) {
(f as any).syncMode = 'none';
migrated = true;
}
if (f.syncCellular === undefined) {
(f as any).syncCellular = false;
migrated = true;
}
}
if (migrated) saveAll(parsed);
return parsed;
}
function saveAll(folders: StoredFolder[]) {
@@ -39,7 +56,7 @@ export const safDirectory = {
if (folders.some((f) => f.uri === uri)) {
return folders.find((f) => f.uri === uri)!;
}
const folder: StoredFolder = { id: generateId(), uri, name, visible: true };
const folder: StoredFolder = { id: generateId(), uri, name, visible: true, syncMode: 'none', syncCellular: false };
folders.push(folder);
saveAll(folders);
return folder;
@@ -57,6 +74,20 @@ export const safDirectory = {
saveAll(folders);
},
updateSyncMode(id: string, syncMode: SyncMode) {
const folders = getAllRaw().map((f) =>
f.id === id ? { ...f, syncMode } : f
);
saveAll(folders);
},
updateSyncCellular(id: string, syncCellular: boolean) {
const folders = getAllRaw().map((f) =>
f.id === id ? { ...f, syncCellular } : f
);
saveAll(folders);
},
clear() {
storage.remove(FOLDERS_KEY);
},