Skip to content

Commit 1912c07

Browse files
Fixed that Firefox does not support null for optional callback arguments.
1 parent 3e33bf3 commit 1912c07

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/KristofferStrube.Blazor.WebAudio/BaseAudioContext.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,11 @@ public async Task<AudioBuffer> DecodeAudioDataAsync(
387387
Func<AudioBuffer, Task>? successCallback = null,
388388
Func<DOMException, Task>? errorCallback = null)
389389
{
390-
IJSObjectReference helper = new ErrorHandlingJSObjectReference(JSRuntime, await webAudioHelperTask.Value);
390+
ErrorHandlingJSObjectReference helper = new(JSRuntime, await webAudioHelperTask.Value);
391391

392392
using DotNetObjectReference<DecodeSuccessCallback>? successCallbackObjRef = successCallback is null ? null : DotNetObjectReference.Create(new DecodeSuccessCallback(JSRuntime, successCallback));
393393
using DotNetObjectReference<DecodeErrorCallback>? errorCallbackObjRef = errorCallback is null ? null : DotNetObjectReference.Create(new DecodeErrorCallback(JSRuntime, errorCallback));
394+
394395
IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("decodeAudioData", JSReference, audioData, successCallbackObjRef, errorCallbackObjRef);
395396

396397
return await AudioBuffer.CreateAsync(JSRuntime, jSInstance, new() { DisposesJSReference = true });

src/KristofferStrube.Blazor.WebAudio/wwwroot/KristofferStrube.Blazor.WebAudio.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,10 @@ export function constructOfflineAudioCompletionEvent(type, eventInitDict) {
8787
}
8888

8989
export async function decodeAudioData(audioContext, audioData, successCallbackObjRef, errorCallbackObjRef) {
90-
let successCallback = successCallbackObjRef == null ? null : async (decodedData) => await successCallbackObjRef.invokeMethodAsync('Invoke', DotNet.createJSObjectReference(decodedData));
91-
let errorCallback = errorCallbackObjRef == null ? null : async (error) => await errorCallbackObjRef.invokeMethodAsync('Invoke', DOMExceptionInformation(error));
92-
return audioContext.decodeAudioData(audioData, successCallback, errorCallback)
90+
let successCallback = successCallbackObjRef == null ? () => { } : async (decodedData) => await successCallbackObjRef.invokeMethodAsync('Invoke', DotNet.createJSObjectReference(decodedData));
91+
let errorCallback = errorCallbackObjRef == null ? () => { } : async (error) => await errorCallbackObjRef.invokeMethodAsync('Invoke', DOMExceptionInformation(error));
92+
93+
return audioContext.decodeAudioData(audioData, successCallback, errorCallback);
9394
}
9495

9596
function DOMExceptionInformation(error) {

0 commit comments

Comments
 (0)