Console: BugFix SYIOS-83 - When uploading an image, the bubble order jumps around

Keep our own timestamp clientside and ignore what the server says for uploaded attachments. The actual timestamp is considered in case of room history refresh.
This commit is contained in:
giomfo 2015-02-18 17:06:53 +01:00
parent f308f5bbb7
commit 9b91742ed9

View file

@ -724,7 +724,17 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
[self removeMessage:message];
}
} else {
[self removeMessage:message];
// Workaround: in case of attachment, we keep our own timestamp and ignore server timestamp to prevent messages jump
RoomMessageComponent *component = [message componentWithEventId:event.eventId];
event.originServerTs = component.event.originServerTs;
RoomMessage *aNewMessage = [[RoomMessage alloc] initWithEvent:event andRoomState:roomStateCpy];
if (aNewMessage) {
[self replaceMessage:message withMessage:aNewMessage];
} else {
// Ignore unsupported/unexpected events
[self removeMessage:message];
}
isHandled = YES;
}
} else {
// Here the received event id has not been found in current messages list.
@ -747,7 +757,17 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
[self removeMessage:message];
}
} else {
[self removeMessage:message];
// Workaround: in case of attachment, we keep our own timestamp and ignore server timestamp to prevent messages jump
RoomMessageComponent *component = [message componentWithEventId:pendingEvent.eventId];
event.originServerTs = component.event.originServerTs;
RoomMessage *aNewMessage = [[RoomMessage alloc] initWithEvent:event andRoomState:roomStateCpy];
if (aNewMessage) {
[self replaceMessage:message withMessage:aNewMessage];
} else {
// Ignore unsupported/unexpected events
[self removeMessage:message];
}
isHandled = YES;
}
}
}
@ -2108,11 +2128,11 @@ NSString *const kCmdResetUserPowerLevel = @"/deop";
// Release here resources, and restore reusable cells
// Check table view members vs messages
if (tableView == self.membersTableView) {
if ([cell isKindOfClass:[RoomMemberTableCell class]]) {
RoomMemberTableCell *memberCell = (RoomMemberTableCell*)cell;
// Stop potential timer used to refresh member's presence
[memberCell setRoomMember:nil withRoom:nil];
} else if (tableView == self.messagesTableView) {
} else if ([cell isKindOfClass:[RoomMessageTableCell class]]) {
RoomMessageTableCell *msgCell = (RoomMessageTableCell*)cell;
if ([cell isKindOfClass:[OutgoingMessageTableCell class]]) {
OutgoingMessageTableCell *outgoingMsgCell = (OutgoingMessageTableCell*)cell;