import { createContext, useState } from "react";
import { account } from "../lib/appwrite";
import { ID } from "react-native-appwrite";
export const UserContext = createContext();
export function UserProvider({ children }) {
const [user, setUser] = useState(null);
async function login(email, password) {
try {
console.log("Creating session...");
const session = await account.createEmailPasswordSession(email, password);
console.log("Session created:", session);
// Instead of calling account.get(), use the session's userId
// to set a minimal user object
setUser({
$id: session.userId,
email: session.providerUid,
// Add other fields as needed
});
console.log("Login successful");
} catch (error) {
console.log("login error:", error);
throw Error(error.message);
}
}
async function register(email, password) {
try {
console.log("Creating account...");
const newAccount = await account.create({
userId: ID.unique(),
email: email,
password: password,
});
console.log("Account created successfully:", newAccount);
await login(email, password);
} catch (error) {
console.log("register error:", error);
throw Error(error.message);
}
}
async function logout() {
console.log(user);
try {
console.log(user);
await account.deleteSession("current");
setUser(null);
console.log("Logout successful");
} catch (error) {
console.log("logout error:", error.message);
}
}
return (
<UserContext.Provider value={{ user, login, register, logout }}>
{children}
</UserContext.Provider>
);
}