fix: add spinner to sign-in
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
import { Avatar, Button, DropdownMenu, Separator } from 'bits-ui';
|
import { Avatar, Button, DropdownMenu, Separator } from 'bits-ui';
|
||||||
import { authClient } from './auth-client';
|
import { authClient } from './auth-client';
|
||||||
import Image from './Image.svelte';
|
import Image from './Image.svelte';
|
||||||
import { CircleUser, FolderGit2, User } from '@lucide/svelte';
|
import { CircleUser, FolderGit2, Loader2, User } from '@lucide/svelte';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
type MockUser = {
|
type MockUser = {
|
||||||
image: string;
|
image: string;
|
||||||
@@ -10,8 +10,10 @@
|
|||||||
|
|
||||||
const session = authClient.useSession();
|
const session = authClient.useSession();
|
||||||
const user = $derived($session.data?.user);
|
const user = $derived($session.data?.user);
|
||||||
|
let loading = $state(false);
|
||||||
|
|
||||||
const signIn = async () => {
|
const signIn = async () => {
|
||||||
|
loading = true;
|
||||||
await authClient.signIn.social({
|
await authClient.signIn.social({
|
||||||
provider: 'github'
|
provider: 'github'
|
||||||
});
|
});
|
||||||
@@ -25,7 +27,11 @@
|
|||||||
</Button.Root>
|
</Button.Root>
|
||||||
{#if !user && !$session.isPending}
|
{#if !user && !$session.isPending}
|
||||||
<Button.Root class="rounded-md p-2 transition-colors hover:bg-gray-800" onclick={signIn}>
|
<Button.Root class="rounded-md p-2 transition-colors hover:bg-gray-800" onclick={signIn}>
|
||||||
Sign In
|
{#if loading}
|
||||||
|
<Loader2 class="animate-spin" />
|
||||||
|
{:else}
|
||||||
|
Sign In
|
||||||
|
{/if}
|
||||||
</Button.Root>
|
</Button.Root>
|
||||||
{:else if user}
|
{:else if user}
|
||||||
<DropdownMenu.Root>
|
<DropdownMenu.Root>
|
||||||
|
|||||||
Reference in New Issue
Block a user