diff options
Diffstat (limited to 'src/routes/+layout.svelte')
| -rw-r--r-- | src/routes/+layout.svelte | 81 |
1 files changed, 44 insertions, 37 deletions
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index b1f9fc87..f58bff4d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,46 +1,47 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import type { SubsPleaseEpisode } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { onDestroy, onMount } from "svelte"; +import { browser } from "$app/environment"; import { env } from "$env/dynamic/public"; import { userIdentity as getUserIdentity } from "$lib/Data/AniList/identity"; -import { onDestroy, onMount } from "svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import type { SubsPleaseEpisode } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import userIdentity from "$stores/identity"; import settings from "$stores/settings"; -import { browser } from "$app/environment"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; import "../app.css"; -import { get, readable, type Readable } from "svelte/store"; -import { navigating } from "$app/stores"; +import { injectAnalytics } from "@vercel/analytics/sveltekit"; +import { injectSpeedInsights } from "@vercel/speed-insights/sveltekit"; +import Lenis from "lenis"; +import localforage from "localforage"; +import { get, type Readable, readable } from "svelte/store"; +import { addMessages, locale as i18nLocale, init, locales } from "svelte-i18n"; +import { dev } from "$app/environment"; import { onNavigate } from "$app/navigation"; -import NotificationsProvider from "$lib/Notification/NotificationsProvider.svelte"; +import { navigating } from "$app/stores"; +import Announcement from "$lib/Announcement.svelte"; +import { track } from "$lib/analytics"; +import { defaultActions } from "$lib/CommandPalette/actions"; +import { authActions } from "$lib/CommandPalette/authActions"; +import CommandPalette from "$lib/CommandPalette/CommandPalette.svelte"; +import { syncActions } from "$lib/CommandPalette/syncActions"; +import { toggleActions } from "$lib/CommandPalette/toggleActions"; +import subtitles from "$lib/Data/Static/subtitles.json"; +import { database as userDatabase } from "$lib/Database/IDB/user"; import Root from "$lib/Home/Root.svelte"; -import root from "$lib/Utility/root"; -import { addMessages, init, locale as i18nLocale, locales } from "svelte-i18n"; +import Dropdown from "$lib/Layout/Dropdown.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import english from "$lib/Locale/english"; import japanese from "$lib/Locale/japanese"; import type { LocaleDictionary } from "$lib/Locale/layout"; +import NotificationsProvider from "$lib/Notification/NotificationsProvider.svelte"; +import { toolsAsCommandPaletteActions } from "$lib/Tools/tools"; +import { requestNotifications } from "$lib/Utility/notifications"; +import root from "$lib/Utility/root"; import locale from "$stores/locale"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import subsPlease from "$stores/subsPlease"; -import Dropdown from "$lib/Layout/Dropdown.svelte"; -import { injectSpeedInsights } from "@vercel/speed-insights/sveltekit"; -import subtitles from "$lib/Data/Static/subtitles.json"; import settingsSyncPulled from "$stores/settingsSyncPulled"; import settingsSyncTimes from "$stores/settingsSyncTimes"; -import Announcement from "$lib/Announcement.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import { requestNotifications } from "$lib/Utility/notifications"; -import { database as userDatabase } from "$lib/Database/IDB/user"; -import CommandPalette from "$lib/CommandPalette/CommandPalette.svelte"; -import { defaultActions } from "$lib/CommandPalette/actions"; -import { authActions } from "$lib/CommandPalette/authActions"; -import { syncActions } from "$lib/CommandPalette/syncActions"; -import { toggleActions } from "$lib/CommandPalette/toggleActions"; -import { toolsAsCommandPaletteActions } from "$lib/Tools/tools"; -import localforage from "localforage"; -import { dev } from "$app/environment"; -import { injectAnalytics } from "@vercel/analytics/sveltekit"; -import Lenis from "lenis"; +import subsPlease from "$stores/subsPlease"; import "lenis/dist/lenis.css"; import lenisStore from "$stores/lenis"; import type { LayoutData } from "./$types"; @@ -52,9 +53,8 @@ export let data: LayoutData; let isHeaderVisible = true; let previousScrollPosition = 0; -let notificationInterval: ReturnType<typeof setInterval> | undefined = - undefined; -let lenis: Lenis | undefined = undefined; +let notificationInterval: ReturnType<typeof setInterval> | undefined; +let lenis: Lenis | undefined; let isMenuOpen = false; addMessages("en", english as unknown as LocaleDictionary); @@ -73,7 +73,7 @@ const navigationOrder = [ ]; const previousPage: Readable<string | null> = readable(null, (set) => { const unsubscribe = navigating.subscribe(($navigating) => { - if ($navigating && $navigating.from) + if ($navigating?.from) set($navigating.from.url.pathname as unknown as null); }); @@ -82,7 +82,7 @@ const previousPage: Readable<string | null> = readable(null, (set) => { $: way = data.url.includes("/user") ? 200 - : $previousPage && $previousPage.includes("/user") + : $previousPage?.includes("/user") ? -200 : navigationOrder.indexOf(data.url) > navigationOrder.indexOf($previousPage ?? "/") @@ -115,7 +115,10 @@ onNavigate((navigation) => { ? 1 : -1; - document.documentElement.style.setProperty("--vt-direction", String(direction)); + document.documentElement.style.setProperty( + "--vt-direction", + String(direction), + ); return new Promise((resolve) => { ( @@ -237,13 +240,13 @@ onMount(async () => { (response) => { if (response.ok) response.json().then((data) => { - if (data && data.configuration) { + if (data?.configuration) { console.log("Pulled remote configuration"); settings.set(data.configuration); settingsSyncPulled.set(true); settingsSyncTimes.set({ lastPull: new Date(), - lastPush: new Date(data.updated_at + "Z"), + lastPush: new Date(`${data.updated_at}Z`), }); } }); @@ -402,6 +405,8 @@ $: { url: '#', preventDefault: true, onClick: async () => { + track('Log Out', { source: 'header' }); + await localforage.removeItem('identity'); await localforage.removeItem('commit'); @@ -424,6 +429,8 @@ $: { class="header-item" href={`https://anilist.co/api/v2/oauth/authorize?client_id=${env.PUBLIC_ANILIST_CLIENT_ID}&redirect_uri=${env.PUBLIC_ANILIST_REDIRECT_URI}&response_type=code`} onclick={async () => { + track('Log In', { source: 'header' }); + await localforage.setItem( 'redirect', window.location.origin + window.location.pathname + window.location.search |