diff --git a/indexedDb/implementation.go b/indexedDb/implementation.go
index 0b7236429b84ea237553cd667a2928464ac612ef..0d536811cc3677f12f23090296ceb6427bda17a1 100644
--- a/indexedDb/implementation.go
+++ b/indexedDb/implementation.go
@@ -167,7 +167,7 @@ func (w *wasmModel) ReceiveMessage(channelID *id.ID,
 	if !messageID.Equals(cryptoChannel.MessageID{}) {
 		jww.DEBUG.Printf("non-empty messageID detected")
 		uuid, err := w.msgIDLookup(messageID)
-		if err != nil {
+		if err == nil {
 			jww.DEBUG.Printf("MessageID found: %d", uuid)
 			// message is already in the database, no
 			// insert necessary
@@ -241,7 +241,7 @@ func (w *wasmModel) ReceiveReaction(channelID *id.ID,
 	// receives their own message from the mixnet.
 	if !messageID.Equals(cryptoChannel.MessageID{}) {
 		uuid, err := w.msgIDLookup(messageID)
-		if err != nil {
+		if err == nil {
 			// message is already in the database, no insert necessary
 			return uuid
 		}
diff --git a/indexedDb/implementation_test.go b/indexedDb/implementation_test.go
index f47117f7171ce9851b05a5017745c3b4651370c8..e76b2737aef2b3f854d12b7c319f0c8b86e6e375 100644
--- a/indexedDb/implementation_test.go
+++ b/indexedDb/implementation_test.go
@@ -126,7 +126,7 @@ func TestWasmModel_JoinChannel_LeaveChannel(t *testing.T) {
 	}
 }
 
-// Test wasmModel.UpdateSentStatus happy path and ensure fields don't change.
+// Test UUID gets returned when different messages are added
 func TestWasmModel_UUIDTest(t *testing.T) {
 	testString := "testHello"
 	eventModel, err := newWASMModel(testString, dummyCallback)
@@ -167,3 +167,46 @@ func TestWasmModel_UUIDTest(t *testing.T) {
 		}
 	}
 }
+
+// TestWasmModel_DuplicateReceives tests if the same message ID being sent
+// always returns the same uuid
+func TestWasmModel_DuplicateReceives(t *testing.T) {
+	testString := "testHello"
+	eventModel, err := newWASMModel(testString, dummyCallback)
+	if err != nil {
+		t.Fatalf("%+v", err)
+	}
+
+	cid := channel.Identity{
+		Codename:       "codename123",
+		PubKey:         []byte{8, 6, 7, 5},
+		Color:          "#FFFFFF",
+		Extension:      "gif",
+		CodesetVersion: 0,
+	}
+
+	uuids := make([]uint64, 10)
+
+	msgID := channel.MessageID{}
+	copy(msgID[:], testString)
+	for i := 0; i < 10; i++ {
+		// Store a test message
+		channelID := id.NewIdFromBytes([]byte(testString), t)
+		rnd := rounds.Round{ID: id.Round(42)}
+		uuid := eventModel.ReceiveMessage(channelID, msgID,
+			"test", testString+fmt.Sprintf("%d", i), cid, time.Now(),
+			time.Hour, rnd, 0, channels.Sent)
+		uuids[i] = uuid
+	}
+
+	_, _ = eventModel.dump(messageStoreName)
+
+	for i := 0; i < 10; i++ {
+		for j := i + 1; j < 10; j++ {
+			if uuids[i] != uuids[j] {
+				t.Fatalf("uuid failed: %d[%d] != %d[%d]",
+					uuids[i], i, uuids[j], j)
+			}
+		}
+	}
+}