Skip to content
Snippets Groups Projects
Commit b4f099f9 authored by Jono Wenger's avatar Jono Wenger
Browse files

Wrap calls that start indexedDb with a promise to make them async

parent 99168c7c
No related branches found
No related tags found
1 merge request!60Revert "Fail a test to be sure it works"
......@@ -92,25 +92,27 @@ func NewChannelsManager(_ js.Value, args []js.Value) interface{} {
// retrieved using [UserDiscovery.GetID].
// - args[2] - username (string).
//
// Returns:
// - Javascript representation of the [bindings.ChannelsManager] object.
// - Throws a TypeError if initialising indexedDb or created the new channel
// manager fails.
// Returns a promise:
// - Resolves to a Javascript representation of the [bindings.ChannelsManager]
// object.
// - Rejected with an error if loading indexedDb or the manager fails.
func NewChannelsManagerWithIndexedDb(_ js.Value, args []js.Value) interface{} {
promiseFn := func(resolve, reject func(args ...interface{}) js.Value) {
em, err := indexedDb.NewWasmEventModel(args[2].String())
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
reject(utils.JsTrace(err))
}
cm, err := bindings.NewChannelsManagerGoEventModel(
args[0].Int(), args[1].Int(), em)
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
reject(utils.JsTrace(err))
} else {
resolve(newChannelsManagerJS(cm))
}
}
return newChannelsManagerJS(cm)
return utils.CreatePromise(promiseFn)
}
// NewChannelsManagerWithIndexedDbDummyNameService constructs a
......@@ -124,25 +126,27 @@ func NewChannelsManagerWithIndexedDb(_ js.Value, args []js.Value) interface{} {
// using [Cmix.GetID].
// - args[1] - Username (string).
//
// Returns:
// - Javascript representation of the [bindings.ChannelsManager] object.
// - Throws a TypeError if initialising indexedDb or created the new channel
// manager fails.
// Returns a promise:
// - Resolves to a Javascript representation of the [bindings.ChannelsManager]
// object.
// - Rejected with an error if loading indexedDb or the manager fails.
func NewChannelsManagerWithIndexedDbDummyNameService(_ js.Value, args []js.Value) interface{} {
promiseFn := func(resolve, reject func(args ...interface{}) js.Value) {
em, err := indexedDb.NewWasmEventModel(args[1].String())
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
reject(utils.JsTrace(err))
}
cm, err := bindings.NewChannelsManagerGoEventModelDummyNameService(
args[0].Int(), args[1].String(), em)
if err != nil {
utils.Throw(utils.TypeError, err)
return nil
reject(utils.JsTrace(err))
} else {
resolve(newChannelsManagerJS(cm))
}
}
return newChannelsManagerJS(cm)
return utils.CreatePromise(promiseFn)
}
// NewChannelsManagerDummyNameService constructs a [ChannelsManager]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment