feat: parse url search params on load in authlayout
This commit is contained in:
@ -9,21 +9,13 @@ import {
|
|||||||
useSearchParams,
|
useSearchParams,
|
||||||
} from "react-router";
|
} from "react-router";
|
||||||
import BackgroundLayout from "./BackgroundLayout";
|
import BackgroundLayout from "./BackgroundLayout";
|
||||||
import { useOAuthContext } from "@/context/oauth";
|
import { useOAuth } from "@/store/oauth";
|
||||||
|
|
||||||
const AuthLayout = () => {
|
const AuthLayout = () => {
|
||||||
const { connecting, db, connect } = useDbStore();
|
const { connecting, db, connect } = useDbStore();
|
||||||
|
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const {
|
const parseSearchParams = useOAuth((state) => state.parseSearchParams);
|
||||||
active,
|
|
||||||
setActive,
|
|
||||||
setClientID,
|
|
||||||
setRedirectURI,
|
|
||||||
setScope,
|
|
||||||
setState,
|
|
||||||
setNonce,
|
|
||||||
} = useOAuthContext();
|
|
||||||
|
|
||||||
const dbConnected = useMemo(() => !!db, [db]);
|
const dbConnected = useMemo(() => !!db, [db]);
|
||||||
|
|
||||||
@ -45,7 +37,8 @@ const AuthLayout = () => {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const isAuthPage = useMemo(() => {
|
const isAuthPage = useMemo(() => {
|
||||||
return location.pathname.startsWith("/auth");
|
const pathname = location.pathname.replace(/\/$/i, "");
|
||||||
|
return pathname !== "/auth" && pathname.startsWith("/auth");
|
||||||
}, [location.pathname]);
|
}, [location.pathname]);
|
||||||
|
|
||||||
const loading = useMemo(() => {
|
const loading = useMemo(() => {
|
||||||
@ -68,37 +61,28 @@ const AuthLayout = () => {
|
|||||||
connecting,
|
connecting,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// OAuth
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!active) {
|
console.log(
|
||||||
setActive(true);
|
"parsing url search params:",
|
||||||
setClientID(searchParams.get("client_id") ?? "");
|
Object.fromEntries(searchParams.entries()),
|
||||||
setRedirectURI(searchParams.get("redirect_uri") ?? "");
|
);
|
||||||
const scope = searchParams.get("scope") ?? "";
|
parseSearchParams(searchParams);
|
||||||
setScope(scope.split(" ").filter((s) => s.length > 0));
|
}, [parseSearchParams, searchParams]);
|
||||||
setState(searchParams.get("state") ?? "");
|
|
||||||
setNonce(searchParams.get("nonce") ?? "");
|
|
||||||
}
|
|
||||||
}, [
|
|
||||||
active,
|
|
||||||
searchParams,
|
|
||||||
setActive,
|
|
||||||
setClientID,
|
|
||||||
setNonce,
|
|
||||||
setRedirectURI,
|
|
||||||
setScope,
|
|
||||||
setState,
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
// Database
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
connect();
|
connect();
|
||||||
}, [connect]);
|
}, [connect]);
|
||||||
|
|
||||||
|
// Account Manager
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (dbConnected) {
|
if (dbConnected) {
|
||||||
loadAccounts();
|
loadAccounts();
|
||||||
}
|
}
|
||||||
}, [dbConnected, loadAccounts]);
|
}, [dbConnected, loadAccounts]);
|
||||||
|
|
||||||
|
// Fetch Profile
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (dbConnected && !loadingAccounts && activeAccount) {
|
if (dbConnected && !loadingAccounts && activeAccount) {
|
||||||
authenticate();
|
authenticate();
|
||||||
|
Reference in New Issue
Block a user