diff --git a/packages/frontend/src/routes/admin/articles/+page.svelte b/packages/frontend/src/routes/admin/articles/+page.svelte index 17c3251..a556362 100644 --- a/packages/frontend/src/routes/admin/articles/+page.svelte +++ b/packages/frontend/src/routes/admin/articles/+page.svelte @@ -21,6 +21,7 @@ let deleteOpen = $state(false); let deleting = $state(false); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/admin/articles/[id]/+page.svelte b/packages/frontend/src/routes/admin/articles/[id]/+page.svelte index ad6382f..86101f1 100644 --- a/packages/frontend/src/routes/admin/articles/[id]/+page.svelte +++ b/packages/frontend/src/routes/admin/articles/[id]/+page.svelte @@ -28,6 +28,20 @@ ); let imageId = $state(data.article.image ?? null); let authorId = $state(data.article.author?.id ?? ""); + $effect(() => { + title = data.article.title; + slug = data.article.slug; + excerpt = data.article.excerpt ?? ""; + content = data.article.content ?? ""; + category = data.article.category ?? ""; + tags = data.article.tags ?? []; + featured = data.article.featured ?? false; + publishDate = data.article.publish_date + ? new Date(data.article.publish_date).toISOString().slice(0, 16) + : ""; + imageId = data.article.image ?? null; + authorId = data.article.author?.id ?? ""; + }); let selectedAuthor = $derived(data.authors.find((a) => a.id === authorId) ?? null); let saving = $state(false); let editorTab = $state<"write" | "preview">("write"); diff --git a/packages/frontend/src/routes/admin/comments/+page.svelte b/packages/frontend/src/routes/admin/comments/+page.svelte index 6db2d93..0b51e50 100644 --- a/packages/frontend/src/routes/admin/comments/+page.svelte +++ b/packages/frontend/src/routes/admin/comments/+page.svelte @@ -18,6 +18,7 @@ let deleteOpen = $state(false); let deleting = $state(false); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/admin/recordings/+page.svelte b/packages/frontend/src/routes/admin/recordings/+page.svelte index 88f8e7f..30ee7d1 100644 --- a/packages/frontend/src/routes/admin/recordings/+page.svelte +++ b/packages/frontend/src/routes/admin/recordings/+page.svelte @@ -19,6 +19,7 @@ let deleteOpen = $state(false); let deleting = $state(false); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/admin/users/+page.svelte b/packages/frontend/src/routes/admin/users/+page.svelte index af945d8..3e1eaa8 100644 --- a/packages/frontend/src/routes/admin/users/+page.svelte +++ b/packages/frontend/src/routes/admin/users/+page.svelte @@ -16,6 +16,7 @@ const { data } = $props(); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; let deleteTarget: User | null = $state(null); let deleteOpen = $state(false); diff --git a/packages/frontend/src/routes/admin/users/[id]/+page.svelte b/packages/frontend/src/routes/admin/users/[id]/+page.svelte index f3368f1..277b9ac 100644 --- a/packages/frontend/src/routes/admin/users/[id]/+page.svelte +++ b/packages/frontend/src/routes/admin/users/[id]/+page.svelte @@ -24,6 +24,15 @@ let photoId = $state(data.user.photo ?? null); let isAdmin = $state(data.user.is_admin ?? false); let saving = $state(false); + $effect(() => { + firstName = data.user.first_name ?? ""; + lastName = data.user.last_name ?? ""; + artistName = data.user.artist_name ?? ""; + avatarId = data.user.avatar ?? null; + bannerId = data.user.banner ?? null; + photoId = data.user.photo ?? null; + isAdmin = data.user.is_admin ?? false; + }); async function handleAvatarUpload(files: File[]) { const file = files[0]; diff --git a/packages/frontend/src/routes/admin/videos/+page.svelte b/packages/frontend/src/routes/admin/videos/+page.svelte index 4231ce2..9ab0a83 100644 --- a/packages/frontend/src/routes/admin/videos/+page.svelte +++ b/packages/frontend/src/routes/admin/videos/+page.svelte @@ -18,6 +18,7 @@ let deleteOpen = $state(false); let deleting = $state(false); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/admin/videos/[id]/+page.svelte b/packages/frontend/src/routes/admin/videos/[id]/+page.svelte index 80a4e5d..89670b1 100644 --- a/packages/frontend/src/routes/admin/videos/[id]/+page.svelte +++ b/packages/frontend/src/routes/admin/videos/[id]/+page.svelte @@ -29,6 +29,20 @@ let selectedModelIds = $state( data.video.models?.map((m: { id: string }) => m.id) ?? [], ); + $effect(() => { + title = data.video.title; + slug = data.video.slug; + description = data.video.description ?? ""; + tags = data.video.tags ?? []; + premium = data.video.premium ?? false; + featured = data.video.featured ?? false; + uploadDate = data.video.upload_date + ? new Date(data.video.upload_date).toISOString().slice(0, 16) + : ""; + imageId = data.video.image ?? null; + movieId = data.video.movie ?? null; + selectedModelIds = data.video.models?.map((m: { id: string }) => m.id) ?? []; + }); let saving = $state(false); async function handleImageUpload(files: File[]) { diff --git a/packages/frontend/src/routes/magazine/+page.svelte b/packages/frontend/src/routes/magazine/+page.svelte index bb25b52..e342277 100644 --- a/packages/frontend/src/routes/magazine/+page.svelte +++ b/packages/frontend/src/routes/magazine/+page.svelte @@ -18,6 +18,7 @@ const { data } = $props(); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; const featuredArticle = diff --git a/packages/frontend/src/routes/me/+page.svelte b/packages/frontend/src/routes/me/+page.svelte index c2bf66e..be06733 100644 --- a/packages/frontend/src/routes/me/+page.svelte +++ b/packages/frontend/src/routes/me/+page.svelte @@ -39,6 +39,15 @@ let artistName = $state(data.authStatus.user!.artist_name); let description = $state(data.authStatus.user!.description); let tags = $state(data.authStatus.user!.tags ?? undefined); + $effect(() => { + recordings = data.recordings; + firstName = data.authStatus.user!.first_name; + lastName = data.authStatus.user!.last_name; + artistName = data.authStatus.user!.artist_name; + description = data.authStatus.user!.description; + tags = data.authStatus.user!.tags ?? undefined; + email = data.authStatus.user!.email; + }); let email = $state(data.authStatus.user!.email); let password = $state(""); diff --git a/packages/frontend/src/routes/models/+page.svelte b/packages/frontend/src/routes/models/+page.svelte index 7abadc2..0d672bb 100644 --- a/packages/frontend/src/routes/models/+page.svelte +++ b/packages/frontend/src/routes/models/+page.svelte @@ -15,6 +15,7 @@ const { data } = $props(); let searchValue = $state(data.search ?? ""); + $effect(() => { searchValue = data.search ?? ""; }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/videos/+page.svelte b/packages/frontend/src/routes/videos/+page.svelte index b3fad98..64dd40e 100644 --- a/packages/frontend/src/routes/videos/+page.svelte +++ b/packages/frontend/src/routes/videos/+page.svelte @@ -18,6 +18,9 @@ const { data } = $props(); let searchValue = $state(data.search ?? ""); + $effect(() => { + searchValue = data.search ?? ""; + }); let searchTimeout: ReturnType; function debounceSearch(value: string) { diff --git a/packages/frontend/src/routes/videos/[slug]/+page.svelte b/packages/frontend/src/routes/videos/[slug]/+page.svelte index 7af7fc9..170f34c 100644 --- a/packages/frontend/src/routes/videos/[slug]/+page.svelte +++ b/packages/frontend/src/routes/videos/[slug]/+page.svelte @@ -30,6 +30,10 @@ const timeAgo = new TimeAgo("en"); let isLiked = $state(data.likeStatus.liked); let likesCount = $state(data.video.likes_count || 0); + $effect(() => { + isLiked = data.likeStatus.liked; + likesCount = data.video.likes_count || 0; + }); let isLikeLoading = $state(false); let newComment = $state(""); let showComments = $state(true);