diff --git a/web/src/context/oauth/provider.tsx b/web/src/context/oauth/provider.tsx index d3e2b51..4cf355d 100644 --- a/web/src/context/oauth/provider.tsx +++ b/web/src/context/oauth/provider.tsx @@ -1,5 +1,6 @@ -import { useState, type FC, type ReactNode } from "react"; +import { useCallback, useState, type FC, type ReactNode } from "react"; import { OAuthContext } from "."; +import { codeApi } from "@/api/code"; interface IOAuthProvider { children: ReactNode; @@ -13,6 +14,24 @@ export const OAuthProvider: FC = ({ children }) => { const [state, setState] = useState(""); const [nonce, setNonce] = useState(""); + const selectSession = useCallback( + async (token: string) => { + if (active && redirectURI) { + const codeResponse = await codeApi(token, nonce); + + console.log("gen code:", { codeResponse }); + + const params = new URLSearchParams({ + code: codeResponse.code, + state, + }); + + window.location.replace(`${redirectURI}?${params.toString()}`); + } + }, + [active, nonce, redirectURI, state] + ); + return ( = ({ children }) => { setScope, setState, setNonce, + selectSession, }} > {children}