diff --git a/wasm/channels.go b/wasm/channels.go index 0746c596cfdb7f8e275cb2a96ff3c7937cb73e28..a775928eb820439bdb1a4739d8011b1b952cf7de 100644 --- a/wasm/channels.go +++ b/wasm/channels.go @@ -265,8 +265,7 @@ func GetPublicChannelIdentityFromPrivate(_ js.Value, args []js.Value) any { // - Throws a TypeError if creating the manager fails. func NewChannelsManager(_ js.Value, args []js.Value) any { privateIdentity := utils.CopyBytesToGo(args[1]) - - em := &eventModelBuilder{args[2].Invoke} + em := newEventModelBuilder(args[2]) cm, err := bindings.NewChannelsManager(args[0].Int(), privateIdentity, em) if err != nil { @@ -298,7 +297,7 @@ func NewChannelsManager(_ js.Value, args []js.Value) any { // - Javascript representation of the [ChannelsManager] object. // - Throws a TypeError if loading the manager fails. func LoadChannelsManager(_ js.Value, args []js.Value) any { - em := &eventModelBuilder{args[2].Invoke} + em := newEventModelBuilder(args[2]) cm, err := bindings.LoadChannelsManager(args[0].Int(), args[1].String(), em) if err != nil { utils.Throw(utils.TypeError, err) @@ -1753,6 +1752,12 @@ type eventModelBuilder struct { build func(args ...any) js.Value } +// newEventModelBuilder maps the methods on the Javascript object to a new +// eventModelBuilder. +func newEventModelBuilder(arg js.Value) *eventModelBuilder { + return &eventModelBuilder{build: arg.Invoke} +} + // Build initializes and returns the event model. It wraps a Javascript object // that has all the methods in [bindings.EventModel] to make it adhere to the Go // interface [bindings.EventModel]. diff --git a/wasm/dm.go b/wasm/dm.go index f5d438167ab164d1bc1e2f240ade61a4a785ed29..e3f71e289e9d7153123317fccc9b5b0240676fbd 100644 --- a/wasm/dm.go +++ b/wasm/dm.go @@ -85,8 +85,7 @@ func newDMClientJS(api *bindings.DMClient) map[string]any { // - Throws a TypeError if creating the manager fails. func NewDMClient(_ js.Value, args []js.Value) any { privateIdentity := utils.CopyBytesToGo(args[1]) - - em := &dmReceiverBuilder{args[2].Invoke} + em := newDMReceiverBuilder(args[2]) cm, err := bindings.NewDMClient(args[0].Int(), privateIdentity, em) if err != nil { @@ -570,6 +569,12 @@ type dmReceiverBuilder struct { build func(args ...any) js.Value } +// newDMReceiverBuilder maps the methods on the Javascript object to a new +// dmReceiverBuilder. +func newDMReceiverBuilder(arg js.Value) *dmReceiverBuilder { + return &dmReceiverBuilder{build: arg.Invoke} +} + // Build initializes and returns the event model. It wraps a Javascript object // that has all the methods in [bindings.EventModel] to make it adhere to the Go // interface [bindings.EventModel].