matiru

Blockchain-Based Supply Chain Transparency for Agricultural Produce

AuthContext.js (892B)


import { createContext, useEffect, useState } from "react";
import AsyncStorage from "@react-native-async-storage/async-storage";

export const AuthContext = createContext();

export function AuthProvider({ children }) {
  const [user, setUser] = useState(null);

  useEffect(() => {
    (async () => {
      const raw = await AsyncStorage.getItem("matiru_session");
      if (raw) {
        try {
          setUser(JSON.parse(raw));
        } catch (e) {
          console.log(e);
        }
      }
    })();
  }, []);

  const login = async (session) => {
    setUser(session);
    await AsyncStorage.setItem("matiru_session", JSON.stringify(session));
  };

  const logout = async () => {
    setUser(null);
    await AsyncStorage.removeItem("matiru_session");
  };

  return (
    <AuthContext.Provider value={{ user, login, logout }}>
      {children}
    </AuthContext.Provider>
  );
}