| import { | |
| oauthLoginUrl, | |
| oauthHandleRedirectIfPresent, | |
| whoAmI, | |
| } from '@huggingface/hub'; | |
| import { useEffect } from 'react'; | |
| import { isDev, testToken } from '../utils/utils'; | |
| const login = async () => { | |
| const url = await oauthLoginUrl(); | |
| window.location.href = url; | |
| }; | |
| export const AuthCard = ({ | |
| setHfToken, | |
| hfToken, | |
| }: { | |
| setHfToken: (token: string) => void; | |
| hfToken: string; | |
| }) => { | |
| useEffect(() => { | |
| const checkToken = async () => { | |
| if (isDev) { | |
| console.log({ testToken }); | |
| return setHfToken(testToken); | |
| } | |
| const res = await oauthHandleRedirectIfPresent(); | |
| console.log('oauthHandleRedirectIfPresent', res); | |
| if (res) { | |
| try { | |
| const myself = await whoAmI({ accessToken: res.accessToken }); | |
| console.log('myself', myself); | |
| } catch (e) { | |
| console.log(e); | |
| return setHfToken(''); | |
| } | |
| return setHfToken(res.accessToken); | |
| } else { | |
| return setHfToken(''); | |
| } | |
| }; | |
| checkToken(); | |
| }, []); | |
| const isOK = hfToken && hfToken.startsWith('hf_'); | |
| return ( | |
| <div className="card bg-base-100 w-full shadow-xl"> | |
| <div className="card-body"> | |
| <h2 className="card-title"> | |
| Step 0: Sign in to use Inference Providers | |
| </h2> | |
| <div> | |
| {isOK ? ( | |
| <button className="btn">β Nice, you are signed in</button> | |
| ) : ( | |
| <button className="btn btn-primary" onClick={login}> | |
| π€ Sign in with Hugging Face | |
| </button> | |
| )} | |
| </div> | |
| </div> | |
| </div> | |
| ); | |
| }; | |