From 0d7f9aa83fe92b156cd91beec28bd3b91d967fb7 Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Thu, 4 Jun 2026 10:42:09 +0200 Subject: [PATCH] Sync previews when clip source changes --- Sources/GrowthLapse/ContentView.swift | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Sources/GrowthLapse/ContentView.swift b/Sources/GrowthLapse/ContentView.swift index 3483476..1092560 100644 --- a/Sources/GrowthLapse/ContentView.swift +++ b/Sources/GrowthLapse/ContentView.swift @@ -603,6 +603,9 @@ private struct ClipPreviewView: View { .onChange(of: clip.id) { _ in loadClip() } + .onChange(of: clip.sourcePath) { _ in + loadClip() + } .onChange(of: clip.segmentStart) { _ in seekToSegmentStart() } @@ -708,6 +711,7 @@ private struct ClipVariantPickerView: View { if let selectedVariant { VariantPreviewView(variant: selectedVariant) + .id(selectedVariant.sourcePath) .frame(height: 220) .clipShape(RoundedRectangle(cornerRadius: 8)) } @@ -745,8 +749,19 @@ private struct ClipVariantPickerView: View { } .padding() .onAppear { - selectedVariantID = selectedVariant?.id + selectedVariantID = currentVariantID() } + .onChange(of: clip.id) { _ in + selectedVariantID = currentVariantID() + } + .onChange(of: clip.sourcePath) { _ in + selectedVariantID = currentVariantID() + } + } + + private func currentVariantID() -> UUID? { + clip.availableVariants.first(where: { $0.sourcePath == clip.sourcePath })?.id + ?? clip.availableVariants.first?.id } private func format(_ value: Double) -> String { @@ -770,6 +785,9 @@ private struct VariantPreviewView: View { .onChange(of: variant.id) { _ in loadVariant() } + .onChange(of: variant.sourcePath) { _ in + loadVariant() + } } private func loadVariant() {