mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Merge branch 'charlesmchen/unreadIndicatorAssert'
This commit is contained in:
commit
8b93c4aa2c
|
@ -137,7 +137,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
dbConnection:(YapDatabaseConnection *)dbConnection
|
||||
hideUnreadMessagesIndicator:(BOOL)hideUnreadMessagesIndicator
|
||||
firstUnseenInteractionTimestamp:
|
||||
(nullable NSNumber *)firstUnseenInteractionTimestampParam
|
||||
(nullable NSNumber *)firstUnseenInteractionTimestampParameter
|
||||
maxRangeSize:(int)maxRangeSize
|
||||
{
|
||||
OWSAssert(thread);
|
||||
|
@ -232,43 +232,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
// have been marked as read.
|
||||
//
|
||||
// IFF this variable is non-null, there are unseen messages in the thread.
|
||||
//
|
||||
// Make a local copy of this parameter that we can modify.
|
||||
NSNumber *_Nullable firstUnseenInteractionTimestampParameter = firstUnseenInteractionTimestampParam;
|
||||
if (firstUnseenInteractionTimestampParameter) {
|
||||
// Due to disappearing messages or manual deletion,
|
||||
// firstUnseenInteractionTimestampParameter may refer to an obsolete
|
||||
// interaction in which case we want to discard it.
|
||||
//
|
||||
// Therefore, we should discard the existing unread indicator
|
||||
// position if there are no "unreadable" messages after it.
|
||||
__block TSInteraction *lastCallOrMessage = nil;
|
||||
[[transaction ext:TSMessageDatabaseViewExtensionName]
|
||||
enumerateRowsInGroup:thread.uniqueId
|
||||
withOptions:NSEnumerationReverse
|
||||
usingBlock:^(NSString *collection,
|
||||
NSString *key,
|
||||
id object,
|
||||
id metadata,
|
||||
NSUInteger index,
|
||||
BOOL *stop) {
|
||||
|
||||
OWSAssert([object isKindOfClass:[TSInteraction class]]);
|
||||
|
||||
if ([object isKindOfClass:[TSIncomingMessage class]] ||
|
||||
[object isKindOfClass:[TSOutgoingMessage class]] ||
|
||||
[object isKindOfClass:[TSCall class]]) {
|
||||
lastCallOrMessage = object;
|
||||
*stop = YES;
|
||||
}
|
||||
if ([object isKindOfClass:[TSUnreadIndicatorInteraction class]]) {
|
||||
*stop = YES;
|
||||
}
|
||||
}];
|
||||
if (!lastCallOrMessage) {
|
||||
firstUnseenInteractionTimestampParameter = nil;
|
||||
}
|
||||
}
|
||||
if (firstUnseenInteractionTimestampParameter) {
|
||||
result.firstUnseenInteractionTimestamp = firstUnseenInteractionTimestampParameter;
|
||||
} else {
|
||||
|
@ -353,9 +316,12 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
}
|
||||
}];
|
||||
|
||||
OWSAssert(interactionAfterUnreadIndicator);
|
||||
|
||||
if (result.hasMoreUnseenMessages) {
|
||||
if (!interactionAfterUnreadIndicator) {
|
||||
// If we can't find an interaction after the unread indicator,
|
||||
// remove it. All unread messages may have been deleted or
|
||||
// expired.
|
||||
result.firstUnseenInteractionTimestamp = nil;
|
||||
} else if (result.hasMoreUnseenMessages) {
|
||||
NSMutableSet<NSData *> *missingUnseenSafetyNumberChanges = [NSMutableSet set];
|
||||
for (TSInvalidIdentityKeyErrorMessage *safetyNumberChange in blockingSafetyNumberChanges) {
|
||||
BOOL isUnseen = safetyNumberChange.timestampForSorting
|
||||
|
|
Loading…
Reference in a new issue