@@ -273,3 +273,96 @@ extension InboxImpressionTracker.RowInfo {
273273 return rows. compactMap ( InboxImpressionTracker . RowInfo. from ( dict: ) )
274274 }
275275}
276+
277+ extension IterableEmbeddedMessage {
278+ func toDict( ) -> [ AnyHashable : Any ] {
279+ var dict = [ AnyHashable: Any] ( )
280+
281+ // Metadata
282+ var metadata = [ AnyHashable: Any] ( )
283+ metadata [ " messageId " ] = self . metadata. messageId
284+ metadata [ " placementId " ] = self . metadata. placementId
285+ if let campaignId = self . metadata. campaignId {
286+ metadata [ " campaignId " ] = campaignId
287+ }
288+ if let isProof = self . metadata. isProof {
289+ metadata [ " isProof " ] = isProof
290+ }
291+ dict [ " metadata " ] = metadata
292+
293+ // Elements
294+ if let elements = self . elements {
295+ var elementsDict = [ AnyHashable: Any] ( )
296+
297+ if let title = elements. title {
298+ elementsDict [ " title " ] = title
299+ }
300+
301+ if let body = elements. body {
302+ elementsDict [ " body " ] = body
303+ }
304+
305+ if let mediaUrl = elements. mediaUrl {
306+ elementsDict [ " mediaUrl " ] = mediaUrl
307+ }
308+
309+ if let mediaUrlCaption = elements. mediaUrlCaption {
310+ elementsDict [ " mediaUrlCaption " ] = mediaUrlCaption
311+ }
312+
313+ if let defaultAction = elements. defaultAction {
314+ var actionDict = [ AnyHashable: Any] ( )
315+ actionDict [ " type " ] = defaultAction. type
316+ if let data = defaultAction. data {
317+ actionDict [ " data " ] = data
318+ }
319+ elementsDict [ " defaultAction " ] = actionDict
320+ }
321+
322+ if let buttons = elements. buttons {
323+ var buttonsArray = [ [ AnyHashable: Any] ] ( )
324+ for button in buttons {
325+ var buttonDict = [ AnyHashable: Any] ( )
326+ buttonDict [ " id " ] = button. id
327+ if let title = button. title {
328+ buttonDict [ " title " ] = title
329+ }
330+ if let action = button. action {
331+ var actionDict = [ AnyHashable: Any] ( )
332+ actionDict [ " type " ] = action. type
333+ if let data = action. data {
334+ actionDict [ " data " ] = data
335+ }
336+ buttonDict [ " action " ] = actionDict
337+ } else {
338+ buttonDict [ " action " ] = NSNull ( )
339+ }
340+ buttonsArray. append ( buttonDict)
341+ }
342+ elementsDict [ " buttons " ] = buttonsArray
343+ }
344+
345+ if let text = elements. text {
346+ var textArray = [ [ AnyHashable: Any] ] ( )
347+ for textElement in text {
348+ var textDict = [ AnyHashable: Any] ( )
349+ textDict [ " id " ] = textElement. id
350+ if let textValue = textElement. text {
351+ textDict [ " text " ] = textValue
352+ }
353+ textArray. append ( textDict)
354+ }
355+ elementsDict [ " text " ] = textArray
356+ }
357+
358+ dict [ " elements " ] = elementsDict
359+ }
360+
361+ // Payload
362+ if let payload = self . payload {
363+ dict [ " payload " ] = payload
364+ }
365+
366+ return dict
367+ }
368+ }
0 commit comments