diff --git a/mobile/app/index.tsx b/mobile/app/index.tsx index 581c659..d1e5e21 100644 --- a/mobile/app/index.tsx +++ b/mobile/app/index.tsx @@ -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 ( Dot. diff --git a/mobile/context/AuthContext.tsx b/mobile/context/AuthContext.tsx index ea8b51a..9431cf6 100644 --- a/mobile/context/AuthContext.tsx +++ b/mobile/context/AuthContext.tsx @@ -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(null); export function AuthProvider({ children }: { children: ReactNode }) { + + useEffect(()=>{ + const {} = useSyncDevice() + },[]) + const [user, setUser] = useState(null); const value = useMemo(() => ({ user }), [user]); diff --git a/mobile/features/syncDevice.ts b/mobile/features/syncDevice.ts new file mode 100644 index 0000000..2699430 --- /dev/null +++ b/mobile/features/syncDevice.ts @@ -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 { + + } + +} \ No newline at end of file diff --git a/mobile/services/distantStorage.ts b/mobile/services/distantStorage.ts new file mode 100644 index 0000000..e69de29 diff --git a/mobile/services/localStorage.ts b/mobile/services/localStorage.ts new file mode 100644 index 0000000..42a5eba --- /dev/null +++ b/mobile/services/localStorage.ts @@ -0,0 +1,42 @@ +import { Folder } from "./safDirectory" + +const folders = new Map(); + +type FolderContext = { + syncStatus: 'local' | 'cloud' | 'local-cloud' + addedAt: number // UTC DATE + folder: Folder +} + +export async function saveDirectory(folder: Folder): Promise { + + 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{ + + return new Promise(()=> folders.values()) + +} + +export type UserPreferences = { + syncMode: 'full' | 'manual' | 'none' +} + +export async function getUserPreferences(): Promise { + + return new Promise(()=>{ + return { + syncMode: 'full' + } satisfies UserPreferences + }); + +} \ No newline at end of file