aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/routes/+layout.svelte22
-rw-r--r--src/routes/user/[user]/+page.svelte40
2 files changed, 41 insertions, 21 deletions
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 99cf8341..39a2e40b 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -112,11 +112,15 @@ onMount(async () => {
settings.get();
- if (data.user !== undefined && $userIdentity.id === -2)
- getUserIdentity(data.user).then((h) => userIdentity.set(h));
+ const currentIdentity = data.user
+ ? await getUserIdentity(data.user)
+ : undefined;
- if ($settings.settingsSync && $userIdentity.id !== -2)
- fetch(root(`/api/configuration?id=${$userIdentity.id}`)).then(
+ if (currentIdentity) userIdentity.set(currentIdentity);
+ else if ($userIdentity.id !== -2) userIdentity.reset();
+
+ if ($settings.settingsSync && currentIdentity)
+ fetch(root(`/api/configuration?id=${currentIdentity.id}`)).then(
(response) => {
if (response.ok)
response.json().then((data) => {
@@ -135,14 +139,18 @@ onMount(async () => {
await userDatabase.users.where("id").below(0).delete();
- if (!(await userDatabase.users.get($userIdentity.id)) && $userIdentity.id > 0)
+ if (
+ currentIdentity &&
+ !(await userDatabase.users.get(currentIdentity.id)) &&
+ currentIdentity.id > 0
+ )
await userDatabase.users.put({
- id: $userIdentity.id,
+ id: currentIdentity.id,
user: data.user,
lastNotificationID: null,
});
- if ($settings.displayAniListNotifications && data.user !== undefined)
+ if ($settings.displayAniListNotifications && currentIdentity)
if ("Notification" in window && navigator.serviceWorker)
requestNotifications();
});
diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte
index ecbc8330..fd1e2d7e 100644
--- a/src/routes/user/[user]/+page.svelte
+++ b/src/routes/user/[user]/+page.svelte
@@ -30,6 +30,18 @@ $: ({ Profile } = data);
$: preferences = $Profile.fetching
? undefined
: ($Profile.data?.User?.preferences as Preferences | undefined);
+$: isOwner = Boolean(userData && userData.id === $identity.id);
+$: ownerPreferences = preferences ?? {
+ created_at: "",
+ updated_at: "",
+ user_id: userData?.id ?? 0,
+ pinned_hololive_streams: [],
+ hide_missing_badges: false,
+ biography: null,
+ badge_wall_css: "",
+ hide_awc_badges: false,
+ pinned_badge_wall_categories: [],
+};
const setCategoriesQuery = graphql(`
mutation SetCategories($categories: [String!]!) {
@@ -139,17 +151,17 @@ const handleDragEnter = (
) => {
event.preventDefault();
- if (draggedCategory !== category && preferences && draggedCategory) {
+ if (draggedCategory !== category && draggedCategory) {
draggedOverCategory = category;
- const categories = preferences.pinned_badge_wall_categories;
+ const categories = ownerPreferences.pinned_badge_wall_categories;
const draggedIndex = categories.indexOf(draggedCategory);
const targetIndex = categories.indexOf(category || "");
categories.splice(draggedIndex, 1);
categories.splice(targetIndex, 0, draggedCategory);
- preferences.pinned_badge_wall_categories = categories;
+ ownerPreferences.pinned_badge_wall_categories = categories;
}
};
@@ -159,26 +171,26 @@ const handleDragLeave = (
) => {
event.preventDefault();
- if (draggedOverCategory === category && preferences && draggedCategory) {
+ if (draggedOverCategory === category && draggedCategory) {
draggedOverCategory = null;
- const categories = preferences.pinned_badge_wall_categories;
+ const categories = ownerPreferences.pinned_badge_wall_categories;
const draggedIndex = categories.indexOf(draggedCategory);
categories.splice(draggedIndex, 1);
categories.splice(categories.indexOf(category) + 1, 0, draggedCategory);
- preferences.pinned_badge_wall_categories = categories;
+ ownerPreferences.pinned_badge_wall_categories = categories;
}
};
const handleDrop = (event: { preventDefault: () => void }) => {
event.preventDefault();
- if (userData && preferences)
+ if (userData)
setCategoriesQuery
.mutate({
- categories: preferences.pinned_badge_wall_categories,
+ categories: ownerPreferences.pinned_badge_wall_categories,
})
.then();
@@ -360,7 +372,7 @@ const toggleCategory = () => {
</div>
{/if}
- {#if preferences && userData && userData.id === $identity.id}
+ {#if isOwner}
<Spacer />
<details open>
@@ -371,7 +383,7 @@ const toggleCategory = () => {
onchange={() => {
if (userData) toggleHideMissingBadgesQuery.mutate(null).then();
}}
- checked={preferences.hide_missing_badges}
+ checked={ownerPreferences.hide_missing_badges}
/>
{$locale().user.preferences.hideMissingBadges.title}
<SettingHint lineBreak>{$locale().user.preferences.hideMissingBadges.hint}</SettingHint>
@@ -383,7 +395,7 @@ const toggleCategory = () => {
onchange={() => {
if (userData) toggleHideAWCBadgesQuery.mutate(null).then();
}}
- checked={preferences.hide_awc_badges}
+ checked={ownerPreferences.hide_awc_badges}
/>
{$locale().user.preferences.hideAWCBadges.title}
@@ -392,7 +404,7 @@ const toggleCategory = () => {
Pinned Categories
<div class="pinned-categories">
- {#each preferences.pinned_badge_wall_categories as category}
+ {#each ownerPreferences.pinned_badge_wall_categories as category}
<div
class="card card-small pinned-category"
draggable="true"
@@ -440,7 +452,7 @@ const toggleCategory = () => {
}}>Save</button
>
<textarea
- value={preferences.biography}
+ value={ownerPreferences.biography}
rows="5"
cols="100"
id="biography"
@@ -462,7 +474,7 @@ const toggleCategory = () => {
}}>Save</button
>
<textarea
- value={preferences.badge_wall_css}
+ value={ownerPreferences.badge_wall_css}
rows="10"
cols="100"
id="badgeWallCSS"