diff options
Diffstat (limited to 'src/routes')
28 files changed, 183 insertions, 177 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 diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 218bc8d5..074619cb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,17 +1,17 @@ <script lang="ts"> import type { Component } from "svelte"; +import { onDestroy, onMount } from "svelte"; import { browser } from "$app/environment"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Landing from "$lib/Landing.svelte"; +import LandingHero from "$lib/LandingHero.svelte"; import Spacer from "$lib/Layout/Spacer.svelte"; -import { onDestroy, onMount } from "svelte"; -import userIdentity from "$stores/identity.js"; -import settings from "$stores/settings"; import ListTitle from "$lib/List/ListTitle.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { createHeightObserver } from "$lib/Utility/html.js"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import { createHeightObserver } from "$lib/Utility/html.js"; +import userIdentity from "$stores/identity.js"; import locale from "$stores/locale.js"; -import Landing from "$lib/Landing.svelte"; -import LandingHero from "$lib/LandingHero.svelte"; +import settings from "$stores/settings"; import stateBin, { hydrateStateBin } from "$stores/stateBin.js"; import type { PageData } from "./$types"; diff --git a/src/routes/anilist-badges-easter-event-2025/+page.svelte b/src/routes/anilist-badges-easter-event-2025/+page.svelte index b9c1295d..ecf74a47 100644 --- a/src/routes/anilist-badges-easter-event-2025/+page.svelte +++ b/src/routes/anilist-badges-easter-event-2025/+page.svelte @@ -22,7 +22,7 @@ onMount(() => { const urlParameters = new URLSearchParams(window.location.search); const pageParameter = urlParameters.get("page"); - if (pageParameter) page = parseInt(pageParameter) || 0; + if (pageParameter) page = parseInt(pageParameter, 10) || 0; }); const updatePage = (to: number | undefined = undefined) => { diff --git a/src/routes/api/animeschedule/oauth/callback/+server.ts b/src/routes/api/animeschedule/oauth/callback/+server.ts index 294abc05..677aff68 100644 --- a/src/routes/api/animeschedule/oauth/callback/+server.ts +++ b/src/routes/api/animeschedule/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/authentication/log-out/+server.ts b/src/routes/api/authentication/log-out/+server.ts index c04fa5c5..8623dfd1 100644 --- a/src/routes/api/authentication/log-out/+server.ts +++ b/src/routes/api/authentication/log-out/+server.ts @@ -1,5 +1,5 @@ -import root from "$lib/Utility/root.js"; import { redirect } from "@sveltejs/kit"; +import root from "$lib/Utility/root.js"; export const GET = ({ cookies }) => { cookies.delete("user", { path: "/" }); diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 46b98cbc..2673273c 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -1,20 +1,20 @@ +import { Schema } from "effect"; import { safeUserIdentity } from "$lib/Data/AniList/identity"; -import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; -import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { - removeAllUserBadges, - removeUserBadge, - updateUserBadge, - getUserBadges, addUserBadge, type Badge, type BadgeInput, + getUserBadges, + incrementClickCount, migrateCategory, + removeAllUserBadges, + removeUserBadge, setShadowHidden, setShadowHiddenBadge, - incrementClickCount, + updateUserBadge, } from "$lib/Database/SB/User/badges"; -import { Schema } from "effect"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; +import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { appOrigin, appOriginHeaders } from "$lib/Utility/appOrigin"; import privilegedUser from "$lib/Utility/privilegedUser"; @@ -118,7 +118,7 @@ export const PUT = async ({ cookies, url, request }) => { .map(async (badge) => { await updateUserBadge(identity.id, badge.id as number, { ...badge, - hidden: + hidden: !( allBadges .filter( (badge) => @@ -130,8 +130,7 @@ export const PUT = async ({ cookies, url, request }) => { badge.category === (url.searchParams.get("category") || ""), ).length / 2 - ? false - : true, + ), }); }), ); @@ -144,7 +143,7 @@ export const PUT = async ({ cookies, url, request }) => { await setShadowHiddenBadge( Number(url.searchParams.get("shadowHideBadge")), - url.searchParams.get("status") === "true" ? false : true, + url.searchParams.get("status") !== "true", ); return await badges(Number(url.searchParams.get("id"))); diff --git a/src/routes/api/myanimelist/oauth/callback/+server.ts b/src/routes/api/myanimelist/oauth/callback/+server.ts index 57a5fbe4..0fe774d9 100644 --- a/src/routes/api/myanimelist/oauth/callback/+server.ts +++ b/src/routes/api/myanimelist/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/notifications/subscribe/+server.ts b/src/routes/api/notifications/subscribe/+server.ts index 203470e0..51dbf340 100644 --- a/src/routes/api/notifications/subscribe/+server.ts +++ b/src/routes/api/notifications/subscribe/+server.ts @@ -1,8 +1,8 @@ +import { Schema } from "effect"; import { safeUserIdentity } from "$lib/Data/AniList/identity"; import { setUserSubscription } from "$lib/Database/SB/User/notifications"; import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; -import { Schema } from "effect"; const unauthorised = new Response("Unauthorised", { status: 401 }); diff --git a/src/routes/api/oauth/callback/+server.ts b/src/routes/api/oauth/callback/+server.ts index c5faa859..96990bf0 100644 --- a/src/routes/api/oauth/callback/+server.ts +++ b/src/routes/api/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/oauth/refresh/+server.ts b/src/routes/api/oauth/refresh/+server.ts index 13e7ab09..d9e33f51 100644 --- a/src/routes/api/oauth/refresh/+server.ts +++ b/src/routes/api/oauth/refresh/+server.ts @@ -1,6 +1,6 @@ +import { redirect } from "@sveltejs/kit"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; -import { redirect } from "@sveltejs/kit"; export const GET = async ({ url, cookies }) => { const formData = new FormData(); diff --git a/src/routes/api/preferences/pin/+server.ts b/src/routes/api/preferences/pin/+server.ts index b69a8142..118dd5ba 100644 --- a/src/routes/api/preferences/pin/+server.ts +++ b/src/routes/api/preferences/pin/+server.ts @@ -1,6 +1,6 @@ import { safeUserIdentity } from "$lib/Data/AniList/identity"; -import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { toggleHololiveStreamPinning } from "$lib/Database/SB/User/preferences"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { appOriginHeaders } from "$lib/Utility/appOrigin"; const unauthorised = new Response("Unauthorised", { status: 401 }); diff --git a/src/routes/completed/+page.svelte b/src/routes/completed/+page.svelte index 3720bf60..78cb1614 100644 --- a/src/routes/completed/+page.svelte +++ b/src/routes/completed/+page.svelte @@ -1,15 +1,15 @@ <script lang="ts"> import type { Component } from "svelte"; -import Spacer from "$lib/Layout/Spacer.svelte"; import { onDestroy, onMount } from "svelte"; -import userIdentity from "$stores/identity.js"; -import settings from "$stores/settings"; -import ListTitle from "$lib/List/ListTitle.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { createHeightObserver } from "$lib/Utility/html.js"; +import Landing from "$lib/Landing.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import ListTitle from "$lib/List/ListTitle.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import { createHeightObserver } from "$lib/Utility/html.js"; +import userIdentity from "$stores/identity.js"; import locale from "$stores/locale.js"; -import Landing from "$lib/Landing.svelte"; +import settings from "$stores/settings"; import stateBin, { hydrateStateBin } from "$stores/stateBin.js"; import type { PageData } from "./$types"; diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index 0474852b..4fa734bd 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -1,6 +1,6 @@ <script> -import Spacer from "$lib/Layout/Spacer.svelte"; import Event from "$lib/Events/Event.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; diff --git a/src/routes/events/group/[group]/+page.svelte b/src/routes/events/group/[group]/+page.svelte index 34db0fae..f7ca8769 100644 --- a/src/routes/events/group/[group]/+page.svelte +++ b/src/routes/events/group/[group]/+page.svelte @@ -1,12 +1,12 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import type { Group as GroupType } from "$lib/Database/SB/groups.js"; +import { onMount } from "svelte"; import type { Event as EventType } from "$lib/Database/SB/events.js"; +import type { Group as GroupType } from "$lib/Database/SB/groups.js"; +import Event from "$lib/Events/Event.svelte"; +import Group from "$lib/Events/Group.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; -import { onMount } from "svelte"; -import Group from "$lib/Events/Group.svelte"; -import Event from "$lib/Events/Event.svelte"; import locale from "$stores/locale"; import type { PageData } from "./$types"; diff --git a/src/routes/events/groups/+page.svelte b/src/routes/events/groups/+page.svelte index 198c637b..f0c0f44b 100644 --- a/src/routes/events/groups/+page.svelte +++ b/src/routes/events/groups/+page.svelte @@ -1,10 +1,10 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; +import { onMount } from "svelte"; import type { Group as GroupType } from "$lib/Database/SB/groups"; +import Group from "$lib/Events/Group.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; -import { onMount } from "svelte"; -import Group from "$lib/Events/Group.svelte"; import locale from "$stores/locale"; let groupsResponse: Promise<Response>; diff --git a/src/routes/feeds/activity-notifications/+server.ts b/src/routes/feeds/activity-notifications/+server.ts index 70b24a20..64ba3fdc 100644 --- a/src/routes/feeds/activity-notifications/+server.ts +++ b/src/routes/feeds/activity-notifications/+server.ts @@ -1,15 +1,12 @@ import { - notifications, type Notification, + notifications, } from "$lib/Data/AniList/notifications"; import { siteUrl } from "$lib/Utility/appOrigin"; import root from "$lib/Utility/root"; const htmlEncode = (input: string) => { - return input.replace( - /[\u00A0-\u9999<>&]/g, - (i) => "&#" + i.charCodeAt(0) + ";", - ); + return input.replace(/[\u00A0-\u9999<>&]/g, (i) => `&#${i.charCodeAt(0)};`); }; const render = ( @@ -82,7 +79,7 @@ export const GET = async ({ url }) => { if (notification === null) { token = ( await (await fetch(root(`/api/oauth/refresh?token=${refresh}`))).json() - )["access_token"]; + ).access_token; notification = await notifications(token as string); } diff --git a/src/routes/girls/+page.svelte b/src/routes/girls/+page.svelte index e45dad4d..b07a1bcc 100644 --- a/src/routes/girls/+page.svelte +++ b/src/routes/girls/+page.svelte @@ -1,7 +1,7 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import Senpy from "$lib/Data/senpy"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import root from "$lib/Utility/root"; diff --git a/src/routes/hololive/[[stream]]/+page.svelte b/src/routes/hololive/[[stream]]/+page.svelte index 250ce22a..38969b45 100644 --- a/src/routes/hololive/[[stream]]/+page.svelte +++ b/src/routes/hololive/[[stream]]/+page.svelte @@ -1,15 +1,15 @@ <script lang="ts"> import { onMount } from "svelte"; +import { parseScheduleHtml } from "$lib/Data/hololive"; +import { typeSchedule } from "$lib/Hololive/hololive"; +import Lives from "$lib/Hololive/Lives.svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Message from "$lib/Loading/Message.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { parseScheduleHtml } from "$lib/Data/hololive"; import proxy from "$lib/Utility/proxy"; -import locale from "$stores/locale"; import root from "$lib/Utility/root"; import identity from "$stores/identity"; -import Lives from "$lib/Hololive/Lives.svelte"; -import { typeSchedule } from "$lib/Hololive/hololive"; +import locale from "$stores/locale"; import type { PageData } from "./$types"; export let data: PageData; @@ -35,7 +35,7 @@ const getPinnedStreams = () => { fetch(root(`/api/preferences?id=${$identity.id}`)).then((response) => { if (response.ok) response.json().then((data) => { - if (data && data.pinned_hololive_streams) + if (data?.pinned_hololive_streams) streams = data.pinned_hololive_streams; setSchedule(); diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte index 9dcda20a..d6708a3e 100644 --- a/src/routes/schedule/+page.svelte +++ b/src/routes/schedule/+page.svelte @@ -1,19 +1,19 @@ <script lang="ts"> -import RateLimitedError from "$lib/Error/RateLimited.svelte"; import { onMount } from "svelte"; -import { parseOrDefault } from "$lib/Utility/parameters"; import { browser } from "$app/environment"; import type { Media } from "$lib/Data/AniList/media"; import { scheduleMediaListCollection } from "$lib/Data/AniList/schedule"; -import { season } from "$lib/Media/Anime/season"; +import RateLimitedError from "$lib/Error/RateLimited.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import { season } from "$lib/Media/Anime/season"; +import { parseOrDefault } from "$lib/Utility/parameters"; // import Crunchyroll from '$lib/Schedule/Crunchyroll.svelte'; import "$lib/Schedule/container.css"; -import Days from "$lib/Schedule/Days.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; import Message from "$lib/Loading/Message.svelte"; -import subsPlease from "$stores/subsPlease"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import Days from "$lib/Schedule/Days.svelte"; import locale from "$stores/locale"; +import subsPlease from "$stores/subsPlease"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte index f9a2ee87..79642944 100644 --- a/src/routes/settings/+page.svelte +++ b/src/routes/settings/+page.svelte @@ -1,18 +1,17 @@ <script lang="ts"> +import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Spacer from "$lib/Layout/Spacer.svelte"; - import Attributions from "$lib/Settings/Categories/Attributions.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import Display from "$lib/Settings/Categories/Display.svelte"; +import Cache from "$lib/Settings/Categories/Cache.svelte"; import Calculation from "$lib/Settings/Categories/Calculation.svelte"; import Debug from "$lib/Settings/Categories/Debug.svelte"; -import Cache from "$lib/Settings/Categories/Cache.svelte"; +import Display from "$lib/Settings/Categories/Display.svelte"; +import RssFeeds from "$lib/Settings/Categories/RSSFeeds.svelte"; +import SettingSync from "$lib/Settings/Categories/SettingSync.svelte"; import Category from "$lib/Settings/Category.svelte"; import tooltip from "$lib/Tooltip/tooltip"; import locale from "$stores/locale.js"; -import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; -import SettingSync from "$lib/Settings/Categories/SettingSync.svelte"; -import RssFeeds from "$lib/Settings/Categories/RSSFeeds.svelte"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/tools/+page.svelte b/src/routes/tools/+page.svelte index 3589fa9f..27604874 100644 --- a/src/routes/tools/+page.svelte +++ b/src/routes/tools/+page.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Picker from "$lib/Tools/Picker.svelte"; import { tools } from "$lib/Tools/tools.js"; import root from "$lib/Utility/root"; diff --git a/src/routes/tools/[tool]/+page.svelte b/src/routes/tools/[tool]/+page.svelte index b74952a5..1778752f 100644 --- a/src/routes/tools/[tool]/+page.svelte +++ b/src/routes/tools/[tool]/+page.svelte @@ -1,26 +1,26 @@ <script lang="ts"> -import Hayai from "./../../../lib/Tools/Hayai.svelte"; -import UmaMusumeBirthdays from "./../../../lib/Tools/UmaMusumeBirthdays.svelte"; -import ActivityHistory from "$lib/Tools/ActivityHistory/Tool.svelte"; -import Wrapped from "$lib/Tools/Wrapped/Tool.svelte"; -import EpisodeDiscussionCollector from "$lib/Tools/EpisodeDiscussionCollector.svelte"; -import CharacterBirthdays from "$lib/Tools/Birthdays.svelte"; -import SequelSpy from "$lib/Tools/SequelSpy/Tool.svelte"; +import { onMount } from "svelte"; +import { goto } from "$app/navigation"; import { closest } from "$lib/Error/path"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Popup from "$lib/Layout/Popup.svelte"; +import ActivityHistory from "$lib/Tools/ActivityHistory/Tool.svelte"; +import CharacterBirthdays from "$lib/Tools/Birthdays.svelte"; +import BirthdaysTemplate from "$lib/Tools/BirthdaysTemplate.svelte"; +import EpisodeDiscussionCollector from "$lib/Tools/EpisodeDiscussionCollector.svelte"; +import Likes from "$lib/Tools/Likes.svelte"; +import Picker from "$lib/Tools/Picker.svelte"; import RandomFollower from "$lib/Tools/RandomFollower.svelte"; +import SequelCatcher from "$lib/Tools/SequelCatcher/Tool.svelte"; +import SequelSpy from "$lib/Tools/SequelSpy/Tool.svelte"; +import Tracker from "$lib/Tools/Tracker/Tool.svelte"; // import DumpProfile from '$lib/Tools/DumpProfile.svelte'; import { tools } from "$lib/Tools/tools.js"; -import { onMount } from "svelte"; -import { goto } from "$app/navigation"; -import Picker from "$lib/Tools/Picker.svelte"; -import Likes from "$lib/Tools/Likes.svelte"; +import Wrapped from "$lib/Tools/Wrapped/Tool.svelte"; import root from "$lib/Utility/root.js"; -import Popup from "$lib/Layout/Popup.svelte"; -import SequelCatcher from "$lib/Tools/SequelCatcher/Tool.svelte"; -import Tracker from "$lib/Tools/Tracker/Tool.svelte"; -import BirthdaysTemplate from "$lib/Tools/BirthdaysTemplate.svelte"; import locale from "$stores/locale"; +import Hayai from "./../../../lib/Tools/Hayai.svelte"; +import UmaMusumeBirthdays from "./../../../lib/Tools/UmaMusumeBirthdays.svelte"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/updates/+page.svelte b/src/routes/updates/+page.svelte index 71a6d2e3..357a5906 100644 --- a/src/routes/updates/+page.svelte +++ b/src/routes/updates/+page.svelte @@ -1,16 +1,16 @@ <script lang="ts"> +import { onDestroy, onMount } from "svelte"; import { browser } from "$app/environment"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import { createHeightObserver } from "$lib/Utility/html"; import root from "$lib/Utility/root"; -import { onDestroy, onMount } from "svelte"; import locale from "$stores/locale"; let feed: | { items: { title: string; link: string; content: string }[] } | null - | undefined = undefined; + | undefined; let novelFeed: | { data: { @@ -22,7 +22,7 @@ let novelFeed: }[]; }; } - | undefined = undefined; + | undefined; let startTime: number; let mangaEndTime: number; let novelEndTime: number; diff --git a/src/routes/user/+page.svelte b/src/routes/user/+page.svelte index 3fdf1dc6..dc75802f 100644 --- a/src/routes/user/+page.svelte +++ b/src/routes/user/+page.svelte @@ -1,13 +1,13 @@ <script lang="ts"> +import localforage from "localforage"; +import { onMount } from "svelte"; import { browser } from "$app/environment"; import { goto } from "$app/navigation"; -import type { UserIdentity } from "$lib/Data/AniList/identity"; -import { onMount } from "svelte"; +import { page } from "$app/stores"; import { env } from "$env/dynamic/public"; +import type { UserIdentity } from "$lib/Data/AniList/identity"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; import root from "$lib/Utility/root"; -import { page } from "$app/stores"; -import localforage from "localforage"; onMount(async () => { if (browser) { diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte index bfcdd87b..771683ad 100644 --- a/src/routes/user/[user]/+page.svelte +++ b/src/routes/user/[user]/+page.svelte @@ -1,27 +1,27 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import settings from "$stores/settings"; -import ParallaxImage from "../../../lib/Image/ParallaxImage.svelte"; -import { typeSchedule, type ParseResult } from "$lib/Hololive/hololive"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import { estimatedDayReading } from "$lib/Media/Manga/time"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import root from "$lib/Utility/root"; -import locale from "$stores/locale"; +import SvelteMarkdown from "@humanspeak/svelte-markdown"; import { onMount } from "svelte"; +import { graphql } from "$houdini"; +import { parseScheduleHtml } from "$lib/Data/hololive"; import authorisedUsers from "$lib/Data/Static/authorised.json"; -import tooltip from "$lib/Tooltip/tooltip"; import AnimeRateLimited from "$lib/Error/AnimeRateLimited.svelte"; -import identity from "$stores/identity"; +import { type ParseResult, typeSchedule } from "$lib/Hololive/hololive"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import MarkdownLink from "$lib/MarkdownLink.svelte"; +import { estimatedDayReading } from "$lib/Media/Manga/time"; import SettingHint from "$lib/Settings/SettingHint.svelte"; +import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; +import tooltip from "$lib/Tooltip/tooltip"; import proxy from "$lib/Utility/proxy"; -import { parseScheduleHtml } from "$lib/Data/hololive"; +import root from "$lib/Utility/root"; +import identity from "$stores/identity"; +import locale from "$stores/locale"; +import settings from "$stores/settings"; import type { Preferences } from "../../../graphql/$types"; -import SvelteMarkdown from "@humanspeak/svelte-markdown"; -import MarkdownLink from "$lib/MarkdownLink.svelte"; -import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; -import { graphql } from "$houdini"; +import ParallaxImage from "../../../lib/Image/ParallaxImage.svelte"; import type { PageData } from "./$types"; export let data: PageData; @@ -118,7 +118,7 @@ const setBadgeWallCSSQuery = graphql(` $: userData = data.userData; let error = false; -let schedule: ParseResult | undefined = undefined; +let schedule: ParseResult | undefined; let draggedCategory: string | null = null; let draggedOverCategory: string | null = null; diff --git a/src/routes/user/[user]/+page.ts b/src/routes/user/[user]/+page.ts index 6ec3c845..2af22d1d 100644 --- a/src/routes/user/[user]/+page.ts +++ b/src/routes/user/[user]/+page.ts @@ -1,6 +1,6 @@ +import type { LoadEvent } from "@sveltejs/kit"; import { load_Profile } from "$houdini"; import { user } from "$lib/Data/AniList/user"; -import type { LoadEvent } from "@sveltejs/kit"; export const load = async (event: LoadEvent) => { const username = event.params.user as string; diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index de55b456..dc43fc08 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -1,35 +1,35 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import AWC from "./../../../../lib/User/BadgeWall/AWC.svelte"; -import { user, type User } from "$lib/Data/AniList/user"; -import type { Badge } from "../../../../graphql/$types"; import { onDestroy, onMount } from "svelte"; +import { get } from "svelte/store"; +import { browser } from "$app/environment"; +import { page } from "$app/stores"; +import { activityText } from "$lib/Data/AniList/activity"; +import { type User, user } from "$lib/Data/AniList/user"; +import authorisedJson from "$lib/Data/Static/authorised.json"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Dropdown from "$lib/Layout/Dropdown.svelte"; +import Popup from "$lib/Layout/Popup.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import SettingHint from "$lib/Settings/SettingHint.svelte"; +import BadgePreview from "$lib/User/BadgeWall/BadgePreview.svelte"; +import proxy from "$lib/Utility/proxy"; import { databaseTimeToDate, dateToInputTime, inputTimeToDatabaseTime, } from "$lib/Utility/time"; -import proxy from "$lib/Utility/proxy"; -import locale from "$stores/locale"; -import { get } from "svelte/store"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import Dropdown from "$lib/Layout/Dropdown.svelte"; -import { activityText } from "$lib/Data/AniList/activity"; -import SettingHint from "$lib/Settings/SettingHint.svelte"; -import Popup from "$lib/Layout/Popup.svelte"; -import { page } from "$app/stores"; -import { browser } from "$app/environment"; -import BadgePreview from "$lib/User/BadgeWall/BadgePreview.svelte"; -import authorisedJson from "$lib/Data/Static/authorised.json"; import identity from "$stores/identity"; +import locale from "$stores/locale"; +import type { Badge } from "../../../../graphql/$types"; +import AWC from "./../../../../lib/User/BadgeWall/AWC.svelte"; import "$lib/User/BadgeWall/badges.css"; +import localforage from "localforage"; +import { graphql } from "$houdini"; import Badges from "$lib/User/BadgeWall/Badges.svelte"; import type { IndexedBadge } from "$lib/User/BadgeWall/badge"; -import { graphql } from "$houdini"; import type { Preferences } from "../../../../graphql/$types"; -import localforage from "localforage"; import type { PageData } from "./$types"; export let data: PageData; @@ -190,10 +190,10 @@ let error: null | string; let awcPromise: Promise<Response>; let confirmDelete = 0; let confirmPrune = 0; -let selectedBadge: IndexedBadge | undefined = undefined; +let selectedBadge: IndexedBadge | undefined; let loadError: string | null = null; const isId = /^\d+$/.test(data.username); -let importImages: ImportImage[] | undefined = undefined; +let importImages: ImportImage[] | undefined; let importLinks = false; let importCategory = ""; let importReplies = false; @@ -228,7 +228,7 @@ onMount(async () => { badger = isId ? { - id: parseInt(data.username), + id: parseInt(data.username, 10), name: "User", } : await user(data.username); @@ -379,10 +379,9 @@ const groupBadges = (badges: IndexedBadge[]) => { return Object.entries(groupedBadges) .sort((a, b) => a[1].length - b[1].length) .sort((a, b) => { - const pinnedCategories = - preferences && preferences.pinned_badge_wall_categories - ? preferences.pinned_badge_wall_categories - : ([] as string[]); + const pinnedCategories = preferences?.pinned_badge_wall_categories + ? preferences.pinned_badge_wall_categories + : ([] as string[]); const aIndex = pinnedCategories.indexOf(a[0]); const bIndex = pinnedCategories.indexOf(b[0]); @@ -410,7 +409,7 @@ const parsePost = async () => { if (type !== "activity") return null; - let text = await activityText(parseInt(id), importReplies); + let text = await activityText(parseInt(id, 10), importReplies); const images: ImportImage[] = []; @@ -861,7 +860,7 @@ const shadowHideBadge = () => { /> </span> </Dropdown> - <button class="button-lined" onclick={submitBadge} + <button class="button-lined" onclick={submitBadge} data-umami-event="Submit Badge" >{selectedBadge ? $locale().user.badges.editMode.update : $locale().user.badges.editMode.add}</button @@ -987,7 +986,12 @@ const shadowHideBadge = () => { > {$locale().user.badges.importMode.cancel} </button> - <button onclick={() => parsePost()} class="button-lined" style="float: right;"> + <button + onclick={() => parsePost()} + class="button-lined" + style="float: right;" + data-umami-event="Parse Badge Post" + > {$locale().user.badges.importMode.fetch} </button> diff --git a/src/routes/user/[user]/badges/+page.ts b/src/routes/user/[user]/badges/+page.ts index a14c0a6a..573b7d90 100644 --- a/src/routes/user/[user]/badges/+page.ts +++ b/src/routes/user/[user]/badges/+page.ts @@ -1,6 +1,6 @@ +import type { LoadEvent } from "@sveltejs/kit"; import { load_BadgeWallUser } from "$houdini"; import { user } from "$lib/Data/AniList/user"; -import type { LoadEvent } from "@sveltejs/kit"; export const load = async (event: LoadEvent) => { const username = event.params.user as string; |