mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Merge pull request #1929 from vector-im/duplicate_read_receipt
RoomVC: Fix duplication of read receipts
This commit is contained in:
commit
64d33b8d19
2 changed files with 12 additions and 21 deletions
|
@ -1,3 +1,11 @@
|
|||
Changes in 0.6.19 (2018-07-04)
|
||||
===============================================
|
||||
|
||||
Improvements:
|
||||
|
||||
Bug fix:
|
||||
* RoomVC: Fix duplicated read receipts (regression due to read receipts performance improvement).
|
||||
|
||||
Changes in 0.6.18 (2018-07-03)
|
||||
===============================================
|
||||
|
||||
|
|
|
@ -103,26 +103,23 @@
|
|||
// new read receipt.
|
||||
// To implement it, we need to find the sender id of each new read receipt
|
||||
// among the read receipts array of all events in all bubbles.
|
||||
NSMutableArray *readReceiptSenders = [receiptEvent.readReceiptSenders mutableCopy];
|
||||
NSArray *readReceiptSenders = receiptEvent.readReceiptSenders;
|
||||
|
||||
@synchronized(bubbles)
|
||||
{
|
||||
NSMutableDictionary<NSString* /* eventId */, NSArray<MXReceiptData*> *> *updatedCellDataReadReceipts = [NSMutableDictionary dictionary];
|
||||
for (RoomBubbleCellData *cellData in bubbles)
|
||||
{
|
||||
NSMutableDictionary<NSString* /* eventId */, NSArray<MXReceiptData*> *> *updatedCellDataReadReceipts = [NSMutableDictionary dictionary];
|
||||
|
||||
for (NSString *eventId in cellData.readReceipts)
|
||||
{
|
||||
for (MXReceiptData *receiptData in cellData.readReceipts[eventId])
|
||||
{
|
||||
NSMutableArray *foundSenders = [NSMutableArray array];
|
||||
for (NSString *senderId in readReceiptSenders)
|
||||
{
|
||||
if ([receiptData.userId isEqualToString:senderId])
|
||||
{
|
||||
// We find an existing displayed receipt, remove it
|
||||
[foundSenders addObject:senderId];
|
||||
|
||||
if (!updatedCellDataReadReceipts[eventId])
|
||||
if (!updatedCellDataReadReceipts[eventId])
|
||||
{
|
||||
updatedCellDataReadReceipts[eventId] = cellData.readReceipts[eventId];
|
||||
}
|
||||
|
@ -133,14 +130,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
// As there is one (the last) read receipt displayed per user,
|
||||
// we do not need to search for other read receipts of found users.
|
||||
[readReceiptSenders removeObjectsInArray:foundSenders];
|
||||
if (!readReceiptSenders.count)
|
||||
{
|
||||
// All senders have been found
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -156,12 +145,6 @@
|
|||
cellData.readReceipts[eventId] = nil;
|
||||
}
|
||||
}
|
||||
|
||||
if (!readReceiptSenders.count)
|
||||
{
|
||||
// All senders have been found
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue