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.
This commit is contained in:
@@ -115,14 +115,23 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task Expand()
|
private async Task Expand() => await SetMinimized(false);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The single assignment site for <see cref="_isMinimized"/>. Guards no-op transitions,
|
||||||
|
/// fires <see cref="OnMinimized"/> so MainLayout's spacer class stays in sync, and renders
|
||||||
|
/// so OnAfterRenderAsync re-evaluates the ResizeObserver on every transition path.
|
||||||
|
/// The <c>Fixed</c> branch in OnParametersSet intentionally bypasses this — it is a
|
||||||
|
/// prerender/parameter pass, not a user-driven transition, and the embed host has no spacer.
|
||||||
|
/// </summary>
|
||||||
|
private async Task SetMinimized(bool value)
|
||||||
{
|
{
|
||||||
if (_isMinimized)
|
if (_isMinimized == value) return;
|
||||||
{
|
|
||||||
_isMinimized = false;
|
_isMinimized = value;
|
||||||
|
if (OnMinimized.HasDelegate) await OnMinimized.InvokeAsync(value);
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private async Task TogglePlayPause()
|
private async Task TogglePlayPause()
|
||||||
{
|
{
|
||||||
@@ -176,12 +185,7 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable
|
|||||||
PlayerService?.ClearError();
|
PlayerService?.ClearError();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ToggleMinimized()
|
private async Task ToggleMinimized() => await SetMinimized(!_isMinimized);
|
||||||
{
|
|
||||||
_isMinimized = !_isMinimized;
|
|
||||||
if (OnMinimized.HasDelegate) await OnMinimized.InvokeAsync(_isMinimized);
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task Close()
|
private async Task Close()
|
||||||
{
|
{
|
||||||
@@ -190,11 +194,7 @@ public partial class AudioPlayerBar : ComponentBase, IAsyncDisposable
|
|||||||
await PlayerService.Unload();
|
await PlayerService.Unload();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_isMinimized)
|
await SetMinimized(true);
|
||||||
{
|
|
||||||
_isMinimized = true;
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async ValueTask DisposeAsync()
|
public async ValueTask DisposeAsync()
|
||||||
|
|||||||
Reference in New Issue
Block a user