All files / components/LoginLink LoginLink.svelte

0% Statements 0/21
0% Branches 0/1
0% Functions 0/1
0% Lines 0/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22                                           
<script lang="ts">
  import type { ComponentProps } from "svelte";
  import { page } from "$app/stores";
  import Link from "$lib/components/Link";
  import { afterNavigate, invalidate } from "$app/navigation";

  type $$Props = Omit<ComponentProps<Link>, "href">;

  $: existingState = $page.url.searchParams.get("state");
  $: params = existingState
    ? { state: encodeURIComponent(existingState) }
    : { state: encodeURIComponent($page.url.pathname + $page.url.search + $page.url.hash) };

  $: loginLinkLocation = `/login?${Object.entries(params)
    .map(([k, v]) => `${k}=${v}`)
    .join("&")}`;

  afterNavigate(({ from }) => from && invalidate("app:previewAuthenticationError"));
</script>

<Link href={loginLinkLocation} on:click {...$$props}><slot>Login</slot></Link>