Manos Chorianopoulos

Added SDK initialization checks, Safe unwrapping, Error Logging and isSDKInitialized method

...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>Pods-SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>0</integer> 10 + <integer>1</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key> 7 <key>SwiftWarplyFramework.xcscheme_^#shared#^_</key>
8 <dict> 8 <dict>
9 <key>orderHint</key> 9 <key>orderHint</key>
10 - <integer>1</integer> 10 + <integer>0</integer>
11 </dict> 11 </dict>
12 </dict> 12 </dict>
13 </dict> 13 </dict>
......
...@@ -2116,14 +2116,14 @@ public class swiftApi { ...@@ -2116,14 +2116,14 @@ public class swiftApi {
2116 let instanceOfMyApi = MyApi() 2116 let instanceOfMyApi = MyApi()
2117 let campaignInfo = instanceOfMyApi.provideInfoForCampaign() 2117 let campaignInfo = instanceOfMyApi.provideInfoForCampaign()
2118 let finalUrl = (campaign.index_url ?? "") 2118 let finalUrl = (campaign.index_url ?? "")
2119 - // + "?web_id=" + (campaignInfo?["web_id"] as! String) 2119 + // + "?web_id=" + (campaignInfo?["web_id"] as? String ?? "")
2120 - // + "&app_uuid=" + (campaignInfo?["app_uuid"] as! String) 2120 + // + "&app_uuid=" + (campaignInfo?["app_uuid"] as? String ?? "")
2121 - // + "&api_key=" + (campaignInfo?["api_key"] as! String) 2121 + // + "&api_key=" + (campaignInfo?["api_key"] as? String ?? "")
2122 // + "&session_uuid=" + (campaign.session_uuid ?? "") 2122 // + "&session_uuid=" + (campaign.session_uuid ?? "")
2123 - // + "&access_token=" + (campaignInfo?["access_token"] as! String) 2123 + // + "&access_token=" + (campaignInfo?["access_token"] as? String ?? "")
2124 - // + "&refresh_token=" + (campaignInfo?["refresh_token"] as! String) 2124 + // + "&refresh_token=" + (campaignInfo?["refresh_token"] as? String ?? "")
2125 - // + "&client_id=" + (campaignInfo?["client_id"] as! String) 2125 + // + "&client_id=" + (campaignInfo?["client_id"] as? String ?? "")
2126 - // + "&client_secret=" + (campaignInfo?["client_secret"] as! String); 2126 + // + "&client_secret=" + (campaignInfo?["client_secret"] as? String ?? "");
2127 2127
2128 print("constructCampaignUrl url: " + finalUrl) 2128 print("constructCampaignUrl url: " + finalUrl)
2129 return finalUrl 2129 return finalUrl
...@@ -2251,25 +2251,37 @@ public class swiftApi { ...@@ -2251,25 +2251,37 @@ public class swiftApi {
2251 let campaignInfo = instanceOfMyApi.provideInfoForCampaign() 2251 let campaignInfo = instanceOfMyApi.provideInfoForCampaign()
2252 2252
2253 let jsonObject: [String: String] = [ 2253 let jsonObject: [String: String] = [
2254 - "web_id": (campaignInfo?["web_id"] as! String), 2254 + "web_id": (campaignInfo?["web_id"] as? String ?? ""),
2255 - "app_uuid": (campaignInfo?["app_uuid"] as! String), 2255 + "app_uuid": (campaignInfo?["app_uuid"] as? String ?? ""),
2256 - "api_key": (campaignInfo?["api_key"] as! String), 2256 + "api_key": (campaignInfo?["api_key"] as? String ?? ""),
2257 "session_uuid": (campaign.session_uuid ?? ""), 2257 "session_uuid": (campaign.session_uuid ?? ""),
2258 - "access_token": (campaignInfo?["access_token"] as! String), 2258 + "access_token": (campaignInfo?["access_token"] as? String ?? ""),
2259 - "refresh_token": (campaignInfo?["refresh_token"] as! String), 2259 + "refresh_token": (campaignInfo?["refresh_token"] as? String ?? ""),
2260 - "client_id": (campaignInfo?["client_id"] as! String), 2260 + "client_id": (campaignInfo?["client_id"] as? String ?? ""),
2261 - "client_secret": (campaignInfo?["client_secret"] as! String), 2261 + "client_secret": (campaignInfo?["client_secret"] as? String ?? ""),
2262 "lan": swiftApi().getApplicationLocale(), 2262 "lan": swiftApi().getApplicationLocale(),
2263 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false") 2263 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false")
2264 ] 2264 ]
2265 2265
2266 - let encoder = JSONEncoder() 2266 + // let encoder = JSONEncoder()
2267 - encoder.outputFormatting = .prettyPrinted 2267 + // encoder.outputFormatting = .prettyPrinted
2268 - let data = try! encoder.encode(jsonObject) 2268 + // let data = try! encoder.encode(jsonObject)
2269 - let stringData = String(data: data, encoding: .utf8) ?? "" 2269 + // let stringData = String(data: data, encoding: .utf8) ?? ""
2270 2270
2271 - print("constructCampaignParams: " + stringData) 2271 + // print("constructCampaignParams: " + stringData)
2272 - return stringData 2272 + // return stringData
2273 +
2274 + do {
2275 + let encoder = JSONEncoder()
2276 + encoder.outputFormatting = .prettyPrinted
2277 + let data = try encoder.encode(jsonObject)
2278 + let stringData = String(data: data, encoding: .utf8) ?? ""
2279 + print("constructCampaignParams: " + stringData)
2280 + return stringData
2281 + } catch {
2282 + print("Error encoding campaign params: \(error)")
2283 + return "{}"
2284 + }
2273 2285
2274 // do { 2286 // do {
2275 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted) 2287 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
...@@ -2289,26 +2301,38 @@ public class swiftApi { ...@@ -2289,26 +2301,38 @@ public class swiftApi {
2289 let campaignInfo = instanceOfMyApi.provideInfoForCampaign() 2301 let campaignInfo = instanceOfMyApi.provideInfoForCampaign()
2290 2302
2291 let jsonObject: [String: String] = [ 2303 let jsonObject: [String: String] = [
2292 - "web_id": (campaignInfo?["web_id"] as! String), 2304 + "web_id": (campaignInfo?["web_id"] as? String ?? ""),
2293 - "app_uuid": (campaignInfo?["app_uuid"] as! String), 2305 + "app_uuid": (campaignInfo?["app_uuid"] as? String ?? ""),
2294 - "api_key": (campaignInfo?["api_key"] as! String), 2306 + "api_key": (campaignInfo?["api_key"] as? String ?? ""),
2295 "session_uuid": (campaign.session_uuid ?? ""), 2307 "session_uuid": (campaign.session_uuid ?? ""),
2296 - "access_token": (campaignInfo?["access_token"] as! String), 2308 + "access_token": (campaignInfo?["access_token"] as? String ?? ""),
2297 - "refresh_token": (campaignInfo?["refresh_token"] as! String), 2309 + "refresh_token": (campaignInfo?["refresh_token"] as? String ?? ""),
2298 - "client_id": (campaignInfo?["client_id"] as! String), 2310 + "client_id": (campaignInfo?["client_id"] as? String ?? ""),
2299 - "client_secret": (campaignInfo?["client_secret"] as! String), 2311 + "client_secret": (campaignInfo?["client_secret"] as? String ?? ""),
2300 "map": (isMap ? "true" : "false"), 2312 "map": (isMap ? "true" : "false"),
2301 "lan": swiftApi().getApplicationLocale(), 2313 "lan": swiftApi().getApplicationLocale(),
2302 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false") 2314 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false")
2303 ] 2315 ]
2304 2316
2305 - let encoder = JSONEncoder() 2317 + // let encoder = JSONEncoder()
2306 - encoder.outputFormatting = .prettyPrinted 2318 + // encoder.outputFormatting = .prettyPrinted
2307 - let data = try! encoder.encode(jsonObject) 2319 + // let data = try! encoder.encode(jsonObject)
2308 - let stringData = String(data: data, encoding: .utf8) ?? "" 2320 + // let stringData = String(data: data, encoding: .utf8) ?? ""
2321 +
2322 + // print("constructCampaignParams: " + stringData)
2323 + // return stringData
2309 2324
2310 - print("constructCampaignParams: " + stringData) 2325 + do {
2311 - return stringData 2326 + let encoder = JSONEncoder()
2327 + encoder.outputFormatting = .prettyPrinted
2328 + let data = try encoder.encode(jsonObject)
2329 + let stringData = String(data: data, encoding: .utf8) ?? ""
2330 + print("constructCampaignParams: " + stringData)
2331 + return stringData
2332 + } catch {
2333 + print("Error encoding campaign params: \(error)")
2334 + return "{}"
2335 + }
2312 2336
2313 // do { 2337 // do {
2314 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted) 2338 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
...@@ -2328,26 +2352,38 @@ public class swiftApi { ...@@ -2328,26 +2352,38 @@ public class swiftApi {
2328 let campaignInfo = instanceOfMyApi.provideInfoForCampaign() 2352 let campaignInfo = instanceOfMyApi.provideInfoForCampaign()
2329 2353
2330 let jsonObject: [String: String] = [ 2354 let jsonObject: [String: String] = [
2331 - "web_id": (campaignInfo?["web_id"] as! String), 2355 + "web_id": (campaignInfo?["web_id"] as? String ?? ""),
2332 - "app_uuid": (campaignInfo?["app_uuid"] as! String), 2356 + "app_uuid": (campaignInfo?["app_uuid"] as? String ?? ""),
2333 - "api_key": (campaignInfo?["api_key"] as! String), 2357 + "api_key": (campaignInfo?["api_key"] as? String ?? ""),
2334 "session_uuid": (campaign.session_uuid ?? ""), 2358 "session_uuid": (campaign.session_uuid ?? ""),
2335 - "access_token": (campaignInfo?["access_token"] as! String), 2359 + "access_token": (campaignInfo?["access_token"] as? String ?? ""),
2336 - "refresh_token": (campaignInfo?["refresh_token"] as! String), 2360 + "refresh_token": (campaignInfo?["refresh_token"] as? String ?? ""),
2337 - "client_id": (campaignInfo?["client_id"] as! String), 2361 + "client_id": (campaignInfo?["client_id"] as? String ?? ""),
2338 - "client_secret": (campaignInfo?["client_secret"] as! String), 2362 + "client_secret": (campaignInfo?["client_secret"] as? String ?? ""),
2339 "from_widget": (from_widget ? "true" : "false"), 2363 "from_widget": (from_widget ? "true" : "false"),
2340 "lan": swiftApi().getApplicationLocale(), 2364 "lan": swiftApi().getApplicationLocale(),
2341 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false") 2365 "dark": (swiftApi().getIsDarkModeEnabled() ? "true" : "false")
2342 ] 2366 ]
2343 2367
2344 - let encoder = JSONEncoder() 2368 + // let encoder = JSONEncoder()
2345 - encoder.outputFormatting = .prettyPrinted 2369 + // encoder.outputFormatting = .prettyPrinted
2346 - let data = try! encoder.encode(jsonObject) 2370 + // let data = try! encoder.encode(jsonObject)
2347 - let stringData = String(data: data, encoding: .utf8) ?? "" 2371 + // let stringData = String(data: data, encoding: .utf8) ?? ""
2348 2372
2349 - print("constructCampaignParams: " + stringData) 2373 + // print("constructCampaignParams: " + stringData)
2350 - return stringData 2374 + // return stringData
2375 +
2376 + do {
2377 + let encoder = JSONEncoder()
2378 + encoder.outputFormatting = .prettyPrinted
2379 + let data = try encoder.encode(jsonObject)
2380 + let stringData = String(data: data, encoding: .utf8) ?? ""
2381 + print("constructCampaignParams: " + stringData)
2382 + return stringData
2383 + } catch {
2384 + print("Error encoding campaign params: \(error)")
2385 + return "{}"
2386 + }
2351 2387
2352 // do { 2388 // do {
2353 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted) 2389 // let data = try JSONSerialization.data(withJSONObject: jsonObject, options: .prettyPrinted)
...@@ -2414,13 +2450,25 @@ public class swiftApi { ...@@ -2414,13 +2450,25 @@ public class swiftApi {
2414 "ZONE": (campaign._zone) 2450 "ZONE": (campaign._zone)
2415 ] 2451 ]
2416 2452
2417 - let encoder = JSONEncoder() 2453 + // let encoder = JSONEncoder()
2418 - encoder.outputFormatting = .prettyPrinted 2454 + // encoder.outputFormatting = .prettyPrinted
2419 - let data = try! encoder.encode(jsonObject) 2455 + // let data = try! encoder.encode(jsonObject)
2420 - let stringData = String(data: data, encoding: .utf8) ?? "" 2456 + // let stringData = String(data: data, encoding: .utf8) ?? ""
2421 2457
2422 - print("constructCcmsParams: " + stringData) 2458 + // print("constructCcmsParams: " + stringData)
2423 - return stringData 2459 + // return stringData
2460 +
2461 + do {
2462 + let encoder = JSONEncoder()
2463 + encoder.outputFormatting = .prettyPrinted
2464 + let data = try encoder.encode(jsonObject)
2465 + let stringData = String(data: data, encoding: .utf8) ?? ""
2466 + print("constructCcmsParams: " + stringData)
2467 + return stringData
2468 + } catch {
2469 + print("Error encoding ccms params: \(error)")
2470 + return "{}"
2471 + }
2424 break; 2472 break;
2425 } 2473 }
2426 } 2474 }
...@@ -2478,13 +2526,25 @@ public class swiftApi { ...@@ -2478,13 +2526,25 @@ public class swiftApi {
2478 "ZONE": (ccmsCampaign._zone) 2526 "ZONE": (ccmsCampaign._zone)
2479 ] 2527 ]
2480 2528
2481 - let encoder = JSONEncoder() 2529 + // let encoder = JSONEncoder()
2482 - encoder.outputFormatting = .prettyPrinted 2530 + // encoder.outputFormatting = .prettyPrinted
2483 - let data = try! encoder.encode(jsonObject) 2531 + // let data = try! encoder.encode(jsonObject)
2484 - let stringData = String(data: data, encoding: .utf8) ?? "" 2532 + // let stringData = String(data: data, encoding: .utf8) ?? ""
2485 2533
2486 - print("constructCcmsParams: " + stringData) 2534 + // print("constructCcmsParams: " + stringData)
2487 - return stringData 2535 + // return stringData
2536 +
2537 + do {
2538 + let encoder = JSONEncoder()
2539 + encoder.outputFormatting = .prettyPrinted
2540 + let data = try encoder.encode(jsonObject)
2541 + let stringData = String(data: data, encoding: .utf8) ?? ""
2542 + print("constructCcmsParams: " + stringData)
2543 + return stringData
2544 + } catch {
2545 + print("Error encoding ccms params: \(error)")
2546 + return "{}"
2547 + }
2488 } 2548 }
2489 2549
2490 2550
...@@ -4055,42 +4115,21 @@ public class swiftApi { ...@@ -4055,42 +4115,21 @@ public class swiftApi {
4055 } 4115 }
4056 4116
4057 public func openSupermarketsMap(_ controller: UIViewController) -> Void { 4117 public func openSupermarketsMap(_ controller: UIViewController) -> Void {
4058 - let status = swiftApi().getNetworkStatus() 4118 + let instanceOfMyApi = MyApi()
4059 - if (status == -1 || status == 0) { 4119 + let isInitialised = instanceOfMyApi.sdkInitialised();
4060 - swiftApi().showDialog(controller, "Δεν υπάρχει σύνδεση","Αυτή τη στιγμή βρίσκεσαι εκτός σύνδεσης. Παρακαλούμε βεβαιώσου ότι είσαι συνδεδεμένος στο διαδίκτυο και προσπάθησε ξανά.") 4120 +
4061 - 4121 + if (isInitialised == true) {
4062 - } else {
4063 - let tempCampaign = CampaignItemModel()
4064 - let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
4065 - let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as! SwiftWarplyFramework.CampaignViewController
4066 - let url = swiftApi().getMarketPassMapUrl()
4067 - let params = swiftApi().constructCampaignParams(campaign: tempCampaign, isMap: true)
4068 - vc.campaignUrl = url
4069 - vc.params = params
4070 - vc.showHeader = false
4071 -
4072 - if (controller.navigationController != nil) {
4073 - vc.isPresented = false
4074 - controller.navigationController?.pushViewController(vc, animated: true)
4075 - } else {
4076 - vc.isPresented = true
4077 - vc.modalPresentationStyle = .fullScreen
4078 - controller.present(vc, animated: true, completion: nil)
4079 - }
4080 - }
4081 - }
4082 4122
4083 - public func openSuperMarketsFlow(_ controller: UIViewController) -> Void { 4123 + let status = swiftApi().getNetworkStatus()
4084 - let status = swiftApi().getNetworkStatus() 4124 + if (status == -1 || status == 0) {
4085 - if (status == -1 || status == 0) { 4125 + swiftApi().showDialog(controller, "Δεν υπάρχει σύνδεση","Αυτή τη στιγμή βρίσκεσαι εκτός σύνδεσης. Παρακαλούμε βεβαιώσου ότι είσαι συνδεδεμένος στο διαδίκτυο και προσπάθησε ξανά.")
4086 - swiftApi().showDialog(controller, "Δεν υπάρχει σύνδεση","Αυτή τη στιγμή βρίσκεσαι εκτός σύνδεσης. Παρακαλούμε βεβαιώσου ότι είσαι συνδεδεμένος στο διαδίκτυο και προσπάθησε ξανά.")
4087 4126
4088 - } else { 4127 + } else {
4089 - if let superMarketCampaign = swiftApi().getSupermarketCampaign() { 4128 + let tempCampaign = CampaignItemModel()
4090 let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self)) 4129 let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
4091 let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as! SwiftWarplyFramework.CampaignViewController 4130 let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as! SwiftWarplyFramework.CampaignViewController
4092 - let url = swiftApi().constructCampaignUrl(superMarketCampaign) 4131 + let url = swiftApi().getMarketPassMapUrl()
4093 - let params = swiftApi().constructCampaignParams(superMarketCampaign) 4132 + let params = swiftApi().constructCampaignParams(campaign: tempCampaign, isMap: true)
4094 vc.campaignUrl = url 4133 vc.campaignUrl = url
4095 vc.params = params 4134 vc.params = params
4096 vc.showHeader = false 4135 vc.showHeader = false
...@@ -4104,6 +4143,43 @@ public class swiftApi { ...@@ -4104,6 +4143,43 @@ public class swiftApi {
4104 controller.present(vc, animated: true, completion: nil) 4143 controller.present(vc, animated: true, completion: nil)
4105 } 4144 }
4106 } 4145 }
4146 + } else {
4147 + print("Warply SDK is not initialised. Please initialise it before calling it's methods.")
4148 + }
4149 + }
4150 +
4151 + public func openSuperMarketsFlow(_ controller: UIViewController) -> Void {
4152 + let instanceOfMyApi = MyApi()
4153 + let isInitialised = instanceOfMyApi.sdkInitialised();
4154 +
4155 + if (isInitialised == true) {
4156 +
4157 + let status = swiftApi().getNetworkStatus()
4158 + if (status == -1 || status == 0) {
4159 + swiftApi().showDialog(controller, "Δεν υπάρχει σύνδεση","Αυτή τη στιγμή βρίσκεσαι εκτός σύνδεσης. Παρακαλούμε βεβαιώσου ότι είσαι συνδεδεμένος στο διαδίκτυο και προσπάθησε ξανά.")
4160 +
4161 + } else {
4162 + if let superMarketCampaign = swiftApi().getSupermarketCampaign() {
4163 + let storyboard = UIStoryboard(name: "Main", bundle: Bundle(for: MyEmptyClass.self))
4164 + let vc = storyboard.instantiateViewController(withIdentifier: "CampaignViewController") as! SwiftWarplyFramework.CampaignViewController
4165 + let url = swiftApi().constructCampaignUrl(superMarketCampaign)
4166 + let params = swiftApi().constructCampaignParams(superMarketCampaign)
4167 + vc.campaignUrl = url
4168 + vc.params = params
4169 + vc.showHeader = false
4170 +
4171 + if (controller.navigationController != nil) {
4172 + vc.isPresented = false
4173 + controller.navigationController?.pushViewController(vc, animated: true)
4174 + } else {
4175 + vc.isPresented = true
4176 + vc.modalPresentationStyle = .fullScreen
4177 + controller.present(vc, animated: true, completion: nil)
4178 + }
4179 + }
4180 + }
4181 + } else {
4182 + print("Warply SDK is not initialised. Please initialise it before calling it's methods.")
4107 } 4183 }
4108 } 4184 }
4109 4185
...@@ -4431,4 +4507,11 @@ public class swiftApi { ...@@ -4431,4 +4507,11 @@ public class swiftApi {
4431 } 4507 }
4432 } 4508 }
4433 4509
4510 + public func isSDKInitialized() -> Bool {
4511 + let instanceOfMyApi = MyApi()
4512 + let isInitialised = instanceOfMyApi.sdkInitialised();
4513 +
4514 + return isInitialised
4515 + }
4516 +
4434 } 4517 }
......