From aace2a8dfcf05fddc0771ba9f1e49e1b1cd4db3d Mon Sep 17 00:00:00 2001 From: James Magahern Date: Fri, 13 Jun 2025 17:42:05 -0700 Subject: [PATCH] messagelist: actually implement before/after properly --- .../Operations/MBIMMessagesListOperation.m | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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]; }