@@ -1165,18 +1165,20 @@ extension IMConversation {
11651165 assert ( client. specificAssertion)
11661166 let rcpResult : LCGenericResult < MessageReceiptFlag >
11671167 if let convMessage = ( inCommand. hasConvMessage ? inCommand. convMessage : nil ) {
1168- let readTimestamp = ( convMessage. hasMaxReadTimestamp ? convMessage. maxReadTimestamp : nil )
1169- if let timestamp = readTimestamp {
1170- self . process ( rcpTimestamp: timestamp, isRead: true , client: client)
1171- }
1172- let deliveredTimestamp = ( convMessage. hasMaxAckTimestamp ? convMessage. maxAckTimestamp : nil )
1173- if let timestamp = deliveredTimestamp {
1174- self . process ( rcpTimestamp: timestamp, isRead: false , client: client)
1175- }
1168+ let maxReadTimestamp = ( convMessage. hasMaxReadTimestamp
1169+ ? convMessage. maxReadTimestamp
1170+ : nil )
1171+ let maxDeliveredTimestamp = ( convMessage. hasMaxAckTimestamp
1172+ ? convMessage. maxAckTimestamp
1173+ : nil )
1174+ self . process (
1175+ maxReadTimestamp: maxReadTimestamp,
1176+ maxDeliveredTimestamp: maxDeliveredTimestamp,
1177+ client: client)
11761178 rcpResult = . success(
11771179 value: MessageReceiptFlag (
1178- readFlagTimestamp: readTimestamp ,
1179- deliveredFlagTimestamp: deliveredTimestamp ) )
1180+ readFlagTimestamp: maxReadTimestamp ,
1181+ deliveredFlagTimestamp: maxDeliveredTimestamp ) )
11801182 } else {
11811183 rcpResult = . failure(
11821184 error: LCError (
@@ -1197,25 +1199,28 @@ extension IMConversation {
11971199 } )
11981200 }
11991201
1200- func process( rcpTimestamp: Int64 , isRead: Bool , client: IMClient ) {
1202+ private func process(
1203+ maxReadTimestamp: Int64 ? ,
1204+ maxDeliveredTimestamp: Int64 ? ,
1205+ client: IMClient )
1206+ {
12011207 assert ( client. specificAssertion)
1202- var event : IMConversationEvent ?
1203- if isRead {
1204- if rcpTimestamp > ( self . lastReadTimestamp ?? 0 ) {
1205- self . lastReadTimestamp = rcpTimestamp
1206- event = . lastReadAtUpdated
1207- }
1208- } else {
1209- if rcpTimestamp > ( self . lastDeliveredTimestamp ?? 0 ) {
1210- self . lastDeliveredTimestamp = rcpTimestamp
1211- event = . lastDeliveredAtUpdated
1208+ if let maxReadTimestamp = maxReadTimestamp,
1209+ maxReadTimestamp > ( self . lastReadTimestamp ?? 0 ) {
1210+ self . lastReadTimestamp = maxReadTimestamp
1211+ client. eventQueue. async {
1212+ client. delegate? . client (
1213+ client, conversation: self ,
1214+ event: . lastReadAtUpdated)
12121215 }
12131216 }
1214- if let event = event {
1217+ if let maxDeliveredTimestamp = maxDeliveredTimestamp,
1218+ maxDeliveredTimestamp > ( self . lastDeliveredTimestamp ?? 0 ) {
1219+ self . lastDeliveredTimestamp = maxDeliveredTimestamp
12151220 client. eventQueue. async {
12161221 client. delegate? . client (
12171222 client, conversation: self ,
1218- event: event )
1223+ event: . lastDeliveredAtUpdated )
12191224 }
12201225 }
12211226 }
0 commit comments