fix(seek): guard HandlePointerLeave with _isSeeking to prevent spurious seek-to-zero on mouse-out

This commit is contained in:
daniel-c-harvey
2026-06-04 19:53:22 -04:00
parent b24c6ff78e
commit dbf02a9426
@@ -10,6 +10,7 @@ namespace DeepDrftPublic.Client.Controls.AudioPlayerBar;
public partial class PlayerSeekZone : ComponentBase public partial class PlayerSeekZone : ComponentBase
{ {
private double _seekPosition; private double _seekPosition;
private bool _isSeeking = false;
[Parameter] public double DisplayTime { get; set; } [Parameter] public double DisplayTime { get; set; }
[Parameter] public double? Duration { get; set; } [Parameter] public double? Duration { get; set; }
@@ -21,18 +22,24 @@ public partial class PlayerSeekZone : ComponentBase
private async Task HandlePointerDown() private async Task HandlePointerDown()
{ {
_isSeeking = true;
_seekPosition = DisplayTime; _seekPosition = DisplayTime;
await OnSeekStart.InvokeAsync(); await OnSeekStart.InvokeAsync();
} }
private async Task HandlePointerUp() private async Task HandlePointerUp()
{ {
_isSeeking = false;
await OnSeekEnd.InvokeAsync(_seekPosition); await OnSeekEnd.InvokeAsync(_seekPosition);
} }
private async Task HandlePointerLeave() private async Task HandlePointerLeave()
{ {
await OnSeekEnd.InvokeAsync(_seekPosition); if (_isSeeking)
{
_isSeeking = false;
await OnSeekEnd.InvokeAsync(_seekPosition);
}
} }
private async Task HandleValueChanged(double value) private async Task HandleValueChanged(double value)