diff --git a/App.tsx b/App.tsx index b9959db..fdf62d9 100644 --- a/App.tsx +++ b/App.tsx @@ -1,11 +1,11 @@ import { logger } from './src/utils/logger'; +import { syncAllData } from './src/services/sync'; import React, { useEffect, useState } from 'react'; -import { View, ActivityIndicator, Text, StyleSheet } from 'react-native'; import { initializeDatabase } from './src/db/index'; import AppNavigator from './src/navigation/AppNavigator'; import { NavigationContainer } from '@react-navigation/native'; import { SafeAreaProvider } from 'react-native-safe-area-context'; -import { syncAllData } from './src/services/sync'; +import { View, ActivityIndicator, Text, StyleSheet } from 'react-native'; import { FLUENT_USER_EMAIL } from '@env'; const log = logger.create('App'); diff --git a/src/db/queries.ts b/src/db/queries.ts index 6d982e5..47629ab 100644 --- a/src/db/queries.ts +++ b/src/db/queries.ts @@ -85,7 +85,7 @@ export async function getChapterAssignmentById( bibleId: row.bible_id, bookId: row.book_id, chapterNumber: row.chapter_number, - assignedUserId: row.assigned_user_id ?? undefined, + assignedUserId: row.assigned_user_id, status: row.status, submittedTime: row.submitted_time ?? undefined, updatedAt: row.updated_at, diff --git a/src/services/storage.ts b/src/services/storage.ts new file mode 100644 index 0000000..8387ae5 --- /dev/null +++ b/src/services/storage.ts @@ -0,0 +1,27 @@ +import { Storage } from '@op-engineering/op-sqlite'; +import { logger } from '../utils/logger'; + +const log = logger.create('KVStorage'); + +export const kvStorage = new Storage({ + location: 'kv', +}); + +export const KV_KEYS = { + USER_ID: 'userId', + USER_EMAIL: 'userEmail', +} as const; + +export function getUserIdSync(): string { + return kvStorage.getItemSync(KV_KEYS.USER_ID) ?? ''; +} + +export function getUserEmailSync(): string { + return kvStorage.getItemSync(KV_KEYS.USER_EMAIL) ?? ''; +} + +export function setUserSync(userId: string, userEmail: string) { + kvStorage.setItemSync(KV_KEYS.USER_ID, userId); + kvStorage.setItemSync(KV_KEYS.USER_EMAIL, userEmail); + log.info('User stored in KV', { userId, userEmail }); +} diff --git a/src/services/sync.ts b/src/services/sync.ts index ac22bb5..353d39e 100644 --- a/src/services/sync.ts +++ b/src/services/sync.ts @@ -12,6 +12,7 @@ import { } from '../db/repository'; import { logger } from '../utils/logger'; import { ApiBook, ApiVerse } from '../types/api/types'; +import { setUserSync } from '../services/storage'; const log = logger.create('SyncService'); @@ -27,8 +28,8 @@ export async function syncUser(email: string) { await insertUser(user); + setUserSync(String(user.id), user.email); log.info('User synced', { email: user.email }); - return user; } catch (error) { log.error('User sync failed', { error }); diff --git a/src/types/db/types.ts b/src/types/db/types.ts index a56c51b..d62472e 100644 --- a/src/types/db/types.ts +++ b/src/types/db/types.ts @@ -57,7 +57,7 @@ export interface ChapterAssignmentData { bibleId: number; bookId: number; chapterNumber: number; - assignedUserId?: number | null; + assignedUserId?: number; status: string; submittedTime?: string | null; updatedAt?: string; @@ -72,7 +72,7 @@ export interface ChapterAssignmentRow { bible_id: number; book_id: number; chapter_number: number; - assigned_user_id?: number | null; + assigned_user_id?: number; status: string; submitted_time?: string | null; updated_at?: string; @@ -86,7 +86,7 @@ export interface ChapterListItem { chapter_number: number; status: string; book_name: string; - assigned_user_id?: number | null; + assigned_user_id?: number; } export interface ChapterRow {