Merge pull request #5075 from mdmontesinos/dev

fix #5074: generate cancellation token for file upload
This commit is contained in:
Shaun Walker 2025-02-07 07:53:16 -05:00 committed by GitHub
commit 12470ab178
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 3 deletions

View File

@ -362,6 +362,8 @@
} }
if (restricted == "") if (restricted == "")
{ {
CancellationTokenSource tokenSource = new CancellationTokenSource();
try try
{ {
// upload the files // upload the files
@ -394,7 +396,7 @@
} }
// upload files // upload files
var success = await interop.UploadFiles(posturl, folder, _guid, SiteState.AntiForgeryToken, jwt, chunksize); var success = await interop.UploadFiles(posturl, folder, _guid, SiteState.AntiForgeryToken, jwt, chunksize, tokenSource.Token);
// reset progress indicators // reset progress indicators
if (ShowProgress) if (ShowProgress)
@ -449,6 +451,10 @@
_message = Localizer["Error.File.Upload"]; _message = Localizer["Error.File.Upload"];
_messagetype = MessageType.Error; _messagetype = MessageType.Error;
_uploading = false; _uploading = false;
await tokenSource.CancelAsync();
}
finally {
tokenSource.Dispose();
} }
} }

View File

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using System.Text.Json; using System.Text.Json;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
namespace Oqtane.UI namespace Oqtane.UI
{ {
@ -214,12 +215,12 @@ namespace Oqtane.UI
return Task.CompletedTask; return Task.CompletedTask;
} }
public ValueTask<bool> UploadFiles(string posturl, string folder, string id, string antiforgerytoken, string jwt, int chunksize) public ValueTask<bool> UploadFiles(string posturl, string folder, string id, string antiforgerytoken, string jwt, int chunksize, CancellationToken cancellationToken = default)
{ {
try try
{ {
return _jsRuntime.InvokeAsync<bool>( return _jsRuntime.InvokeAsync<bool>(
"Oqtane.Interop.uploadFiles", "Oqtane.Interop.uploadFiles", cancellationToken,
posturl, folder, id, antiforgerytoken, jwt, chunksize); posturl, folder, id, antiforgerytoken, jwt, chunksize);
} }
catch catch