|
5 | 5 | import Foundation
|
6 | 6 | import UIKit
|
7 | 7 |
|
8 |
| -public struct ResolvedMessage: Equatable { |
9 |
| - public let title: String? |
10 |
| - public let description: String? |
11 |
| - public var image: UIImage? |
12 |
| - public var imageAccessibilityLabel: String? |
13 |
| - public let buttonText: String? |
14 |
| - public let buttonTwoText: String? |
15 |
| - public let message: IterableEmbeddedMessage |
16 |
| - |
17 |
| - init(title: String?, |
18 |
| - description: String?, |
19 |
| - image: UIImage?, |
20 |
| - imageAccessibilityLabel: String?, |
21 |
| - buttonText: String?, |
22 |
| - buttonTwoText: String?, |
23 |
| - message: IterableEmbeddedMessage) { |
24 |
| - self.title = title |
25 |
| - self.description = description |
26 |
| - self.image = image |
27 |
| - self.imageAccessibilityLabel = imageAccessibilityLabel |
28 |
| - self.buttonText = buttonText |
29 |
| - self.buttonTwoText = buttonTwoText |
30 |
| - self.message = message |
31 |
| - } |
32 |
| - |
33 |
| - public static func ==(lhs: ResolvedMessage, rhs: ResolvedMessage) -> Bool { |
34 |
| - return lhs.title == rhs.title && |
35 |
| - lhs.description == rhs.description && |
36 |
| - lhs.image == rhs.image && |
37 |
| - lhs.buttonText == rhs.buttonText && |
38 |
| - lhs.buttonTwoText == rhs.buttonTwoText && |
39 |
| - lhs.message == rhs.message |
40 |
| - } |
41 |
| -} |
42 |
| - |
43 | 8 | protocol IterableInternalEmbeddedManagerProtocol: IterableEmbeddedManagerProtocol, EmbeddedNotifiable {
|
44 | 9 | // we can add the internal delegate methods here
|
45 | 10 | }
|
@@ -78,75 +43,6 @@ class IterableEmbeddedManager: NSObject, IterableInternalEmbeddedManagerProtocol
|
78 | 43 | return messages[placementId] ?? []
|
79 | 44 | }
|
80 | 45 |
|
81 |
| - public func resolveMessages(_ messages: [IterableEmbeddedMessage], completion: @escaping ([ResolvedMessage]) -> Void) { |
82 |
| - var resolvedMessages: [Int: ResolvedMessage] = [:] |
83 |
| - |
84 |
| - let group = DispatchGroup() |
85 |
| - |
86 |
| - for (index, message) in messages.enumerated() { |
87 |
| - group.enter() |
88 |
| - |
89 |
| - let title = message.elements?.title |
90 |
| - let description = message.elements?.body |
91 |
| - let imageUrl = message.elements?.mediaUrl |
92 |
| - let imageAccessiblityLabel = message.elements?.mediaUrlCaption |
93 |
| - let buttonText = message.elements?.buttons?.first?.title |
94 |
| - let buttonTwoText = message.elements?.buttons?.count ?? 0 > 1 ? message.elements?.buttons?[1].title : nil |
95 |
| - |
96 |
| - DispatchQueue.global().async { |
97 |
| - if let imageUrl = imageUrl, let url = URL(string: imageUrl) { |
98 |
| - var request = URLRequest(url: url) |
99 |
| - request.setValue("Mozilla/5.0 (iPhone; CPU iPhone OS 16_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Mobile/15E148 Safari/604.1", forHTTPHeaderField: "User-Agent") |
100 |
| - |
101 |
| - let config = URLSessionConfiguration.default |
102 |
| - config.httpAdditionalHeaders = request.allHTTPHeaderFields |
103 |
| - |
104 |
| - let session = URLSession(configuration: config) |
105 |
| - |
106 |
| - session.dataTask(with: request) { (data, _, _) in |
107 |
| - defer { group.leave() } |
108 |
| - |
109 |
| - guard let imageData = data else { |
110 |
| - print("Unable to load image data") |
111 |
| - return |
112 |
| - } |
113 |
| - |
114 |
| - let resolvedMessage = ResolvedMessage(title: title, |
115 |
| - description: description, |
116 |
| - image: UIImage(data: imageData), |
117 |
| - imageAccessibilityLabel: imageAccessiblityLabel, |
118 |
| - buttonText: buttonText, |
119 |
| - buttonTwoText: buttonTwoText, |
120 |
| - message: message) |
121 |
| - |
122 |
| - DispatchQueue.main.async { |
123 |
| - resolvedMessages[index] = resolvedMessage |
124 |
| - } |
125 |
| - |
126 |
| - }.resume() |
127 |
| - } else { |
128 |
| - let resolvedMessage = ResolvedMessage(title: title, |
129 |
| - description: description, |
130 |
| - image: nil, |
131 |
| - imageAccessibilityLabel: nil, |
132 |
| - buttonText: buttonText, |
133 |
| - buttonTwoText: buttonTwoText, |
134 |
| - message: message) |
135 |
| - DispatchQueue.main.async { |
136 |
| - resolvedMessages[index] = resolvedMessage |
137 |
| - group.leave() |
138 |
| - } |
139 |
| - } |
140 |
| - } |
141 |
| - |
142 |
| - } |
143 |
| - |
144 |
| - group.notify(queue: .main) { |
145 |
| - let sortedResolvedMessages = resolvedMessages.sorted { $0.key < $1.key }.map { $0.value } |
146 |
| - completion(sortedResolvedMessages) |
147 |
| - } |
148 |
| - } |
149 |
| - |
150 | 46 | public func addUpdateListener(_ listener: IterableEmbeddedUpdateDelegate) {
|
151 | 47 | listeners.add(listener)
|
152 | 48 | }
|
|
0 commit comments