import * as SecureStore from "expo-secure-store"; import type { Countdown, InitialData, Relationship, RelationshipData, User, } from "@/constants/Types"; export const saveUser = async (user: User) => { try { await SecureStore.setItemAsync('user', JSON.stringify(user)); } catch (error) { console.error('Error saving user to SecureStore:', error); } }; export const getUser = async () => { try { const user = await SecureStore.getItemAsync('user'); return user ? JSON.parse(user) as User : null; } catch (error) { console.error('Error getting user from SecureStore:', error); return null; } }; export const updateUser = async (updatedFields: Partial) => { try { const currentUser: User = await getUser() as User; if (!currentUser) return null; const updatedUser: User = { ...currentUser, ...updatedFields }; await saveUser(updatedUser); return updatedUser as User; } catch (error) { console.error('Error updating user data: ', error); return null; } }; export const savePartner = async (partner: User) => { try { await SecureStore.setItemAsync('partner', JSON.stringify(partner)); } catch (error) { console.error('Error saving partner to SecureStore:', error); } }; export const getPartner = async () => { try { const partner = await SecureStore.getItemAsync('partner'); return partner ? JSON.parse(partner) as User : null; } catch (error) { console.error('Error getting partner from SecureStore:', error); return null; } }; export const updatePartner = async (updatedFields: Partial) => { try { const currentPartner: User = await getPartner() as User; if (!currentPartner) return null; const updatedPartner: User = { ...currentPartner, ...updatedFields }; await saveUser(updatedPartner); return updatedPartner as User; } catch (error) { console.error('Error updating user data: ', error); return null; } }; export const saveRelationship = async (relationship: Relationship) => { try { await SecureStore.setItemAsync('relationship', JSON.stringify(relationship)); } catch (error) { console.error('Error saving relationship to SecureStore:', error); } }; export const getRelationship = async () => { try { const relationship = await SecureStore.getItemAsync('relationship'); return relationship ? JSON.parse(relationship) as Relationship : null; } catch (error) { console.error('Error getting relationship from SecureStore:', error); return null; } }; export const updateRelationship = async (updatedFields: Partial) => { try { const currentRelationship: Relationship = await getRelationship() as Relationship; if (!currentRelationship) return null; const updatedRelationship: Relationship = { ...currentRelationship, ...updatedFields }; await saveRelationship(updatedRelationship); return updatedRelationship as Relationship; } catch (error) { console.error('Error updating relationship data: ', error); return null; } }; export const saveCountdown = async (countdown: Countdown) => { try { await SecureStore.setItemAsync('countdown', JSON.stringify(countdown)); } catch (error) { console.error('Error saving countdown to SecureStore:', error); } }; export const getCountdown = async () => { try { const countdown = await SecureStore.getItemAsync('countdown'); return countdown ? JSON.parse(countdown) as Countdown : null; } catch (error) { console.error('Error getting countdown from SecureStore:', error); return null; } }; export const updateCountdown = async (updatedFields: Partial) => { try { const currentCountdown: Countdown = await getCountdown() as Countdown; if (!currentCountdown) return null; const updatedCountdown: Countdown = { ...currentCountdown, ...updatedFields }; await saveCountdown(updatedCountdown); return updatedCountdown as Countdown; } catch (error) { console.error('Error updating countdown data: ', error); return null; } }; export const saveRelationshipData = async (relationshipData: RelationshipData) => { try { await SecureStore.setItemAsync('partner', JSON.stringify(relationshipData.partner)); await SecureStore.setItemAsync('relationship', JSON.stringify(relationshipData.relationship)); } catch (error) { console.error('Error saving partner & relationship to SecureStore:', error); } }; export const saveInitialData = async (initialData: InitialData) => { try { await SecureStore.setItemAsync('user', JSON.stringify(initialData.user)); if (initialData.relationshipData) { await SecureStore.setItemAsync( 'relationship', JSON.stringify(initialData.relationshipData.relationship) ); await SecureStore.setItemAsync( 'partner', JSON.stringify(initialData.relationshipData.partner) ); if (initialData.countdown) await SecureStore.setItemAsync('countdown', JSON.stringify(initialData.countdown)); } } catch (error) { console.error('Error saving initial data to SecureStore:', error); } };