diff --git a/indexedDb/channels/implementation.go b/indexedDb/channels/implementation.go index cf64d77f6dc3a492990110061e5d76b0ac8e4cf4..6bb3916f1e63de93f894532427e18efde93fb9ed 100644 --- a/indexedDb/channels/implementation.go +++ b/indexedDb/channels/implementation.go @@ -377,18 +377,14 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64, } // Store message to database - addReq, err := indexedDb.Put(w.db, messageStoreName, messageObj) + result, err := indexedDb.Put(w.db, messageStoreName, messageObj) if err != nil { return 0, errors.Errorf("Unable to put Message: %+v", err) } - res, err := addReq.Result() - if err != nil { - return 0, errors.Errorf("Unable to get Message result: %+v", err) - } // NOTE: Sometimes the insert fails to return an error but hits a duplicate // insert, so this fallthrough returns the UUID entry in that case. - if res.IsUndefined() { + if result.IsUndefined() { msgID := message.ID{} copy(msgID[:], newMessage.MessageID) uuid, errLookup := w.msgIDLookup(msgID) @@ -397,7 +393,7 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64, } return 0, errors.Errorf("uuid lookup failure: %+v", err) } - uuid := uint64(res.Int()) + uuid := uint64(result.Int()) jww.DEBUG.Printf("Successfully stored message %d", uuid) return uuid, nil diff --git a/indexedDb/dm/implementation.go b/indexedDb/dm/implementation.go index 6324aecfa8d38e463496e95213b5dba89b9e18ab..0b5e812dc731b6afd1187c58f7c997f4326babfe 100644 --- a/indexedDb/dm/implementation.go +++ b/indexedDb/dm/implementation.go @@ -341,18 +341,14 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64, } // Store message to database - addReq, err := indexedDb.Put(w.db, messageStoreName, messageObj) + result, err := indexedDb.Put(w.db, messageStoreName, messageObj) if err != nil { return 0, errors.Errorf("Unable to put Message: %+v", err) } - res, err := addReq.Result() - if err != nil { - return 0, errors.Errorf("Unable to get Message result: %+v", err) - } // NOTE: Sometimes the insert fails to return an error but hits a duplicate // insert, so this fallthrough returns the UUID entry in that case. - if res.IsUndefined() { + if result.IsUndefined() { msgID := message.ID{} copy(msgID[:], newMessage.MessageID) uuid, errLookup := w.msgIDLookup(msgID) @@ -361,7 +357,7 @@ func (w *wasmModel) receiveHelper(newMessage *Message, isUpdate bool) (uint64, } return 0, errors.Errorf("uuid lookup failure: %+v", err) } - uuid := uint64(res.Int()) + uuid := uint64(result.Int()) jww.DEBUG.Printf("Successfully stored message %d", uuid) return uuid, nil diff --git a/indexedDb/utils.go b/indexedDb/utils.go index a8e7fd8e528a185cef11f65baa351bc602a9a745..5af14e999a3d7f073ba820a69e842593bd49aab1 100644 --- a/indexedDb/utils.go +++ b/indexedDb/utils.go @@ -127,33 +127,33 @@ func GetIndex(db *idb.Database, objectStoreName string, // Put is a generic helper for putting values into the given [idb.ObjectStore]. // Equivalent to insert if not exists else update. -func Put(db *idb.Database, objectStoreName string, value js.Value) (*idb.Request, error) { +func Put(db *idb.Database, objectStoreName string, value js.Value) (js.Value, error) { // Prepare the Transaction txn, err := db.Transaction(idb.TransactionReadWrite, objectStoreName) if err != nil { - return nil, errors.Errorf("Unable to create Transaction: %+v", err) + return js.Undefined(), errors.Errorf("Unable to create Transaction: %+v", err) } store, err := txn.ObjectStore(objectStoreName) if err != nil { - return nil, errors.Errorf("Unable to get ObjectStore: %+v", err) + return js.Undefined(), errors.Errorf("Unable to get ObjectStore: %+v", err) } // Perform the operation request, err := store.Put(value) if err != nil { - return nil, errors.Errorf("Unable to Put: %+v", err) + return js.Undefined(), errors.Errorf("Unable to Put: %+v", err) } // Wait for the operation to return ctx, cancel := NewContext() - err = txn.Await(ctx) + result, err := request.Await(ctx) cancel() if err != nil { - return nil, errors.Errorf("Putting value failed: %+v", err) + return js.Undefined(), errors.Errorf("Putting value failed: %+v", err) } jww.DEBUG.Printf("Successfully put value in %s: %v", objectStoreName, utils.JsToJson(value)) - return request, nil + return result, nil } // Delete is a generic helper for removing values from the given [idb.ObjectStore].