diff --git a/app/lib/navigation.tsx b/app/lib/navigation.tsx new file mode 100644 index 0000000..f1a17c7 --- /dev/null +++ b/app/lib/navigation.tsx @@ -0,0 +1,20 @@ +import { Auth } from "@supabase/ui"; +import Link from "next/link"; +import React from "react"; + +export function Navigation() { + const user = Auth.useUser(); + return ( +
+ SupaNews{" "} + {user.user === null ? ( + login + ) : ( + <> + account + logout + + )} +
+ ); +} diff --git a/app/lib/supabase.tsx b/app/lib/supabase.tsx index a846c31..9e4cae5 100644 --- a/app/lib/supabase.tsx +++ b/app/lib/supabase.tsx @@ -4,7 +4,7 @@ import { Auth } from "@supabase/ui"; const SupabaseClientContext = React.createContext(null); -export function SupabaseProvider(props: { children: React.ReactElement }) { +export function SupabaseProvider(props: { children: React.ReactNode }) { const [client] = React.useState(() => createClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, diff --git a/app/lib/urql.tsx b/app/lib/urql.tsx index e499c27..ad43b1c 100644 --- a/app/lib/urql.tsx +++ b/app/lib/urql.tsx @@ -2,7 +2,7 @@ import React from "react"; import { createClient, Provider } from "urql"; import { useSupabaseClient } from "./supabase"; -export function UrqlProvider(props: { children: React.ReactElement }) { +export function UrqlProvider(props: { children: React.ReactNode }) { const supabaseClient = useSupabaseClient(); function getHeaders(): Record { diff --git a/app/pages/_app.tsx b/app/pages/_app.tsx index df74a00..51ea3d6 100644 --- a/app/pages/_app.tsx +++ b/app/pages/_app.tsx @@ -2,11 +2,13 @@ import "../styles/globals.css"; import type { AppProps } from "next/app"; import { UrqlProvider } from "../lib/urql"; import { SupabaseProvider } from "../lib/supabase"; +import { Navigation } from "../lib/navigation"; function MyApp({ Component, pageProps }: AppProps) { return ( + diff --git a/app/pages/logout.tsx b/app/pages/logout.tsx new file mode 100644 index 0000000..9d12b9e --- /dev/null +++ b/app/pages/logout.tsx @@ -0,0 +1,17 @@ +import React from "react"; +import type { NextPage } from "next"; +import { Auth } from "@supabase/ui"; +import { useSupabaseClient } from "../lib/supabase"; +import { useRouter } from "next/router"; + +const LogOut: NextPage = () => { + const supabaseClient = useSupabaseClient(); + const router = useRouter(); + + React.useEffect(() => { + supabaseClient.auth.signOut().then(() => router.replace("/")); + }, []); + return null; +}; + +export default LogOut;