diff --git a/kordophone/Bridge/Operations/MBIMMessagesListOperation.m b/kordophone/Bridge/Operations/MBIMMessagesListOperation.m index 5126825..d7609fc 100644 --- a/kordophone/Bridge/Operations/MBIMMessagesListOperation.m +++ b/kordophone/Bridge/Operations/MBIMMessagesListOperation.m @@ -85,15 +85,21 @@ [chat loadMessagesBeforeDate:beforeDate limit:limit loadImmediately:YES]; } + IMMessage *beforeMessage = beforeMessageGUID ? [chat messageForGUID:beforeMessageGUID] : nil; + IMMessage *afterMessage = afterMessageGUID ? [chat messageForGUID:afterMessageGUID] : nil; + [[chat chatItems] enumerateMessagesWithOptions:0 usingBlock:^(IMMessage *message, BOOL *stop) { - // Assume "beforeMessageGUID" is exclusive - if ([[message guid] isEqual:beforeMessageGUID]) { - *stop = YES; - return; + BOOL includeMessage = YES; + NSDate *messageDate = [message time]; + if (beforeMessage && [[beforeMessage time] compare:messageDate] != NSOrderedDescending) { + includeMessage = NO; } - // Assume "afterMessageGUID" is exclusive. - if (![[message guid] isEqual:afterMessageGUID]) { + if (afterMessage && [[afterMessage time] compare:messageDate] != NSOrderedAscending) { + includeMessage = NO; + } + + if (includeMessage) { NSDictionary *messageDict = [message mbim_dictionaryRepresentation]; [messages addObject:messageDict]; }