From 5bc1b63b617760b35cad484218603350a9460572 Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Sun, 7 Jun 2026 16:14:55 -0400 Subject: [PATCH] fix: route all _isMinimized mutations through SetMinimized so spacer stays in sync Expand, ToggleMinimized, and Close now share one guarded mutator that fires OnMinimized and renders. Fixed prerender branch left as a direct assignment. --- .../AudioPlayerBar/AudioPlayerBar.razor.cs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor.cs b/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor.cs index 44aa136..62cf5a9 100644 --- a/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor.cs +++ b/DeepDrftPublic.Client/Controls/AudioPlayerBar/AudioPlayerBar.razor.cs @@ -115,13 +115,22 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable } } - private async Task Expand() + private async Task Expand() => await SetMinimized(false); + + /// + /// The single assignment site for . Guards no-op transitions, + /// fires so MainLayout's spacer class stays in sync, and renders + /// so OnAfterRenderAsync re-evaluates the ResizeObserver on every transition path. + /// The Fixed branch in OnParametersSet intentionally bypasses this — it is a + /// prerender/parameter pass, not a user-driven transition, and the embed host has no spacer. + /// + private async Task SetMinimized(bool value) { - if (_isMinimized) - { - _isMinimized = false; - StateHasChanged(); - } + if (_isMinimized == value) return; + + _isMinimized = value; + if (OnMinimized.HasDelegate) await OnMinimized.InvokeAsync(value); + StateHasChanged(); } private async Task TogglePlayPause() @@ -176,12 +185,7 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable PlayerService?.ClearError(); } - private async Task ToggleMinimized() - { - _isMinimized = !_isMinimized; - if (OnMinimized.HasDelegate) await OnMinimized.InvokeAsync(_isMinimized); - StateHasChanged(); - } + private async Task ToggleMinimized() => await SetMinimized(!_isMinimized); private async Task Close() { @@ -190,11 +194,7 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable await PlayerService.Unload(); } - if (!_isMinimized) - { - _isMinimized = true; - StateHasChanged(); - } + await SetMinimized(true); } public async ValueTask DisposeAsync()