@@ -1328,11 +1328,9 @@ handleListMessages = \offset authorization clientIp respond -> do
13281328 {messages: [], authorized: True {}, count: 0, error: "rate_limited"} (\pubkey -> do
13291329 msgs <- *messages
13301330 let myMsgs = sortBy (\m -> m.receivedAt) (filter msgs (\m -> m.toKey == pubkey && m.expiresAt > t))
1331− let total = count myMsgs
1332− let effectiveOffset = clamp 0 total offset
1333− let after = mapWhere (withIndex myMsgs) (\p -> p.i >= effectiveOffset) (\p -> p.v)
1331+ let after = drop (clamp 0 (count myMsgs) offset) myMsgs
13341332 let result = pluck (takeRelation maxPollEvents after) (\m -> {messageId: m.messageId, timestamp: m.timestamp, receivedAt: m.receivedAt})
1335− yield (respond {messages: result, authorized: True {}, count: total, error: ""}))
1333+ yield (respond {messages: result, authorized: True {}, count: count myMsgs, error: ""}))
13361334
13371335handleDeleteMessages = \messageIds authorization clientIp respond -> do
13381336 t <- now
@@ -1562,8 +1560,7 @@ handleFederationBatchCancel = \cancels fromServer requestTimestamp correlationId
15621560 case findFirst msgs (\m -> matches m && m.originServer == fromServer) of
15631561 Nothing {} -> yield False
15641562 Just {} -> do
1565− set *messages = removeWhere msgs matches
1566− pruneRef forwards (\f -> not (matches f))
1563+ _ <- applyCancel msgs matches e.toKey e.messageId t
15671564 yield True
15681565 yield {messageId: e.messageId, cancelled: cancelled})
15691566 yield (respond {ok: True {}, error: "", results: results, retryAfterMs: 0}))