Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,9 @@ protected virtual async ValueTask DisposeAsync(bool disposing)
{
if (_disposed || disposing is false) return;

_pendingDataLoadCancellationTokenSource?.Cancel();
_pendingDataLoadCancellationTokenSource?.Dispose();

_currentPageItemsChanged.Dispose();

try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ private async Task<List<TItem>> LoadMoreItems()
if (ItemsProvider is null || _globalCts is not null) return [];

var items = _currentItems;

if (IsDisposed) return items;

var localCts = new CancellationTokenSource();

_globalCts = localCts;
Expand Down Expand Up @@ -177,6 +180,7 @@ private async Task<List<TItem>> LoadMoreItems()
}

StateHasChanged();

return items;
}

Expand All @@ -203,6 +207,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

if (_globalCts is not null)
{
_globalCts.Cancel();
_globalCts.Dispose();
_globalCts = null;
Comment thread
coderabbitai[bot] marked this conversation as resolved.
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1061,19 +1061,23 @@ private async Task HandleOnPointerDown(bool isNext, bool isHour)
ResetCts();

var cts = _cancellationTokenSource;
await Task.Run(async () =>
try
{
await InvokeAsync(async () =>
await Task.Run(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
await InvokeAsync(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
}
catch (OperationCanceledException) { }
}

private async Task ContinuousChangeTime(bool isNext, bool isHour, CancellationTokenSource cts)
{
if (cts.IsCancellationRequested) return;
if (cts.IsCancellationRequested || IsDisposed) return;

ChangeTime(isNext, isHour);

Expand Down Expand Up @@ -1102,6 +1106,8 @@ private void HandleOnPointerUpOrOut()

private void ResetCts()
{
if (IsDisposed) return;

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
_cancellationTokenSource = new();
Expand Down Expand Up @@ -1195,6 +1201,7 @@ protected override async ValueTask DisposeAsync(bool disposing)
{
if (IsDisposed || disposing is false) return;

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
OnValueChanged -= HandleOnValueChanged;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1462,25 +1462,34 @@ private async Task HandleOnPointerDown(bool isNext, bool isHour)
if (IsEnabled is false) return;

await ChangeTime(isNext, isHour);

if (IsDisposed) return;

ResetCts();

var cts = _cancellationTokenSource;
await Task.Run(async () =>
try
Comment thread
msynk marked this conversation as resolved.
{
await InvokeAsync(async () =>
await Task.Run(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
await InvokeAsync(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
}
catch (OperationCanceledException) { }
}

private async Task ContinuousChangeTime(bool isNext, bool isHour, CancellationTokenSource cts)
{
if (cts.IsCancellationRequested) return;
if (cts.IsCancellationRequested || IsDisposed) return;

await ChangeTime(isNext, isHour);

if (IsDisposed) return;

StateHasChanged();

await Task.Delay(75);
Expand All @@ -1506,6 +1515,8 @@ private void HandleOnPointerUpOrOut()

private void ResetCts()
{
if (IsDisposed) return;

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
_cancellationTokenSource = new();
Expand Down Expand Up @@ -1640,6 +1651,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

await base.DisposeAsync(disposing);

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
OnValueChanged -= HandleOnValueChanged;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1815,25 +1815,34 @@ private async Task HandleOnPointerDown(bool isNext, bool isHour, bool isStartTim
if (IsEnabled is false) return;

await ChangeTime(isNext, isHour, isStartTime);

if (IsDisposed) return;

ResetCts();

var cts = _cancellationTokenSource;
await Task.Run(async () =>
try
{
await InvokeAsync(async () =>
await Task.Run(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, isStartTime, cts);
});
}, cts.Token);
await InvokeAsync(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, isStartTime, cts);
});
}, cts.Token);
}
catch (OperationCanceledException) { }
}

private async Task ContinuousChangeTime(bool isNext, bool isHour, bool isStartTime, CancellationTokenSource cts)
{
if (cts.IsCancellationRequested) return;
if (cts.IsCancellationRequested || IsDisposed) return;

await ChangeTime(isNext, isHour, isStartTime);

if (IsDisposed) return;

StateHasChanged();

await Task.Delay(75);
Expand All @@ -1859,6 +1868,8 @@ private void HandleOnPointerUpOrOut()

private void ResetCts()
{
if (IsDisposed) return;

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
_cancellationTokenSource = new();
Expand Down Expand Up @@ -2195,6 +2206,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

await base.DisposeAsync(disposing);

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
OnValueChanged -= HandleOnValueChanged;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -537,17 +537,24 @@ private async Task HandleOnPointerDown(bool isIncrement)
}

await ChangeValueAndInvokeEvents(isIncrement);

if (IsDisposed) return;

ResetCts();

var cts = _continuousChangeValueCts;
await Task.Run(async () =>
try
{
await InvokeAsync(async () =>
await Task.Run(async () =>
{
await Task.Delay(400);
await ContinuousChangeValue(isIncrement, cts);
});
}, cts.Token);
await InvokeAsync(async () =>
{
await Task.Delay(400);
await ContinuousChangeValue(isIncrement, cts);
});
}, cts.Token);
}
catch (OperationCanceledException) { }
}

private async Task HandleOnPointerUpOrOut()
Expand Down Expand Up @@ -585,10 +592,12 @@ private async Task HandleOnClearButtonClick()

private async Task ContinuousChangeValue(bool isIncrement, CancellationTokenSource cts)
{
if (cts.IsCancellationRequested) return;
if (cts.IsCancellationRequested || IsDisposed) return;

await ChangeValueAndInvokeEvents(isIncrement);

if (IsDisposed) return;

StateHasChanged();

await Task.Delay(75);
Expand Down Expand Up @@ -657,6 +666,8 @@ private void ChangeValue(int factor)

private void ResetCts()
{
if (IsDisposed) return;

_continuousChangeValueCts?.Cancel();
_continuousChangeValueCts?.Dispose();
_continuousChangeValueCts = new();
Expand Down Expand Up @@ -829,6 +840,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

OnValueChanged -= HandleOnValueChanged;

_continuousChangeValueCts?.Cancel();
_continuousChangeValueCts?.Dispose();

await base.DisposeAsync(disposing);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,11 @@ private async Task SearchItems(bool openCallout = true)
_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
_cancellationTokenSource = new();
_viewSuggestedItems = [.. (await SuggestItemsProvider(new(CurrentValue, MaxSuggestCount, _cancellationTokenSource.Token))).Take(MaxSuggestCount)];
try
{
_viewSuggestedItems = [.. (await SuggestItemsProvider(new(CurrentValue, MaxSuggestCount, _cancellationTokenSource.Token))).Take(MaxSuggestCount)];
}
catch (OperationCanceledException) { }
}
else if (SuggestItems is not null)
{
Expand Down Expand Up @@ -659,6 +663,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

await base.DisposeAsync(disposing);

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();

OnValueChanged -= HandleOnValueChanged;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -670,25 +670,34 @@ private async Task HandleOnPointerDown(bool isNext, bool isHour)
if (IsEnabled is false) return;

await ChangeTime(isNext, isHour);

if (IsDisposed) return;

ResetCts();

var cts = _cancellationTokenSource;
await Task.Run(async () =>
try
{
await InvokeAsync(async () =>
await Task.Run(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
await InvokeAsync(async () =>
{
await Task.Delay(400);
await ContinuousChangeTime(isNext, isHour, cts);
});
}, cts.Token);
}
catch (OperationCanceledException) { }
}

private async Task ContinuousChangeTime(bool isNext, bool isHour, CancellationTokenSource cts)
{
if (cts.IsCancellationRequested) return;
if (cts.IsCancellationRequested || IsDisposed) return;

await ChangeTime(isNext, isHour);

if (IsDisposed) return;

StateHasChanged();

await Task.Delay(75);
Expand All @@ -714,6 +723,8 @@ private void HandleOnPointerUpOrOut()

private void ResetCts()
{
if (IsDisposed) return;

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
_cancellationTokenSource = new();
Expand Down Expand Up @@ -753,6 +764,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

await base.DisposeAsync(disposing);

_cancellationTokenSource?.Cancel();
_cancellationTokenSource?.Dispose();
OnValueChanged -= HandleOnValueChanged;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@

@if (LoadMore && _loadMoreFinished is false)
{
<button @onclick="() => PerformLoadMore(false)"
<button @onclick="() => LoadMoreItems(false)"
style="@Styles?.LoadMoreButton"
class="bit-bsl-lmb @Classes?.LoadMoreButton">
@if (LoadMoreTemplate is not null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ protected override async Task OnParametersSetAsync()

if (LoadMore)
{
await PerformLoadMore(true);
await LoadMoreItems(true);
}
}
}
Expand All @@ -189,15 +189,15 @@ protected override async Task OnParametersSetAsync()

if (LoadMore && ItemsProvider is not null)
{
await PerformLoadMore(true);
await LoadMoreItems(true);
}
}

await base.OnParametersSetAsync();
}


private async Task PerformLoadMore(bool reset)
private async Task LoadMoreItems(bool reset)
{
if (reset)
{
Comment thread
msynk marked this conversation as resolved.
Expand All @@ -208,7 +208,10 @@ private async Task PerformLoadMore(bool reset)

if (LoadMore is false || _globalCts is not null) return;

if (IsDisposed) return;

var localCts = new CancellationTokenSource();

_globalCts = localCts;

try
Expand Down Expand Up @@ -277,6 +280,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

if (_globalCts is not null)
{
_globalCts.Cancel();
_globalCts.Dispose();
_globalCts = null;
Comment thread
msynk marked this conversation as resolved.
}
Expand Down
Loading
Loading