Files
modeling-app/src/Auth.tsx

60 lines
1.5 KiB
TypeScript
Raw Normal View History

import useSWR from 'swr'
import fetcher from './lib/fetcher'
import withBaseUrl from './lib/withBaseURL'
import { App } from './App'
2023-07-11 20:34:09 +10:00
import { SetToken } from './components/TokenInput'
import { useStore } from './useStore'
import {
createBrowserRouter,
RouterProvider,
} from "react-router-dom"
import { ErrorPage } from './components/ErrorPage'
import { Settings } from './routes/Settings'
const router = createBrowserRouter([
{
path: "/",
element: <App />,
errorElement: <ErrorPage />,
},
{
path: "/settings",
element: <Settings />,
}
])
export const Auth = () => {
const { data: user } = useSWR(withBaseUrl('/user'), fetcher) as any
2023-07-11 20:34:09 +10:00
const {token} = useStore((s) => ({
token: s.token
}))
const isLocalHost =
typeof window !== 'undefined' && window.location.hostname === 'localhost'
2023-07-11 20:34:09 +10:00
if ((window as any).__TAURI__ && !token) {
return <SetToken />
}
if (!user && !isLocalHost) {
return (
<>
<div className=" bg-gray-800 p-1 px-4 rounded-r-lg pointer-events-auto flex items-center">
<a
className="font-bold mr-2 text-purple-400"
rel="noopener noreferrer"
target={'_self'}
href={`https://dev.kittycad.io/signin?callbackUrl=${encodeURIComponent(
typeof window !== 'undefined' && window.location.href
)}`}
>
Sign in
</a>
</div>
</>
)
}
return <RouterProvider router={router} />
}