@@ -161,8 +161,8 @@ class IterableEmbeddedManager: NSObject, IterableInternalEmbeddedManagerProtocol
161161 syncMessages { }
162162 }
163163
164- private func retrieveEmbeddedMessages( completion: @escaping ( ) -> Void ) {
165- apiClient. getEmbeddedMessages ( )
164+ private func retrieveEmbeddedMessages( placementIds : [ Int ] ? , completion: @escaping ( ) -> Void ) {
165+ apiClient. getEmbeddedMessages ( placementIds : placementIds )
166166 . onCompletion (
167167 receiveValue: { embeddedMessagesPayload in
168168 let placements = embeddedMessagesPayload. placements
@@ -172,7 +172,18 @@ class IterableEmbeddedManager: NSObject, IterableInternalEmbeddedManagerProtocol
172172 fetchedMessagesDict [ placement. placementId!] = placement. embeddedMessages
173173 }
174174
175- let processor = EmbeddedMessagingProcessor ( currentMessages: self . messages,
175+ let currentMessagesSnapshot : [ Int : [ IterableEmbeddedMessage ] ] = self . messageProcessingQueue. sync {
176+ self . messages
177+ }
178+
179+ if let placementIds, !placementIds. isEmpty {
180+ let requestedPlacementIds = Set ( placementIds)
181+ for (placementId, currentMessages) in currentMessagesSnapshot where !requestedPlacementIds. contains ( placementId) {
182+ fetchedMessagesDict [ placementId] = currentMessages
183+ }
184+ }
185+
186+ let processor = EmbeddedMessagingProcessor ( currentMessages: currentMessagesSnapshot,
176187 fetchedMessages: fetchedMessagesDict)
177188
178189 self . setMessages ( processor)
@@ -245,8 +256,12 @@ class IterableEmbeddedManager: NSObject, IterableInternalEmbeddedManagerProtocol
245256
246257extension IterableEmbeddedManager : EmbeddedNotifiable {
247258 public func syncMessages( completion: @escaping ( ) -> Void ) {
248- if ( enableEmbeddedMessaging) {
249- retrieveEmbeddedMessages ( completion: completion)
259+ syncMessages ( placementIds: nil , completion: completion)
260+ }
261+
262+ public func syncMessages( placementIds: [ Int ] ? , completion: @escaping ( ) -> Void ) {
263+ if enableEmbeddedMessaging {
264+ retrieveEmbeddedMessages ( placementIds: placementIds, completion: completion)
250265 }
251266 }
252267}
0 commit comments