Fix edge case with sent indicator being drawn when it shouldn't be (#11320)
* Fix edge case with sent indicator being drawn when it shouldn't be * Comment
This commit is contained in:
parent
22f83e7917
commit
3ab0757604
3 changed files with 48 additions and 11 deletions
|
@ -633,7 +633,7 @@ export default class MessagePanel extends React.Component<IProps, IState> {
|
|||
|
||||
const userId = MatrixClientPeg.safeGet().getSafeUserId();
|
||||
|
||||
let foundLastSuccessfulWeSent = false;
|
||||
let foundLastSuccessfulEvent = false;
|
||||
let lastShownNonLocalEchoIndex = -1;
|
||||
// Find the indices of the last successful event we sent and the last non-local-echo events shown
|
||||
for (let i = events.length - 1; i >= 0; i--) {
|
||||
|
@ -646,16 +646,21 @@ export default class MessagePanel extends React.Component<IProps, IState> {
|
|||
lastShownEvent = event;
|
||||
}
|
||||
|
||||
if (!foundLastSuccessfulWeSent && this.isSentState(event) && isEligibleForSpecialReceipt(event, userId)) {
|
||||
events[i].lastSuccessfulWeSent = true;
|
||||
foundLastSuccessfulWeSent = true;
|
||||
if (!foundLastSuccessfulEvent && this.isSentState(event) && isEligibleForSpecialReceipt(event)) {
|
||||
foundLastSuccessfulEvent = true;
|
||||
// If we are not sender of this last successful event eligible for special receipt then we stop here
|
||||
// As we do not want to render our sent receipt if there are more receipts below it and events sent
|
||||
// by other users get a synthetic read receipt for their sent events.
|
||||
if (event.getSender() === userId) {
|
||||
events[i].lastSuccessfulWeSent = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (lastShownNonLocalEchoIndex < 0 && !event.status) {
|
||||
lastShownNonLocalEchoIndex = i;
|
||||
}
|
||||
|
||||
if (lastShownNonLocalEchoIndex >= 0 && foundLastSuccessfulWeSent) {
|
||||
if (lastShownNonLocalEchoIndex >= 0 && foundLastSuccessfulEvent) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue