distant storage

This commit is contained in:
m
2026-09-09 21:55:51 +02:00
parent 2e01484383
commit ce966e67c5
5 changed files with 107 additions and 1 deletions
+11
View File
@@ -1,7 +1,18 @@
import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';
import { pickDirectory } from '../services/safDirectory';
import { useEffect } from 'react';
import { saveDirectory } from '../services/localStorage';
export default function Index() {
useEffect(()=>{
pickDirectory().then((value) => {
if ( !value ) return;
saveDirectory(value)
})
},[])
return (
<View style={styles.container}>
<Text style={styles.title}>Dot.</Text>
+7 -1
View File
@@ -1,5 +1,6 @@
import { createContext, useCallback, useContext, useMemo, useState } from 'react';
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
import type { ReactNode } from 'react';
import { useSyncDevice } from '../features/syncDevice';
export type User = {
};
@@ -11,6 +12,11 @@ type AuthContextValue = {
const AuthContext = createContext<AuthContextValue | null>(null);
export function AuthProvider({ children }: { children: ReactNode }) {
useEffect(()=>{
const {} = useSyncDevice()
},[])
const [user, setUser] = useState<User | null>(null);
const value = useMemo(() => ({ user }), [user]);
+47
View File
@@ -0,0 +1,47 @@
import { getUserPreferences } from "../services/localStorage";
import type { UserPreferences } from "../services/localStorage"
let syncStartedAt: null | number = null;
export async function useSyncDevice() {
initialize()
async function initialize() {
if ( syncStartedAt ) return;
syncStartedAt = Date.UTC(Date.now());
while (true) {
await sync()
await new Promise((resolve)=>{
setTimeout(() => {
resolve(true)
}, 1000);
})
}
}
async function sync() {
console.info("Sync started")
const userPreferences = await getUserPreferences()
console.log(userPreferences)
}
async function setSyncMode( mode: UserPreferences ) {
}
return {
}
}
View File
+42
View File
@@ -0,0 +1,42 @@
import { Folder } from "./safDirectory"
const folders = new Map<Folder['uri'],FolderContext>();
type FolderContext = {
syncStatus: 'local' | 'cloud' | 'local-cloud'
addedAt: number // UTC DATE
folder: Folder
}
export async function saveDirectory(folder: Folder): Promise<boolean> {
const ctx = {
syncStatus: 'local',
addedAt: Date.UTC(Date.now()),
folder: folder,
} satisfies FolderContext;
folders.set(folder.uri,ctx)
return new Promise(()=> true)
}
export async function getFolders(): Promise<FolderContext[]>{
return new Promise(()=> folders.values())
}
export type UserPreferences = {
syncMode: 'full' | 'manual' | 'none'
}
export async function getUserPreferences(): Promise<UserPreferences> {
return new Promise(()=>{
return {
syncMode: 'full'
} satisfies UserPreferences
});
}