discord_auth.svelte 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <script lang="typescript">
  2. import Icon from "svelte-awesome/components/Icon.svelte";
  3. import { faSpinner } from "@fortawesome/free-solid-svg-icons";
  4. import { onMount } from "svelte";
  5. import { Option } from "@shared/common/async_utils";
  6. import { goto } from "@sapper/app";
  7. const spinner = faSpinner as unknown as undefined;
  8. let error = "";
  9. onMount(
  10. async () => {
  11. const res = await fetch("/login/discord", {
  12. method: "post"
  13. });
  14. const result = await res.json() as Option<unknown, {error: string}>;
  15. if (!result.ok) {
  16. result.error = error;
  17. } else {
  18. await goto("/");
  19. }
  20. }
  21. );
  22. </script>
  23. <div class="flex items-center justify-center bg-gray-900 h-screen w-screen">
  24. <div class="bg-gray-800 rounded-sm text-center px-20 py-5 shadow-lg">
  25. <h1 class="text-white text-4xl font-light">Logging in</h1>
  26. {#if !error}
  27. <div class="text-white"><Icon data={spinner} spin scale={1.5} /></div>
  28. {:else}
  29. <div>Oh nooo!</div>
  30. {/if}
  31. </div>
  32. </div>