Skip to content

Commit

Permalink
Fixed that Firefox does not support null for optional callback argume…
Browse files Browse the repository at this point in the history
…nts.
  • Loading branch information
KristofferStrube committed Jul 30, 2024
1 parent 3e33bf3 commit 1912c07
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
3 changes: 2 additions & 1 deletion src/KristofferStrube.Blazor.WebAudio/BaseAudioContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -387,10 +387,11 @@ public async Task<AudioBuffer> DecodeAudioDataAsync(
Func<AudioBuffer, Task>? successCallback = null,
Func<DOMException, Task>? errorCallback = null)
{
IJSObjectReference helper = new ErrorHandlingJSObjectReference(JSRuntime, await webAudioHelperTask.Value);
ErrorHandlingJSObjectReference helper = new(JSRuntime, await webAudioHelperTask.Value);

using DotNetObjectReference<DecodeSuccessCallback>? successCallbackObjRef = successCallback is null ? null : DotNetObjectReference.Create(new DecodeSuccessCallback(JSRuntime, successCallback));
using DotNetObjectReference<DecodeErrorCallback>? errorCallbackObjRef = errorCallback is null ? null : DotNetObjectReference.Create(new DecodeErrorCallback(JSRuntime, errorCallback));

IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("decodeAudioData", JSReference, audioData, successCallbackObjRef, errorCallbackObjRef);

return await AudioBuffer.CreateAsync(JSRuntime, jSInstance, new() { DisposesJSReference = true });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,10 @@ export function constructOfflineAudioCompletionEvent(type, eventInitDict) {
}

export async function decodeAudioData(audioContext, audioData, successCallbackObjRef, errorCallbackObjRef) {
let successCallback = successCallbackObjRef == null ? null : async (decodedData) => await successCallbackObjRef.invokeMethodAsync('Invoke', DotNet.createJSObjectReference(decodedData));
let errorCallback = errorCallbackObjRef == null ? null : async (error) => await errorCallbackObjRef.invokeMethodAsync('Invoke', DOMExceptionInformation(error));
return audioContext.decodeAudioData(audioData, successCallback, errorCallback)
let successCallback = successCallbackObjRef == null ? () => { } : async (decodedData) => await successCallbackObjRef.invokeMethodAsync('Invoke', DotNet.createJSObjectReference(decodedData));
let errorCallback = errorCallbackObjRef == null ? () => { } : async (error) => await errorCallbackObjRef.invokeMethodAsync('Invoke', DOMExceptionInformation(error));

return audioContext.decodeAudioData(audioData, successCallback, errorCallback);
}

function DOMExceptionInformation(error) {
Expand Down

0 comments on commit 1912c07

Please sign in to comment.