xtablo-source/xtablo-expo/providers/UserProvider.tsx
Arthur Belleville 75328fbe96
Format codebase
2025-10-10 08:50:56 +02:00

35 lines
890 B
TypeScript

import { createStore, StoreApi, useStore } from "zustand";
import React from "react";
import { ActivityIndicator } from "react-native";
import { User } from "@/types/user.types";
import { useAuthStore } from "@/stores/auth";
const UserStoreContext = React.createContext<StoreApi<User> | null>(null);
export const UserStoreProvider = ({ children }: { children: React.ReactNode }) => {
const { user, loading } = useAuthStore();
if (loading) {
return <ActivityIndicator />;
}
if (!user) {
return null;
}
const store = createStore<User>()(() => user);
return (
<UserStoreContext.Provider value={store as StoreApi<User>}>
{children}
</UserStoreContext.Provider>
);
};
export const useUser = () => {
const store = React.useContext(UserStoreContext);
if (!store) {
throw new Error("Missing UserStoreProvider");
}
return useStore(store);
};