resolve svelte-check warnings (#819)
Co-authored-by: Jonas Plum <cugu@users.noreply.github.com>
This commit is contained in:
@@ -210,8 +210,10 @@
|
|||||||
: title,
|
: title,
|
||||||
);
|
);
|
||||||
|
|
||||||
let robotsParams = $state("");
|
let robotsParams = $derived.by(() => {
|
||||||
if (additionalRobotsProps) {
|
if (!additionalRobotsProps) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
const {
|
const {
|
||||||
nosnippet,
|
nosnippet,
|
||||||
maxSnippet,
|
maxSnippet,
|
||||||
@@ -223,12 +225,12 @@
|
|||||||
unavailableAfter,
|
unavailableAfter,
|
||||||
} = additionalRobotsProps;
|
} = additionalRobotsProps;
|
||||||
|
|
||||||
robotsParams = `${nosnippet ? ",nosnippet" : ""}${maxSnippet ? `,max-snippet:${maxSnippet}` : ""}${
|
return `${nosnippet ? ",nosnippet" : ""}${maxSnippet ? `,max-snippet:${maxSnippet}` : ""}${
|
||||||
maxImagePreview ? `,max-image-preview:${maxImagePreview}` : ""
|
maxImagePreview ? `,max-image-preview:${maxImagePreview}` : ""
|
||||||
}${noarchive ? ",noarchive" : ""}${unavailableAfter ? `,unavailable_after:${unavailableAfter}` : ""}${
|
}${noarchive ? ",noarchive" : ""}${unavailableAfter ? `,unavailable_after:${unavailableAfter}` : ""}${
|
||||||
noimageindex ? ",noimageindex" : ""
|
noimageindex ? ",noimageindex" : ""
|
||||||
}${maxVideoPreview ? `,max-video-preview:${maxVideoPreview}` : ""}${notranslate ? ",notranslate" : ""}`;
|
}${maxVideoPreview ? `,max-video-preview:${maxVideoPreview}` : ""}${notranslate ? ",notranslate" : ""}`;
|
||||||
}
|
});
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
if (!robots && additionalRobotsProps) {
|
if (!robots && additionalRobotsProps) {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
import type { Comment } from "$lib/models/comment";
|
import type { Comment } from "$lib/models/comment";
|
||||||
import { formatTimeSince } from "$lib/util/format_util";
|
import { formatTimeSince } from "$lib/util/format_util";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { fade } from "svelte/transition";
|
import { fade } from "svelte/transition";
|
||||||
import TextField from "../base/text_field.svelte";
|
|
||||||
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util";
|
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util";
|
||||||
import Editor from "../base/editor.svelte";
|
import Editor from "../base/editor.svelte";
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
let editing: boolean = $state(false);
|
let editing: boolean = $state(false);
|
||||||
|
|
||||||
let editedComment = $state(comment.text);
|
let editedComment = $state(untrack(() => comment.text));
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
editedComment = comment.text;
|
editedComment = comment.text;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import RadioGroup, { type RadioItem } from "../base/radio_group.svelte";
|
import RadioGroup, { type RadioItem } from "../base/radio_group.svelte";
|
||||||
import { defaultMapState } from "$lib/vendor/maplibre-layer-manager/layers";
|
import { defaultMapState } from "$lib/vendor/maplibre-layer-manager/layers";
|
||||||
|
import { untrack } from "svelte";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
settings: StyleSwitcherControlOptions;
|
settings: StyleSwitcherControlOptions;
|
||||||
@@ -10,7 +11,7 @@
|
|||||||
|
|
||||||
let { settings }: Props = $props();
|
let { settings }: Props = $props();
|
||||||
|
|
||||||
let mapState = $state(settings.state);
|
let mapState = $state(untrack(() => settings.state));
|
||||||
|
|
||||||
let container: HTMLDivElement;
|
let container: HTMLDivElement;
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
type Notification,
|
type Notification,
|
||||||
} from "$lib/models/notification";
|
} from "$lib/models/notification";
|
||||||
import { formatTimeSince } from "$lib/util/format_util";
|
import { formatTimeSince } from "$lib/util/format_util";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -16,11 +17,15 @@
|
|||||||
|
|
||||||
let { notification, onclick }: Props = $props();
|
let { notification, onclick }: Props = $props();
|
||||||
|
|
||||||
const avatarSrc = notification.expand?.author.icon
|
const avatarSrc = untrack(() =>
|
||||||
? notification.expand.author.icon
|
notification.expand?.author.icon
|
||||||
: `https://api.dicebear.com/7.x/initials/svg?seed=${notification.expand?.author.preferred_username ?? ""}&backgroundType=gradientLinear`;
|
? notification.expand.author.icon
|
||||||
|
: `https://api.dicebear.com/7.x/initials/svg?seed=${notification.expand?.author.preferred_username ?? ""}&backgroundType=gradientLinear`,
|
||||||
|
);
|
||||||
|
|
||||||
const timeSince = formatTimeSince(new Date(notification.created ?? ""));
|
const timeSince = untrack(() =>
|
||||||
|
formatTimeSince(new Date(notification.created ?? "")),
|
||||||
|
);
|
||||||
|
|
||||||
function getTitle(n: Notification) {
|
function getTitle(n: Notification) {
|
||||||
switch (n.type) {
|
switch (n.type) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import Modal from "$lib/components/base/modal.svelte";
|
import Modal from "$lib/components/base/modal.svelte";
|
||||||
import { validator } from "@felte/validator-zod";
|
import { validator } from "@felte/validator-zod";
|
||||||
import { createForm } from "felte";
|
import { createForm } from "felte";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import TextField from "../base/text_field.svelte";
|
import TextField from "../base/text_field.svelte";
|
||||||
@@ -24,7 +25,7 @@
|
|||||||
const { form, errors, setFields, setErrors } = createForm<{
|
const { form, errors, setFields, setErrors } = createForm<{
|
||||||
email: string;
|
email: string;
|
||||||
}>({
|
}>({
|
||||||
initialValues: { email: email },
|
initialValues: { email: untrack(() => email) },
|
||||||
extend: validator({
|
extend: validator({
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
email: z
|
email: z
|
||||||
|
|||||||
@@ -36,19 +36,21 @@
|
|||||||
modal.openModal();
|
modal.openModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getInitialFormValues = () => ({
|
||||||
|
email: integration?.komoot?.email ?? "",
|
||||||
|
password: integration?.komoot?.password ?? "",
|
||||||
|
completed: integration?.komoot?.completed ?? true,
|
||||||
|
planned: integration?.komoot?.planned ?? true,
|
||||||
|
active: integration?.komoot?.active ?? false,
|
||||||
|
privacy: integration?.komoot?.privacy ?? "original",
|
||||||
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
form,
|
form,
|
||||||
errors,
|
errors,
|
||||||
data: d,
|
data: d,
|
||||||
} = createForm({
|
} = createForm({
|
||||||
initialValues: {
|
initialValues: getInitialFormValues(),
|
||||||
email: integration?.komoot?.email ?? "",
|
|
||||||
password: integration?.komoot?.password ?? "",
|
|
||||||
completed: integration?.komoot?.completed ?? true,
|
|
||||||
planned: integration?.komoot?.planned ?? true,
|
|
||||||
active: integration?.komoot?.active ?? false,
|
|
||||||
privacy: integration?.komoot?.privacy ?? "original",
|
|
||||||
},
|
|
||||||
extend: validator({
|
extend: validator({
|
||||||
schema: KomootSchema,
|
schema: KomootSchema,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -36,20 +36,22 @@
|
|||||||
modal.openModal();
|
modal.openModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getInitialFormValues = () => ({
|
||||||
|
clientId: integration?.strava?.clientId ?? "",
|
||||||
|
clientSecret: integration?.strava?.clientSecret ?? "",
|
||||||
|
routes: integration?.strava?.routes ?? true,
|
||||||
|
activities: integration?.strava?.activities ?? true,
|
||||||
|
active: integration?.strava?.active ?? false,
|
||||||
|
after: integration?.strava?.after,
|
||||||
|
privacy: integration?.komoot?.privacy ?? "original",
|
||||||
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
form,
|
form,
|
||||||
errors,
|
errors,
|
||||||
data: formData,
|
data: formData,
|
||||||
} = createForm({
|
} = createForm({
|
||||||
initialValues: {
|
initialValues: getInitialFormValues(),
|
||||||
clientId: integration?.strava?.clientId ?? "",
|
|
||||||
clientSecret: integration?.strava?.clientSecret ?? "",
|
|
||||||
routes: integration?.strava?.routes ?? true,
|
|
||||||
activities: integration?.strava?.activities ?? true,
|
|
||||||
active: integration?.strava?.active ?? false,
|
|
||||||
after: integration?.strava?.after,
|
|
||||||
privacy: integration?.komoot?.privacy ?? "original",
|
|
||||||
},
|
|
||||||
extend: validator({
|
extend: validator({
|
||||||
schema: StravaSchema,
|
schema: StravaSchema,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { Actor } from "$lib/models/activitypub/actor";
|
|
||||||
import type { List } from "$lib/models/list";
|
import type { List } from "$lib/models/list";
|
||||||
import type { Trail } from "$lib/models/trail";
|
import type { Trail } from "$lib/models/trail";
|
||||||
import type { UserAnonymous } from "$lib/models/user";
|
import { currentUser } from "$lib/stores/user_store";
|
||||||
import { currentUser, users_show } from "$lib/stores/user_store";
|
|
||||||
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util";
|
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util";
|
||||||
import { getFileURL } from "$lib/util/file_util";
|
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { fly } from "svelte/transition";
|
import { fly } from "svelte/transition";
|
||||||
|
|
||||||
@@ -17,14 +14,15 @@
|
|||||||
|
|
||||||
let { subject, large = false, type }: Props = $props();
|
let { subject, large = false, type }: Props = $props();
|
||||||
|
|
||||||
const shareData =
|
let shareData = $derived.by(() =>
|
||||||
type == "trail"
|
type == "trail"
|
||||||
? (subject as Trail).expand?.trail_share_via_trail
|
? (subject as Trail).expand?.trail_share_via_trail
|
||||||
: (subject as List).expand?.list_share_via_list;
|
: (subject as List).expand?.list_share_via_list,
|
||||||
|
);
|
||||||
|
|
||||||
let showInfo: boolean = $state(false);
|
let showInfo: boolean = $state(false);
|
||||||
let loading: boolean = $state(false);
|
let loading: boolean = $state(false);
|
||||||
let subjectIsOwned: boolean = subject.author == $currentUser?.actor;
|
let subjectIsOwned: boolean = $derived(subject.author == $currentUser?.actor);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="relative trail-share-info">
|
<div class="relative trail-share-info">
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
} from "$lib/stores/trail_like_store";
|
} from "$lib/stores/trail_like_store";
|
||||||
import { currentUser } from "$lib/stores/user_store";
|
import { currentUser } from "$lib/stores/user_store";
|
||||||
import confetti from "canvas-confetti";
|
import confetti from "canvas-confetti";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -18,7 +19,7 @@
|
|||||||
|
|
||||||
let { trail }: Props = $props();
|
let { trail }: Props = $props();
|
||||||
|
|
||||||
let likeCount = $state(trail.like_count);
|
let likeCount = $state(untrack(() => trail.like_count));
|
||||||
|
|
||||||
let loading = $state(false);
|
let loading = $state(false);
|
||||||
|
|
||||||
@@ -66,8 +67,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
let trailLike = $state(
|
let trailLike = $state(
|
||||||
trail.expand?.trail_like_via_trail?.find(
|
untrack(() =>
|
||||||
(l) => l.actor === $currentUser?.actor,
|
trail.expand?.trail_like_via_trail?.find(
|
||||||
|
(l) => l.actor === $currentUser?.actor,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -141,6 +141,7 @@
|
|||||||
? 'outline-dashed outline-input-border'
|
? 'outline-dashed outline-input-border'
|
||||||
: ''}"
|
: ''}"
|
||||||
role="dialog"
|
role="dialog"
|
||||||
|
tabindex="0"
|
||||||
ondragover={handlePhotoDragOver}
|
ondragover={handlePhotoDragOver}
|
||||||
ondragleave={handlePhotoDragLeave}
|
ondragleave={handlePhotoDragLeave}
|
||||||
ondrop={handlePhotoDrop}
|
ondrop={handlePhotoDrop}
|
||||||
|
|||||||
@@ -27,12 +27,11 @@
|
|||||||
import { show_toast } from "$lib/stores/toast_store.svelte";
|
import { show_toast } from "$lib/stores/toast_store.svelte";
|
||||||
import * as M from "maplibre-gl";
|
import * as M from "maplibre-gl";
|
||||||
import "photoswipe/style.css";
|
import "photoswipe/style.css";
|
||||||
import { onMount } from "svelte";
|
import { onMount, untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import Button from "../base/button.svelte";
|
import Button from "../base/button.svelte";
|
||||||
import Chip from "../base/chip.svelte";
|
import Chip from "../base/chip.svelte";
|
||||||
import SkeletonNotificationCard from "../base/skeleton_notification_card.svelte";
|
import SkeletonNotificationCard from "../base/skeleton_notification_card.svelte";
|
||||||
import Textarea from "../base/textarea.svelte";
|
|
||||||
import CommentCard from "../comment/comment_card.svelte";
|
import CommentCard from "../comment/comment_card.svelte";
|
||||||
import EmptyStateComment from "../empty_states/empty_state_comment.svelte";
|
import EmptyStateComment from "../empty_states/empty_state_comment.svelte";
|
||||||
import EmptyStateDescription from "../empty_states/empty_state_description.svelte";
|
import EmptyStateDescription from "../empty_states/empty_state_description.svelte";
|
||||||
@@ -77,7 +76,7 @@
|
|||||||
let summitLogModal: SummitLogModal;
|
let summitLogModal: SummitLogModal;
|
||||||
let confirmModal: ConfirmModal;
|
let confirmModal: ConfirmModal;
|
||||||
|
|
||||||
let trail = $state(initTrail);
|
let trail = $state(untrack(() => initTrail));
|
||||||
|
|
||||||
const tabs = [
|
const tabs = [
|
||||||
$_("summit-book"),
|
$_("summit-book"),
|
||||||
@@ -93,14 +92,14 @@
|
|||||||
let newComment: Comment = $state({
|
let newComment: Comment = $state({
|
||||||
text: "",
|
text: "",
|
||||||
author: "",
|
author: "",
|
||||||
trail: handle + "/" + (trail.id ?? ""),
|
trail: untrack(() => handle) + "/" + (trail.id ?? ""),
|
||||||
});
|
});
|
||||||
|
|
||||||
let commentsLoading: boolean = $state(activeTab == 2);
|
let commentsLoading: boolean = $state(untrack(() => activeTab == 2));
|
||||||
let commentCreateLoading: boolean = $state(false);
|
let commentCreateLoading: boolean = $state(false);
|
||||||
let commentDeleteLoading: boolean = false;
|
let commentDeleteLoading: boolean = false;
|
||||||
|
|
||||||
let summitLogsLoading: boolean = $state(activeTab == 0);
|
let summitLogsLoading: boolean = $state(untrack(() => activeTab == 0));
|
||||||
let summitLogCreateLoading: boolean = $state(false);
|
let summitLogCreateLoading: boolean = $state(false);
|
||||||
|
|
||||||
let fullDescription: boolean = $state(false);
|
let fullDescription: boolean = $state(false);
|
||||||
|
|||||||
@@ -25,14 +25,14 @@
|
|||||||
import { getIconForLocation } from "$lib/util/icon_util.js";
|
import { getIconForLocation } from "$lib/util/icon_util.js";
|
||||||
import { Canvas } from "@threlte/core";
|
import { Canvas } from "@threlte/core";
|
||||||
import { marked } from "marked";
|
import { marked } from "marked";
|
||||||
import { onMount } from "svelte";
|
import { onMount, untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let searchDropdownItems: SearchItem[] = $state([]);
|
let searchDropdownItems: SearchItem[] = $state([]);
|
||||||
|
|
||||||
let feed = $state(data.feed);
|
let feed = $state(untrack(() => data.feed));
|
||||||
|
|
||||||
let pagination = $derived({
|
let pagination = $derived({
|
||||||
page: feed.page,
|
page: feed.page,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util.js";
|
import { handleFromRecordWithIRI } from "$lib/util/activitypub_util.js";
|
||||||
import * as M from "maplibre-gl";
|
import * as M from "maplibre-gl";
|
||||||
|
|
||||||
import { onMount } from "svelte";
|
import { onMount, untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { slide } from "svelte/transition";
|
import { slide } from "svelte/transition";
|
||||||
|
|
||||||
@@ -41,10 +41,10 @@
|
|||||||
|
|
||||||
const pagination: { page: number; totalPages: number } = $state({
|
const pagination: { page: number; totalPages: number } = $state({
|
||||||
page: 1,
|
page: 1,
|
||||||
totalPages: data.lists.totalPages,
|
totalPages: untrack(() => data.lists.totalPages),
|
||||||
});
|
});
|
||||||
|
|
||||||
let lists: List[] = $state(data.lists.items);
|
let lists: List[] = $state(untrack(() => data.lists.items));
|
||||||
|
|
||||||
let confirmModal: ConfirmModal | undefined = $state();
|
let confirmModal: ConfirmModal | undefined = $state();
|
||||||
let listShareModal: ListShareModal | undefined = $state();
|
let listShareModal: ListShareModal | undefined = $state();
|
||||||
@@ -56,7 +56,9 @@
|
|||||||
let markers: M.Marker[] = $state([]);
|
let markers: M.Marker[] = $state([]);
|
||||||
|
|
||||||
let selectedList: List | null = $state(
|
let selectedList: List | null = $state(
|
||||||
page.params.handle && page.params.id ? data.lists.items[0] : null,
|
untrack(() =>
|
||||||
|
page.params.handle && page.params.id ? data.lists.items[0] : null,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
let selectedTrail: Trail | null = $state(null);
|
let selectedTrail: Trail | null = $state(null);
|
||||||
|
|
||||||
|
|||||||
@@ -37,11 +37,11 @@
|
|||||||
import { validator } from "@felte/validator-zod";
|
import { validator } from "@felte/validator-zod";
|
||||||
import { createForm } from "felte";
|
import { createForm } from "felte";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { onMount } from "svelte";
|
import { onMount, untrack } from "svelte";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let previewURL = $state(data.previewUrl ?? "");
|
let previewURL = $state(untrack(() => data.previewUrl ?? ""));
|
||||||
let searchDropdownItems: SearchItem[] = $state([]);
|
let searchDropdownItems: SearchItem[] = $state([]);
|
||||||
|
|
||||||
let activeTrailIndex: number = $state(-1);
|
let activeTrailIndex: number = $state(-1);
|
||||||
@@ -76,17 +76,19 @@
|
|||||||
.optional(),
|
.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const getInitialFormValues = () => ({
|
||||||
|
...data.list,
|
||||||
|
public: data.list.id
|
||||||
|
? data.list.public
|
||||||
|
: page.data.settings?.privacy?.lists === "public",
|
||||||
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
form,
|
form,
|
||||||
errors,
|
errors,
|
||||||
data: formData,
|
data: formData,
|
||||||
} = createForm<z.infer<typeof ClientListCreateSchema>>({
|
} = createForm<z.infer<typeof ClientListCreateSchema>>({
|
||||||
initialValues: {
|
initialValues: getInitialFormValues(),
|
||||||
...data.list,
|
|
||||||
public: data.list.id
|
|
||||||
? data.list.public
|
|
||||||
: page.data.settings?.privacy?.lists === "public",
|
|
||||||
},
|
|
||||||
extend: validator({
|
extend: validator({
|
||||||
schema: ClientListCreateSchema,
|
schema: ClientListCreateSchema,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -21,7 +21,9 @@
|
|||||||
|
|
||||||
let { data: pageData }: PageProps = $props();
|
let { data: pageData }: PageProps = $props();
|
||||||
|
|
||||||
const authProviders = pageData.authMethods.oauth2.providers;
|
const authProviders = $derived.by(
|
||||||
|
() => pageData.authMethods.oauth2.providers,
|
||||||
|
);
|
||||||
|
|
||||||
const { form, errors, data } = createForm<User>({
|
const { form, errors, data } = createForm<User>({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
|
|||||||
@@ -6,11 +6,12 @@
|
|||||||
import { getFileURL } from "$lib/util/file_util.js";
|
import { getFileURL } from "$lib/util/file_util.js";
|
||||||
import * as M from "maplibre-gl";
|
import * as M from "maplibre-gl";
|
||||||
import "photoswipe/style.css";
|
import "photoswipe/style.css";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
const trail = $state(data.trail);
|
const trail = $state(untrack(() => data.trail));
|
||||||
|
|
||||||
let markers: M.Marker[] = $state([]);
|
let markers: M.Marker[] = $state([]);
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
import { profile_feed_index } from "$lib/stores/profile_store.js";
|
import { profile_feed_index } from "$lib/stores/profile_store.js";
|
||||||
import { theme } from "$lib/stores/theme_store.js";
|
import { theme } from "$lib/stores/theme_store.js";
|
||||||
import { getFileURL } from "$lib/util/file_util.js";
|
import { getFileURL } from "$lib/util/file_util.js";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
@@ -18,7 +19,7 @@
|
|||||||
feed = data.feed
|
feed = data.feed
|
||||||
})
|
})
|
||||||
|
|
||||||
let feed = $state(data.feed);
|
let feed = $state(untrack(() => data.feed));
|
||||||
|
|
||||||
let loading: boolean = false;
|
let loading: boolean = false;
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
Title,
|
Title,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
} from "chart.js";
|
} from "chart.js";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
@@ -43,9 +44,9 @@
|
|||||||
BarElement,
|
BarElement,
|
||||||
);
|
);
|
||||||
|
|
||||||
let summitLogs: SummitLog[] = $state(data.logs);
|
let summitLogs: SummitLog[] = $state(untrack(() => data.logs));
|
||||||
|
|
||||||
const filter = $state(data.filter);
|
const filter = $state(untrack(() => data.filter));
|
||||||
|
|
||||||
const categorySelectItems: SelectItem[] = $categories.map((c) => ({
|
const categorySelectItems: SelectItem[] = $categories.map((c) => ({
|
||||||
value: c.id,
|
value: c.id,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
import type { TrailFilter } from "$lib/models/trail.js";
|
import type { TrailFilter } from "$lib/models/trail.js";
|
||||||
import { profile_trails_index } from "$lib/stores/profile_store.js";
|
import { profile_trails_index } from "$lib/stores/profile_store.js";
|
||||||
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
@@ -11,14 +12,14 @@
|
|||||||
let loading = $state(true);
|
let loading = $state(true);
|
||||||
|
|
||||||
let pagination = $state({
|
let pagination = $state({
|
||||||
page: data.trails.page,
|
page: untrack(() => data.trails.page),
|
||||||
totalPages: data.trails.totalPages,
|
totalPages: untrack(() => data.trails.totalPages),
|
||||||
items: 12,
|
items: 12,
|
||||||
});
|
});
|
||||||
|
|
||||||
let trails = $state(data.trails);
|
let trails = $state(untrack(() => data.trails));
|
||||||
|
|
||||||
let filter: TrailFilter = $state(data.filter);
|
let filter: TrailFilter = $state(untrack(() => data.filter));
|
||||||
|
|
||||||
async function handleFilterUpdate() {
|
async function handleFilterUpdate() {
|
||||||
loading = true;
|
loading = true;
|
||||||
|
|||||||
@@ -3,10 +3,11 @@
|
|||||||
import { follows_index } from "$lib/stores/follow_store.js";
|
import { follows_index } from "$lib/stores/follow_store.js";
|
||||||
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
||||||
import { APIError } from "$lib/util/api_util.js";
|
import { APIError } from "$lib/util/api_util.js";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let follows = $state(data.follows);
|
let follows = $state(untrack(() => data.follows));
|
||||||
|
|
||||||
$effect(() => {
|
$effect(() => {
|
||||||
page.params.type;
|
page.params.type;
|
||||||
|
|||||||
@@ -13,11 +13,12 @@
|
|||||||
integrations_update,
|
integrations_update,
|
||||||
} from "$lib/stores/integration_store.js";
|
} from "$lib/stores/integration_store.js";
|
||||||
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let integration = $state(data.integration);
|
let integration = $state(untrack(() => data.integration));
|
||||||
|
|
||||||
const scope = "read_all,activity:read_all";
|
const scope = "read_all,activity:read_all";
|
||||||
const redirectUri = page.url.href + "/callback/strava";
|
const redirectUri = page.url.href + "/callback/strava";
|
||||||
@@ -29,7 +30,7 @@
|
|||||||
|
|
||||||
let komootSettingsModal: KomootSettingsModal;
|
let komootSettingsModal: KomootSettingsModal;
|
||||||
let komootToggleValue: boolean = $state(
|
let komootToggleValue: boolean = $state(
|
||||||
data.integration?.komoot?.active ?? false,
|
untrack(() => data.integration?.komoot?.active ?? false),
|
||||||
);
|
);
|
||||||
|
|
||||||
async function onSettingsSave(
|
async function onSettingsSave(
|
||||||
|
|||||||
@@ -1,31 +1,32 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { page } from "$app/state";
|
|
||||||
import Button from "$lib/components/base/button.svelte";
|
import Button from "$lib/components/base/button.svelte";
|
||||||
import Editor from "$lib/components/base/editor.svelte";
|
import Editor from "$lib/components/base/editor.svelte";
|
||||||
import type { SelectItem } from "$lib/components/base/select.svelte";
|
import type { SelectItem } from "$lib/components/base/select.svelte";
|
||||||
import Select from "$lib/components/base/select.svelte";
|
import Select from "$lib/components/base/select.svelte";
|
||||||
import Textarea from "$lib/components/base/textarea.svelte";
|
|
||||||
import type { Category } from "$lib/models/category.js";
|
import type { Category } from "$lib/models/category.js";
|
||||||
import { settings_update } from "$lib/stores/settings_store";
|
import { settings_update } from "$lib/stores/settings_store";
|
||||||
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
import { show_toast } from "$lib/stores/toast_store.svelte.js";
|
||||||
import { currentUser, users_update } from "$lib/stores/user_store";
|
import { currentUser, users_update } from "$lib/stores/user_store";
|
||||||
import { getFileURL } from "$lib/util/file_util";
|
import { getFileURL } from "$lib/util/file_util";
|
||||||
|
import { untrack } from "svelte";
|
||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
|
|
||||||
let { data } = $props();
|
let { data } = $props();
|
||||||
|
|
||||||
let settings = $state(data.settings)
|
let settings = $state(untrack(() => data.settings));
|
||||||
|
|
||||||
let selectedCategory = $state(
|
let selectedCategory = $state(
|
||||||
data.settings?.category || data.categories[0].id,
|
untrack(() => data.settings?.category || data.categories[0].id),
|
||||||
);
|
);
|
||||||
|
|
||||||
let bio = $state(data.settings?.bio ?? "");
|
let bio = $state(untrack(() => data.settings?.bio ?? ""));
|
||||||
|
|
||||||
const categoryItems: SelectItem[] = data.categories.map((c: Category) => ({
|
let categoryItems: SelectItem[] = $derived.by(() =>
|
||||||
text: $_(c.name),
|
data.categories.map((c: Category) => ({
|
||||||
value: c.id,
|
text: $_(c.name),
|
||||||
}));
|
value: c.id,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
|
||||||
function openFileBrowser() {
|
function openFileBrowser() {
|
||||||
document.getElementById("avatarInput")!.click();
|
document.getElementById("avatarInput")!.click();
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
let map: M.Map | undefined = $state();
|
let map: M.Map | undefined = $state();
|
||||||
let mapPopup: M.Popup | undefined;
|
let mapPopup: M.Popup | undefined;
|
||||||
let mapTrail: Trail[] = $state([]);
|
let mapTrail: Trail[] = $state([]);
|
||||||
let lists = $state(data.lists);
|
let lists = $state(untrack(() => data.lists));
|
||||||
|
|
||||||
let waypointModal: WaypointModal;
|
let waypointModal: WaypointModal;
|
||||||
let summitLogModal: SummitLogModal;
|
let summitLogModal: SummitLogModal;
|
||||||
@@ -160,22 +160,24 @@
|
|||||||
|
|
||||||
let tagItems: ComboboxItem[] = $state([]);
|
let tagItems: ComboboxItem[] = $state([]);
|
||||||
|
|
||||||
|
const getInitialFormValues = () => ({
|
||||||
|
...data.trail,
|
||||||
|
public: data.trail.id
|
||||||
|
? data.trail.public
|
||||||
|
: page.data.settings?.privacy?.trails === "public",
|
||||||
|
category:
|
||||||
|
data.trail.category ||
|
||||||
|
page.data.settings?.category ||
|
||||||
|
$categories[0].id,
|
||||||
|
});
|
||||||
|
|
||||||
const {
|
const {
|
||||||
form,
|
form,
|
||||||
errors,
|
errors,
|
||||||
data: formData,
|
data: formData,
|
||||||
setFields,
|
setFields,
|
||||||
} = createForm<z.infer<typeof ClientTrailCreateSchema>>({
|
} = createForm<z.infer<typeof ClientTrailCreateSchema>>({
|
||||||
initialValues: {
|
initialValues: getInitialFormValues(),
|
||||||
...data.trail,
|
|
||||||
public: data.trail.id
|
|
||||||
? data.trail.public
|
|
||||||
: page.data.settings?.privacy?.trails === "public",
|
|
||||||
category:
|
|
||||||
data.trail.category ||
|
|
||||||
page.data.settings?.category ||
|
|
||||||
$categories[0].id,
|
|
||||||
},
|
|
||||||
extend: validator({
|
extend: validator({
|
||||||
schema: ClientTrailCreateSchema,
|
schema: ClientTrailCreateSchema,
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const config = {
|
|||||||
|
|
||||||
kit: {
|
kit: {
|
||||||
csrf: {
|
csrf: {
|
||||||
checkOrigin: false
|
trustedOrigins: ['*']
|
||||||
},
|
},
|
||||||
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
||||||
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
|
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
|
||||||
|
|||||||
Reference in New Issue
Block a user