Skip to content

Commit ac42052

Browse files
authored
Merge branch 'loren/embedded/SDK-303-make-the-embedded-functionality-for-ios-and-andrio' into loren/embedded/SDK-234-ios-add-real-time-updates-and-track-message-rece
2 parents 2f480f0 + b8fe40f commit ac42052

3 files changed

Lines changed: 19 additions & 11 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,4 @@ docs/
9393

9494
# Local Netlify folder
9595
.netlify
96+
.metals/

ios/RNIterableAPI/ReactIterableAPI.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,8 @@ import React
531531
messages.append(contentsOf: placementMessages)
532532
}
533533
} else {
534-
// Get all messages
534+
// Get all messages from all placements
535+
// getMessages() without parameters flattens all placement messages into a single array
535536
messages = IterableAPI.embeddedManager.getMessages()
536537
}
537538

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)