Skip to content

Commit 0767dfc

Browse files
authored
Merge branch 'loren/embedded/master' into loren/embedded/SDK-232-ios-add-start-impression-and-pause-impression-a
2 parents deb13c1 + 05adbaa commit 0767dfc

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

ios/RNIterableAPI/ReactIterableAPI.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,8 @@ import React
529529
messages.append(contentsOf: placementMessages)
530530
}
531531
} else {
532-
// Get all messages
532+
// Get all messages from all placements
533+
// getMessages() without parameters flattens all placement messages into a single array
533534
messages = IterableAPI.embeddedManager.getMessages()
534535
}
535536

ios/RNIterableAPI/Serialization.swift

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -285,21 +285,27 @@ extension InboxImpressionTracker.RowInfo {
285285
}
286286

287287
extension IterableEmbeddedMessage {
288-
func toDict() -> [AnyHashable: Any] {
288+
func toDict() -> [AnyHashable: Any]? {
289289
var dict = [AnyHashable: Any]()
290290

291-
// Serialize metadata (which is Codable)
292-
if let metadataDict = SerializationUtil.encodableToDictionary(encodable: metadata) {
293-
dict["metadata"] = metadataDict
291+
// CRITICAL: Metadata is required - fail if missing
292+
guard let metadataDict = SerializationUtil.encodableToDictionary(encodable: metadata) else {
293+
ITBError("Failed to serialize embedded message metadata. Dropping invalid message.")
294+
return nil
294295
}
295-
296-
// Serialize elements if present (which is Codable)
297-
if let elements = elements,
298-
let elementsDict = SerializationUtil.encodableToDictionary(encodable: elements) {
299-
dict["elements"] = elementsDict
296+
dict["metadata"] = metadataDict
297+
298+
// IMPORTANT: Elements are optional, but if present and fail to serialize, that's bad
299+
if let elements = elements {
300+
if let elementsDict = SerializationUtil.encodableToDictionary(encodable: elements) {
301+
dict["elements"] = elementsDict
302+
} else {
303+
ITBError("Failed to serialize embedded message elements. Message will not be displayable.")
304+
return nil
305+
}
300306
}
301307

302-
// Add payload directly
308+
// Payload doesn't need serialization - it's already a dictionary
303309
if let payload = payload {
304310
dict["payload"] = payload
305311
}

0 commit comments

Comments
 (0)