@salad-labs/loopz-typescript
Version:
The Official Loopz TypeScript SDK
44 lines • 1.7 kB
JavaScript
"use client";
import React, { useCallback, useEffect, useState } from "react";
import { LoopzAuthProviderContext } from "../context/loopzauthprovidercontext";
import { useLoopz } from "../hooks";
export const LoopzAuthProvider = ({ children }) => {
const { instance, initialized } = useLoopz();
const [authStatus, setAuthStatus] = useState({
isLoading: true,
isAuthenticated: false,
account: null,
auth: null,
});
const handleAuth = useCallback(() => {
if (!initialized)
return;
const isAuthenticated = instance.auth.isAuthenticated();
const authInfo = instance.auth.getAuthInfo();
const currentAccount = instance.auth.getCurrentAccount();
setAuthStatus({
isLoading: false,
isAuthenticated: isAuthenticated,
auth: isAuthenticated ? authInfo : null,
account: isAuthenticated ? currentAccount : null,
});
}, [initialized, instance]);
useEffect(() => {
if (!initialized)
return;
instance.auth.on("auth", handleAuth);
instance.auth.on("onAuthError", handleAuth);
instance.auth.on("logout", handleAuth);
return () => {
instance.auth.off("auth", handleAuth);
instance.auth.off("onAuthError", handleAuth);
instance.auth.off("logout", handleAuth);
};
}, [initialized, instance, handleAuth]);
useEffect(() => {
if (!initialized)
return;
}, [initialized, instance]);
return (React.createElement(LoopzAuthProviderContext.Provider, { value: authStatus }, children));
};
//# sourceMappingURL=loopzauthprovider.js.map