distant storage
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
});
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user