Manos Chorianopoulos

fixed CampaignItemModel urls

...@@ -13,6 +13,13 @@ import Foundation ...@@ -13,6 +13,13 @@ import Foundation
13 public class CampaignItemModel { 13 public class CampaignItemModel {
14 public let index_url: String? 14 public let index_url: String?
15 public var logo_url: String? 15 public var logo_url: String?
16 +
17 + // MARK: - URL Cleaning Helper
18 +
19 + /// Cleans escaped forward slashes from URLs (e.g., "https:\/\/example.com" -> "https://example.com")
20 + private func cleanEscapedUrl(_ url: String?) -> String? {
21 + return url?.replacingOccurrences(of: "\\/", with: "/")
22 + }
16 public let offer_category: String? 23 public let offer_category: String?
17 public var title: String? 24 public var title: String?
18 public var subtitle: String? 25 public var subtitle: String?
...@@ -98,8 +105,8 @@ public class CampaignItemModel { ...@@ -98,8 +105,8 @@ public class CampaignItemModel {
98 } 105 }
99 106
100 public init(dictionary: [String: Any]) { 107 public init(dictionary: [String: Any]) {
101 - self.index_url = dictionary["index_url"] as? String? ?? "" 108 + self.index_url = cleanEscapedUrl(dictionary["index_url"] as? String? ?? "")
102 - self.logo_url = dictionary["logo_url"] as? String? ?? "" 109 + self.logo_url = cleanEscapedUrl(dictionary["logo_url"] as? String? ?? "")
103 self.offer_category = dictionary["communication_category"] as? String? ?? "" 110 self.offer_category = dictionary["communication_category"] as? String? ?? ""
104 self.title = dictionary["title"] as? String? ?? "" 111 self.title = dictionary["title"] as? String? ?? ""
105 self.subtitle = dictionary["subtitle"] as? String? ?? "" 112 self.subtitle = dictionary["subtitle"] as? String? ?? ""
...@@ -152,16 +159,16 @@ public class CampaignItemModel { ...@@ -152,16 +159,16 @@ public class CampaignItemModel {
152 self.type = extra_fields["type"] as? String? ?? "" 159 self.type = extra_fields["type"] as? String? ?? ""
153 self.carousel = extra_fields["carousel"] as? String? ?? "false" 160 self.carousel = extra_fields["carousel"] as? String? ?? "false"
154 self.category_title = extra_fields["category_title"] as? String ?? "" 161 self.category_title = extra_fields["category_title"] as? String ?? ""
155 - self.banner_img = extra_fields["Banner_img"] as? String ?? "" 162 + self.banner_img = cleanEscapedUrl(extra_fields["Banner_img"] as? String ?? "")
156 self.banner_title = extra_fields["Banner_title"] as? String ?? "" 163 self.banner_title = extra_fields["Banner_title"] as? String ?? ""
157 self.category_id = extra_fields["category_id"] as? String ?? "" 164 self.category_id = extra_fields["category_id"] as? String ?? ""
158 self.filter = extra_fields["filter"] as? String ?? "" 165 self.filter = extra_fields["filter"] as? String ?? ""
159 self.show_expiration = extra_fields["show_expiration"] as? String? ?? "false" 166 self.show_expiration = extra_fields["show_expiration"] as? String? ?? "false"
160 - self.coupon_img = extra_fields["coupon_img"] as? String? ?? "" 167 + self.coupon_img = cleanEscapedUrl(extra_fields["coupon_img"] as? String? ?? "")
161 168
162 - // Parse new extra_fields 169 + // Parse new extra_fields with URL cleaning
163 - self.campaign_url = extra_fields["campaign_url"] as? String? ?? "" 170 + self.campaign_url = cleanEscapedUrl(extra_fields["campaign_url"] as? String? ?? "")
164 - self.banner_img_mobile = extra_fields["banner_img_mobile"] as? String? ?? "" 171 + self.banner_img_mobile = cleanEscapedUrl(extra_fields["banner_img_mobile"] as? String? ?? "")
165 } else { 172 } else {
166 self.subcategory = "" 173 self.subcategory = ""
167 self.loyaltyCampaignId = "" 174 self.loyaltyCampaignId = ""
......