diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index dfd2f6dd463ee1129a75961d002b7f220ee49b02..db8160cff9d122b5f25b93ad6d79e41f3e0fe7c5 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - + - 6.11.24 + 6.11.25 diff --git a/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs b/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs index 8a5c814fe59f13741d99bcaed0576a6ca400dc6a..de4121ad4a21ba5d3218b6dc2d322a7355544225 100644 --- a/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs +++ b/src/BootstrapBlazor/Components/BaseComponents/BootstrapModuleComponentBase.cs @@ -125,26 +125,88 @@ public abstract class BootstrapModuleComponentBase : IdComponentBase, IAsyncDisp /// /// /// - protected Task InvokeInitAsync(params object?[]? args) => InvokeAsync("init", args); + protected Task InvokeInitAsync(params object?[]? args) => InvokeVoidAsync("init", args); /// /// call javascript execute method /// /// /// - protected Task InvokeExecuteAsync(params object?[]? args) => InvokeAsync("execute", args); + protected Task InvokeExecuteAsync(params object?[]? args) => InvokeVoidAsync("execute", args); /// /// call javascript method /// - /// + /// /// /// - protected async Task InvokeAsync(string func, params object?[]? args) + protected Task InvokeVoidAsync(string identifier, params object?[]? args) => InvokeVoidAsync(identifier, CancellationToken.None, args); + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeVoidAsync(string identifier, TimeSpan timeout, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeVoidAsync($"{ModuleName}.{identifier}", timeout, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeVoidAsync(string identifier, CancellationToken cancellationToken = default, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeVoidAsync($"{ModuleName}.{identifier}", cancellationToken, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + protected Task InvokeAsync(string identifier, params object?[]? args) => InvokeAsync(identifier, CancellationToken.None, args); + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeAsync(string identifier, TimeSpan timeout, params object?[]? args) + { + if (Module != null) + { + await Module.InvokeAsync($"{ModuleName}.{identifier}", timeout, args); + } + } + + /// + /// call javascript method + /// + /// + /// + /// + /// + protected async Task InvokeAsync(string identifier, CancellationToken cancellationToken = default, params object?[]? args) { if (Module != null) { - await Module.InvokeVoidAsync($"{ModuleName}.{func}", args); + await Module.InvokeAsync($"{ModuleName}.{identifier}", cancellationToken, args); } } diff --git a/src/BootstrapBlazor/Utils/JSModule.cs b/src/BootstrapBlazor/Utils/JSModule.cs index dd5b290774fdfa4b22087a9bcc51f14ca0155df0..14bcf1540611c4a07f35e61e1a2b6420983ec92a 100644 --- a/src/BootstrapBlazor/Utils/JSModule.cs +++ b/src/BootstrapBlazor/Utils/JSModule.cs @@ -39,10 +39,11 @@ public class JSModule : IAsyncDisposable /// /// /// - public virtual ValueTask InvokeVoidAsync(string identifier, TimeSpan timeout = default, params object?[]? args) + public virtual ValueTask InvokeVoidAsync(string identifier, TimeSpan timeout, params object?[]? args) { - var cancellationTokenSource = new CancellationTokenSource(timeout); - return InvokeVoidAsync(identifier, cancellationTokenSource.Token, args); + using CancellationTokenSource? cancellationTokenSource = ((timeout == Timeout.InfiniteTimeSpan) ? null : new CancellationTokenSource(timeout)); + CancellationToken cancellationToken = cancellationTokenSource?.Token ?? CancellationToken.None; + return InvokeVoidAsync(identifier, cancellationToken, args); } /// @@ -96,10 +97,11 @@ public class JSModule : IAsyncDisposable /// /// /// - public virtual ValueTask InvokeAsync(string identifier, TimeSpan timeout = default, params object?[]? args) + public virtual ValueTask InvokeAsync(string identifier, TimeSpan timeout, params object?[]? args) { - var cancellationTokenSource = new CancellationTokenSource(timeout); - return InvokeAsync(identifier, cancellationTokenSource.Token, args); + using CancellationTokenSource? cancellationTokenSource = ((timeout == Timeout.InfiniteTimeSpan) ? null : new CancellationTokenSource(timeout)); + CancellationToken cancellationToken = cancellationTokenSource?.Token ?? CancellationToken.None; + return InvokeAsync(identifier, cancellationToken, args); } ///