From b404ab13e770acd26a166ed77f8644ad37aae8c0 Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Sat, 19 Jul 2025 13:15:28 +0200 Subject: [PATCH 1/9] hopefully fix blank settings page by using $derived instead of $state --- web/src/routes/dashboard/settings/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/routes/dashboard/settings/+page.svelte b/web/src/routes/dashboard/settings/+page.svelte index fce0dfc..46d59e2 100644 --- a/web/src/routes/dashboard/settings/+page.svelte +++ b/web/src/routes/dashboard/settings/+page.svelte @@ -11,7 +11,7 @@ import type { User } from '$lib/types'; let currentUser: () => User = getContext('user'); - let users = $state(page.data.users); + let users = $derived(page.data.users); From f8e7b80a9b9cf0fb7a64bbd5fd381901d8009fc9 Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Sat, 19 Jul 2025 13:27:55 +0200 Subject: [PATCH 2/9] make users table only display other users --- web/src/routes/dashboard/settings/+page.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/src/routes/dashboard/settings/+page.svelte b/web/src/routes/dashboard/settings/+page.svelte index 46d59e2..7836bbb 100644 --- a/web/src/routes/dashboard/settings/+page.svelte +++ b/web/src/routes/dashboard/settings/+page.svelte @@ -11,7 +11,9 @@ import type { User } from '$lib/types'; let currentUser: () => User = getContext('user'); - let users = $derived(page.data.users); + let users: User[] = $derived(page.data.users.filter((user: User) => user.id !== currentUser().id)); + $inspect(users) + console.log('Current user:', currentUser()); @@ -54,7 +56,7 @@ Users - Edit or delete users + Edit, delete or change the permissions of other users From cc554164c3230e0038304e5752af6922c1b7f5ad Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Sat, 19 Jul 2025 13:44:18 +0200 Subject: [PATCH 3/9] make settings page properly reactive and add feature for admins to be able to change other user's emails --- web/src/lib/components/user-data-table.svelte | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/web/src/lib/components/user-data-table.svelte b/web/src/lib/components/user-data-table.svelte index ac99eff..a32b465 100644 --- a/web/src/lib/components/user-data-table.svelte +++ b/web/src/lib/components/user-data-table.svelte @@ -9,12 +9,14 @@ import { Label } from '$lib/components/ui/label/index.js'; import * as RadioGroup from '$lib/components/ui/radio-group/index.js'; import { Input } from '$lib/components/ui/input/index.js'; + import { invalidateAll } from '$app/navigation'; const apiUrl = env.PUBLIC_API_URL; let { users }: { users: User[] } = $props(); let sortedUsers = $derived(users.sort((a, b) => a.email.localeCompare(b.email))); let selectedUser: User | null = $state(null); let newPassword: string = $state(''); + let newEmail: string = $state(''); let dialogOpen = $state(false); async function saveUser() { @@ -31,20 +33,18 @@ is_verified: selectedUser.is_verified, is_active: selectedUser.is_active, is_superuser: selectedUser.is_superuser, - ...(newPassword !== '' && { password: newPassword }) + ...(newPassword !== '' && { password: newPassword }), + ...(newEmail !== '' && { email: newEmail }) }) }); if (response.ok) { toast.success(`User ${selectedUser.email} updated successfully.`); dialogOpen = false; - - const idx = sortedUsers.findIndex((u) => u.id === selectedUser!.id); - if (idx !== -1) { - sortedUsers[idx] = selectedUser!; - } - selectedUser = null; + newPassword = ''; + newEmail = ''; + await invalidateAll(); } else { const errorText = await response.text(); console.error(`Failed to update user ${response.statusText}`, errorText); @@ -53,14 +53,13 @@ } catch (error) { console.error('Error updating user:', error); toast.error( - 'Error updating user: ' + (error instanceof Error ? error.message : String(error)) + 'Error updating user: ' + (error instanceof Error ? error.message : String(error)) ); } finally { newPassword = ''; } } - A list of all users. @@ -172,6 +171,17 @@ + +
+ + +
From 9eb2411bce34c6401e2a2afec6f7dc5fcaffc117 Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:13:13 +0200 Subject: [PATCH 4/9] fix error message displaying when adding a movie request --- web/src/lib/components/request-movie-dialog.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/lib/components/request-movie-dialog.svelte b/web/src/lib/components/request-movie-dialog.svelte index 0607c6b..6b241dd 100644 --- a/web/src/lib/components/request-movie-dialog.svelte +++ b/web/src/lib/components/request-movie-dialog.svelte @@ -43,7 +43,7 @@ }) }); - if (response.status === 204) { + if (response.ok) { dialogOpen = false; minQuality = undefined; wantedQuality = undefined; From 6224d418be67aa8cb232c0acee7b9f344a7cf685 Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Sat, 19 Jul 2025 14:17:49 +0200 Subject: [PATCH 5/9] fix breadcrumbs in movie torrents page linking to show page --- web/src/routes/dashboard/movies/torrents/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/routes/dashboard/movies/torrents/+page.svelte b/web/src/routes/dashboard/movies/torrents/+page.svelte index d806ea9..23b17f4 100644 --- a/web/src/routes/dashboard/movies/torrents/+page.svelte +++ b/web/src/routes/dashboard/movies/torrents/+page.svelte @@ -48,7 +48,7 @@