import React, { createContext, useContext, ReactNode, useEffect } from "react"; import { saveUserToDatabase } from "./appwrite"; import { getCurrentUser } from "./appwrite"; import { useAppwrite } from "./useAppwrite"; import { Redirect } from "expo-router"; // import {replace} from "@remix-run/router"; import { config } from "./appwrite"; interface GlobalContextType { isLoggedIn: boolean; user: User | null; loading: boolean; refetch: (newParams?: Record) => Promise } interface User { $id: string; name: string; email: string; avatar: string; } const GlobalContext = createContext(undefined); interface GlobalProviderProps { children: ReactNode; } export const GlobalProvider = ({ children }: {children: ReactNode}) => { const { data: user, loading, refetch, } = useAppwrite({ fn: getCurrentUser, }); useEffect(() => { if (user && !loading) { // Save user data when they first log in saveUserToDatabase({ userId: user.$id, name: user.name, email: user.email, avatar: user.avatar, }); } }, [user, loading]); const isLoggedIn = !!user; console.log(JSON.stringify(user)); return ( {children} ); }; export const useGlobalContext = (): GlobalContextType => { const context = useContext(GlobalContext); if (!context) throw new Error("useGlobalContext must be used within a GlobalProvider"); return context; }; export default GlobalProvider;