refactor: replace $: reactive statements with $derived()

Migrate remaining Svelte 4 reactive statements to Svelte 5 $derived:
- media/audit/+page.svelte: Convert allSelected, hasSelection, selectedSize to $derived
- universe/compose/+page.svelte: Convert postType, initialContent to $derived
- Also migrated all let declarations to $state() in audit page for consistency

All reactive statements now use Svelte 5 runes mode.
This commit is contained in:
Justin Edmund 2025-11-04 19:46:35 -08:00
parent 4337b57dee
commit 5b5785887d
2 changed files with 22 additions and 19 deletions

View file

@ -29,32 +29,33 @@
createdAt: string createdAt: string
} }
let loading = true let loading = $state(true)
let deleting = false let deleting = $state(false)
let auditData: { let auditData = $state<{
summary: AuditSummary summary: AuditSummary
orphanedFiles: OrphanedFile[] orphanedFiles: OrphanedFile[]
missingReferences: string[] missingReferences: string[]
} | null = null } | null>(null)
let error: string | null = null let error = $state<string | null>(null)
let selectedFiles = new Set<string>() let selectedFiles = $state(new Set<string>())
let showDeleteModal = false let showDeleteModal = $state(false)
let deleteResults: { succeeded: number; failed: string[] } | null = null let deleteResults = $state<{ succeeded: number; failed: string[] } | null>(null)
let cleanupResults: { let cleanupResults = $state<{
cleanedMedia: number cleanedMedia: number
cleanedProjects: number cleanedProjects: number
cleanedPosts: number cleanedPosts: number
errors: string[] errors: string[]
} | null = null } | null>(null)
let showCleanupModal = false let showCleanupModal = $state(false)
let cleaningUp = false let cleaningUp = $state(false)
$: allSelected = auditData && selectedFiles.size >= Math.min(20, auditData.orphanedFiles.length) const allSelected = $derived(auditData && selectedFiles.size >= Math.min(20, auditData.orphanedFiles.length))
$: hasSelection = selectedFiles.size > 0 const hasSelection = $derived(selectedFiles.size > 0)
$: selectedSize = const selectedSize = $derived(
auditData?.orphanedFiles auditData?.orphanedFiles
.filter((f) => selectedFiles.has(f.publicId)) .filter((f) => selectedFiles.has(f.publicId))
.reduce((sum, f) => sum + f.size, 0) || 0 .reduce((sum, f) => sum + f.size, 0) || 0
)
onMount(() => { onMount(() => {
runAudit() runAudit()

View file

@ -4,10 +4,12 @@
import AdminPage from '$lib/components/admin/AdminPage.svelte' import AdminPage from '$lib/components/admin/AdminPage.svelte'
// Get initial state from URL params // Get initial state from URL params
$: postType = ($page.url.searchParams.get('type') as 'post' | 'essay') || 'essay' const postType = $derived(($page.url.searchParams.get('type') as 'post' | 'essay') || 'essay')
$: initialContent = $page.url.searchParams.get('content') const initialContent = $derived(
? JSON.parse($page.url.searchParams.get('content')!) $page.url.searchParams.get('content')
: undefined ? JSON.parse($page.url.searchParams.get('content')!)
: undefined
)
</script> </script>
<svelte:head> <svelte:head>