aboutsummaryrefslogtreecommitdiff
path: root/src/routes/+layout.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/+layout.svelte')
-rw-r--r--src/routes/+layout.svelte81
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