Fix resending messages reusing an existing transaction id
This commit is contained in:
parent
bbd5749aec
commit
2796ca613a
|
@ -319,11 +319,11 @@ class Event extends MatrixEvent {
|
||||||
if (status != -1) return null;
|
if (status != -1) return null;
|
||||||
// we do not remove the event here. It will automatically be updated
|
// we do not remove the event here. It will automatically be updated
|
||||||
// in the `sendEvent` method to transition -1 -> 0 -> 1 -> 2
|
// in the `sendEvent` method to transition -1 -> 0 -> 1 -> 2
|
||||||
final eventID = await room.sendEvent(
|
final newEventId = await room.sendEvent(
|
||||||
content,
|
content,
|
||||||
txid: txid ?? unsigned['transaction_id'],
|
txid: txid ?? unsigned['transaction_id'] ?? eventId,
|
||||||
);
|
);
|
||||||
return eventID;
|
return newEventId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Whether the client is allowed to redact this event.
|
/// Whether the client is allowed to redact this event.
|
||||||
|
|
|
@ -691,7 +691,10 @@ class Room {
|
||||||
..eventId = messageID
|
..eventId = messageID
|
||||||
..senderId = client.userID
|
..senderId = client.userID
|
||||||
..originServerTs = DateTime.now()
|
..originServerTs = DateTime.now()
|
||||||
..unsigned = {MessageSendingStatusKey: 0},
|
..unsigned = {
|
||||||
|
MessageSendingStatusKey: 0,
|
||||||
|
'transaction_id': messageID,
|
||||||
|
},
|
||||||
]))));
|
]))));
|
||||||
await client.handleSync(syncUpdate);
|
await client.handleSync(syncUpdate);
|
||||||
|
|
||||||
|
@ -709,8 +712,6 @@ class Room {
|
||||||
);
|
);
|
||||||
syncUpdate.rooms.join.values.first.timeline.events.first
|
syncUpdate.rooms.join.values.first.timeline.events.first
|
||||||
.unsigned[MessageSendingStatusKey] = 1;
|
.unsigned[MessageSendingStatusKey] = 1;
|
||||||
syncUpdate.rooms.join.values.first.timeline.events.first
|
|
||||||
.unsigned['transaction_id'] = messageID;
|
|
||||||
syncUpdate.rooms.join.values.first.timeline.events.first.eventId = res;
|
syncUpdate.rooms.join.values.first.timeline.events.first.eventId = res;
|
||||||
await client.handleSync(syncUpdate);
|
await client.handleSync(syncUpdate);
|
||||||
return res;
|
return res;
|
||||||
|
|
Loading…
Reference in a new issue