Manos Chorianopoulos

Merge remote-tracking branch 'origin/feat/analysis_vc' into swift_sdk_development

...@@ -20,6 +20,15 @@ ...@@ -20,6 +20,15 @@
20 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; }; 20 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */ = {isa = PBXBuildFile; productRef = 1EBF5F062840E13F00B8B17F /* SwiftEventBus */; };
21 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; }; 21 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */; };
22 A02F34052882B6E60086465F /* TelcoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02F34042882B6E60086465F /* TelcoViewController.swift */; }; 22 A02F34052882B6E60086465F /* TelcoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02F34042882B6E60086465F /* TelcoViewController.swift */; };
23 + A04D31DE288FF670000E43B5 /* HistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04D31DD288FF670000E43B5 /* HistoryViewController.swift */; };
24 + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366D2885D07700064122 /* AnalysisChildViewController.swift */; };
25 + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079366F2885D95600064122 /* AnalysisItemViewCell.swift */; };
26 + A07936732885E67400064122 /* AnalysisItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936722885E67400064122 /* AnalysisItem.swift */; };
27 + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; };
28 + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */ = {isa = PBXBuildFile; productRef = A07936782885EF9400064122 /* RESegmentedControl */; };
29 + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; };
30 + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; };
31 + A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; };
23 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; 32 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; };
24 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 33 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
25 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; }; 34 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = E6A7785B282933E40045BBA8 /* WarplyReactMethods.m */; };
...@@ -159,6 +168,14 @@ ...@@ -159,6 +168,14 @@
159 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; }; 168 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoyaltyAnalysisViewController.swift; sourceTree = "<group>"; };
160 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; }; 169 1EBE97202865EE460080EFF7 /* MFYInboxTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFYInboxTableViewCell.swift; sourceTree = "<group>"; };
161 A02F34042882B6E60086465F /* TelcoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelcoViewController.swift; sourceTree = "<group>"; }; 170 A02F34042882B6E60086465F /* TelcoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TelcoViewController.swift; sourceTree = "<group>"; };
171 + A04D31DD288FF670000E43B5 /* HistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoryViewController.swift; sourceTree = "<group>"; };
172 + A079366D2885D07700064122 /* AnalysisChildViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisChildViewController.swift; sourceTree = "<group>"; };
173 + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItemViewCell.swift; sourceTree = "<group>"; };
174 + A07936722885E67400064122 /* AnalysisItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisItem.swift; sourceTree = "<group>"; };
175 + A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; };
176 + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; };
177 + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; };
178 + A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; };
162 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; 179 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; };
163 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; 180 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; };
164 C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 181 C0D5F56DD4E5371A50AD2D87 /* Pods_SwiftWarplyFramework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwiftWarplyFramework.framework; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -298,6 +315,7 @@ ...@@ -298,6 +315,7 @@
298 files = ( 315 files = (
299 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */, 316 1E2966EA2837A21D00F83FAC /* RSBarcodes_Swift in Frameworks */,
300 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */, 317 7630AD9A6242D60846D6750C /* Pods_SwiftWarplyFramework.framework in Frameworks */,
318 + A07936792885EF9400064122 /* RESegmentedControl in Frameworks */,
301 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */, 319 1EBF5F072840E13F00B8B17F /* SwiftEventBus in Frameworks */,
302 ); 320 );
303 runOnlyForDeploymentPostprocessing = 0; 321 runOnlyForDeploymentPostprocessing = 0;
...@@ -313,6 +331,44 @@ ...@@ -313,6 +331,44 @@
313 name = Frameworks; 331 name = Frameworks;
314 sourceTree = "<group>"; 332 sourceTree = "<group>";
315 }; 333 };
334 + A079366A2885CDDC00064122 /* analysis */ = {
335 + isa = PBXGroup;
336 + children = (
337 + A079367A2885F2D100064122 /* cells */,
338 + 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */,
339 + A079366D2885D07700064122 /* AnalysisChildViewController.swift */,
340 + A04D31DD288FF670000E43B5 /* HistoryViewController.swift */,
341 + A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */,
342 + );
343 + name = analysis;
344 + sourceTree = "<group>";
345 + };
346 + A07936712885E65C00064122 /* models */ = {
347 + isa = PBXGroup;
348 + children = (
349 + A07936722885E67400064122 /* AnalysisItem.swift */,
350 + );
351 + name = models;
352 + sourceTree = "<group>";
353 + };
354 + A07936742885E96A00064122 /* utilities */ = {
355 + isa = PBXGroup;
356 + children = (
357 + A07936752885E9CC00064122 /* UIColorExtensions.swift */,
358 + );
359 + name = utilities;
360 + sourceTree = "<group>";
361 + };
362 + A079367A2885F2D100064122 /* cells */ = {
363 + isa = PBXGroup;
364 + children = (
365 + A079366F2885D95600064122 /* AnalysisItemViewCell.swift */,
366 + A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */,
367 + A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */,
368 + );
369 + name = cells;
370 + sourceTree = "<group>";
371 + };
316 C049E0423E2B72D796B777A3 /* Pods */ = { 372 C049E0423E2B72D796B777A3 /* Pods */ = {
317 isa = PBXGroup; 373 isa = PBXGroup;
318 children = ( 374 children = (
...@@ -344,6 +400,9 @@ ...@@ -344,6 +400,9 @@
344 isa = PBXGroup; 400 isa = PBXGroup;
345 children = ( 401 children = (
346 A02F34042882B6E60086465F /* TelcoViewController.swift */, 402 A02F34042882B6E60086465F /* TelcoViewController.swift */,
403 + A07936712885E65C00064122 /* models */,
404 + A079366A2885CDDC00064122 /* analysis */,
405 + A07936742885E96A00064122 /* utilities */,
347 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, 406 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */,
348 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, 407 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */,
349 E6A7785D282933E40045BBA8 /* CouponViewController.swift */, 408 E6A7785D282933E40045BBA8 /* CouponViewController.swift */,
...@@ -362,7 +421,6 @@ ...@@ -362,7 +421,6 @@
362 1EB236AA28816B680063777A /* ShareViewController.swift */, 421 1EB236AA28816B680063777A /* ShareViewController.swift */,
363 1EB236AC28816C560063777A /* NumberPopupViewController.swift */, 422 1EB236AC28816C560063777A /* NumberPopupViewController.swift */,
364 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */, 423 1EB236AE28816CAB0063777A /* NumbersTableViewCell.swift */,
365 - 1EB5F4C9285370C90016F36E /* LoyaltyAnalysisViewController.swift */,
366 1EB5F4C728536FD60016F36E /* StepsViewController.swift */, 424 1EB5F4C728536FD60016F36E /* StepsViewController.swift */,
367 E6A77860282933E40045BBA8 /* MyApi.h */, 425 E6A77860282933E40045BBA8 /* MyApi.h */,
368 E6A778DC282933E60045BBA8 /* MyApi.m */, 426 E6A778DC282933E60045BBA8 /* MyApi.m */,
...@@ -672,6 +730,7 @@ ...@@ -672,6 +730,7 @@
672 packageProductDependencies = ( 730 packageProductDependencies = (
673 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */, 731 1E2966E92837A21D00F83FAC /* RSBarcodes_Swift */,
674 1EBF5F062840E13F00B8B17F /* SwiftEventBus */, 732 1EBF5F062840E13F00B8B17F /* SwiftEventBus */,
733 + A07936782885EF9400064122 /* RESegmentedControl */,
675 ); 734 );
676 productName = SwiftWarplyFramework; 735 productName = SwiftWarplyFramework;
677 productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */; 736 productReference = E6A7784E282933340045BBA8 /* SwiftWarplyFramework.framework */;
...@@ -704,6 +763,7 @@ ...@@ -704,6 +763,7 @@
704 packageReferences = ( 763 packageReferences = (
705 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */, 764 1E2966E82837A21D00F83FAC /* XCRemoteSwiftPackageReference "RSBarcodes_Swift" */,
706 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */, 765 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */,
766 + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */,
707 ); 767 );
708 productRefGroup = E6A7784F282933340045BBA8 /* Products */; 768 productRefGroup = E6A7784F282933340045BBA8 /* Products */;
709 projectDirPath = ""; 769 projectDirPath = "";
...@@ -787,10 +847,13 @@ ...@@ -787,10 +847,13 @@
787 E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */, 847 E6A7794B282933E70045BBA8 /* FMDatabase.m in Sources */,
788 E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */, 848 E6A778EC282933E60045BBA8 /* WLNativeVideoTableViewCell.m in Sources */,
789 E6A77954282933E70045BBA8 /* MyApi.m in Sources */, 849 E6A77954282933E70045BBA8 /* MyApi.m in Sources */,
850 + A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */,
790 E6A778F2282933E60045BBA8 /* WLNativeAdCollectionViewCell.m in Sources */, 851 E6A778F2282933E60045BBA8 /* WLNativeAdCollectionViewCell.m in Sources */,
791 E6A77904282933E60045BBA8 /* WLEvent.m in Sources */, 852 E6A77904282933E60045BBA8 /* WLEvent.m in Sources */,
792 E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */, 853 E6A77927282933E70045BBA8 /* UIRefreshControl+AFNetworking.m in Sources */,
793 E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */, 854 E6A77955282933E70045BBA8 /* ViewControllerExtensions.swift in Sources */,
855 + A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */,
856 + A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */,
794 E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */, 857 E6A7795A28293D390045BBA8 /* swiftApi.swift in Sources */,
795 E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */, 858 E6A77935282933E70045BBA8 /* UIWebView+AFNetworking.m in Sources */,
796 E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */, 859 E6A77925282933E70045BBA8 /* UIProgressView+AFNetworking.m in Sources */,
...@@ -800,6 +863,7 @@ ...@@ -800,6 +863,7 @@
800 E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */, 863 E6A77917282933E60045BBA8 /* UIViewController+WLAdditions.m in Sources */,
801 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */, 864 1EA2BB792865BFE8003F2AB0 /* InboxTableViewCell.swift in Sources */,
802 E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */, 865 E6A77943282933E70045BBA8 /* AFNetworkReachabilityManager.m in Sources */,
866 + A07936702885D95600064122 /* AnalysisItemViewCell.swift in Sources */,
803 E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */, 867 E6A77956282933E70045BBA8 /* GiftsViewController.swift in Sources */,
804 E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */, 868 E6A778F1282933E60045BBA8 /* WLNativeAdTableViewCell.m in Sources */,
805 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */, 869 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */,
...@@ -810,6 +874,7 @@ ...@@ -810,6 +874,7 @@
810 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */, 874 1EBE97212865EE460080EFF7 /* MFYInboxTableViewCell.swift in Sources */,
811 E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */, 875 E6A778FD282933E60045BBA8 /* WLInboxItem.m in Sources */,
812 E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */, 876 E6A778EE282933E60045BBA8 /* WLNativeAdsTableMode.m in Sources */,
877 + A07936732885E67400064122 /* AnalysisItem.swift in Sources */,
813 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */, 878 E6A778DF282933E60045BBA8 /* WarplyReactMethods.m in Sources */,
814 E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */, 879 E6A77941282933E70045BBA8 /* AFURLRequestSerialization.m in Sources */,
815 E6A77915282933E60045BBA8 /* WLUtils.m in Sources */, 880 E6A77915282933E60045BBA8 /* WLUtils.m in Sources */,
...@@ -822,12 +887,15 @@ ...@@ -822,12 +887,15 @@
822 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, 887 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */,
823 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, 888 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */,
824 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, 889 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */,
890 + A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */,
825 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, 891 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */,
826 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, 892 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */,
893 + A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */,
827 E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */, 894 E6A778FF282933E60045BBA8 /* WLBeacon.m in Sources */,
828 E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */, 895 E6A7791A282933E60045BBA8 /* WLAPPActionHandler.m in Sources */,
829 E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */, 896 E6A778E1282933E60045BBA8 /* CouponViewController.swift in Sources */,
830 E6A77924282933E70045BBA8 /* NSString+SSToolkitAdditions.m in Sources */, 897 E6A77924282933E70045BBA8 /* NSString+SSToolkitAdditions.m in Sources */,
898 + A04D31DE288FF670000E43B5 /* HistoryViewController.swift in Sources */,
831 E6A7792A282933E70045BBA8 /* AFNetworkActivityIndicatorManager.m in Sources */, 899 E6A7792A282933E70045BBA8 /* AFNetworkActivityIndicatorManager.m in Sources */,
832 E6A77914282933E60045BBA8 /* WLUserManager.m in Sources */, 900 E6A77914282933E60045BBA8 /* WLUserManager.m in Sources */,
833 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */, 901 1EB236AF28816CAC0063777A /* NumbersTableViewCell.swift in Sources */,
...@@ -1073,6 +1141,14 @@ ...@@ -1073,6 +1141,14 @@
1073 minimumVersion = 5.0.0; 1141 minimumVersion = 5.0.0;
1074 }; 1142 };
1075 }; 1143 };
1144 + A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */ = {
1145 + isa = XCRemoteSwiftPackageReference;
1146 + repositoryURL = "https://github.com/sh-khashimov/RESegmentedControl";
1147 + requirement = {
1148 + kind = upToNextMajorVersion;
1149 + minimumVersion = 0.5.1;
1150 + };
1151 + };
1076 /* End XCRemoteSwiftPackageReference section */ 1152 /* End XCRemoteSwiftPackageReference section */
1077 1153
1078 /* Begin XCSwiftPackageProductDependency section */ 1154 /* Begin XCSwiftPackageProductDependency section */
...@@ -1086,6 +1162,11 @@ ...@@ -1086,6 +1162,11 @@
1086 package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */; 1162 package = 1EBF5F052840E13F00B8B17F /* XCRemoteSwiftPackageReference "SwiftEventBus" */;
1087 productName = SwiftEventBus; 1163 productName = SwiftEventBus;
1088 }; 1164 };
1165 + A07936782885EF9400064122 /* RESegmentedControl */ = {
1166 + isa = XCSwiftPackageProductDependency;
1167 + package = A07936772885EF9400064122 /* XCRemoteSwiftPackageReference "RESegmentedControl" */;
1168 + productName = RESegmentedControl;
1169 + };
1089 /* End XCSwiftPackageProductDependency section */ 1170 /* End XCSwiftPackageProductDependency section */
1090 }; 1171 };
1091 rootObject = E6A77845282933340045BBA8 /* Project object */; 1172 rootObject = E6A77845282933340045BBA8 /* Project object */;
......
1 { 1 {
2 "pins" : [ 2 "pins" : [
3 { 3 {
4 + "identity" : "resegmentedcontrol",
5 + "kind" : "remoteSourceControl",
6 + "location" : "https://github.com/sh-khashimov/RESegmentedControl",
7 + "state" : {
8 + "revision" : "09d8cbd0da906c06d30fb057ab9902dc9d0e26b9",
9 + "version" : "0.5.1"
10 + }
11 + },
12 + {
4 "identity" : "rsbarcodes_swift", 13 "identity" : "rsbarcodes_swift",
5 "kind" : "remoteSourceControl", 14 "kind" : "remoteSourceControl",
6 "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift", 15 "location" : "https://github.com/yeahdongcn/RSBarcodes_Swift",
......
1 +//
2 +// AnalysisChildViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class AnalysisChildViewController: UITableViewController {
11 +
12 + public var index: Int = -1
13 +}
1 +//
2 +// AnalysisHeaderMessageViewCell.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class AnalysisHeaderMessageViewCell: UITableViewCell {
11 +
12 + // attributes
13 + @IBOutlet weak var itemImage: UIImageView!
14 + @IBOutlet weak var messageLabel: UILabel!
15 + @IBOutlet weak var titleLabel: UILabel!
16 +
17 + public var loyaltyBadge:swiftApi.LoyaltyBadgeModel = swiftApi().getLoyaltyBadge()
18 +
19 + // lifecycle
20 + override func awakeFromNib() {
21 + super.awakeFromNib()
22 +
23 + // image
24 + itemImage.image = UIImage(named: "ic_gift_circle", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
25 +
26 + // title
27 + titleLabel.textColor = UIColor(rgb: 0x435563)
28 + titleLabel.text = "Αναλυτικά:"
29 +
30 + // message
31 + messageLabel.textColor = UIColor(rgb: 0x435563)
32 + messageLabel.layer.borderWidth = 1.0
33 + messageLabel.layer.borderColor = UIColor(rgb: 0xB2CE69).cgColor
34 +
35 + let totalCouponDiscount = Float(round(100 * loyaltyBadge._value) / 100)
36 + var totalCouponDiscountString = "0"
37 + totalCouponDiscountString = String(format: "%.2f", totalCouponDiscount).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil)
38 +
39 + messageLabel.text = "Μέχρι τώρα έχεις κερδίσει " + totalCouponDiscountString + "€ σε προσφορές από " + String(loyaltyBadge._couponCount) + " κουπόνια!"
40 + }
41 +}
42 +
43 +extension AnalysisHeaderMessageViewCell {
44 + func configureCell(item: AnalysisItem) {
45 +
46 + // TODO: TO BE IMPLEMENTED
47 + }
48 +}
1 +//
2 +// AnalysisHeaderViewCell.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class AnalysisHeaderViewCell: UITableViewCell {
11 +
12 + // attributes
13 + @IBOutlet weak var itemImage: UIImageView!
14 + @IBOutlet weak var titleLabel: UILabel!
15 +
16 + // lifecycle
17 + override func awakeFromNib() {
18 + super.awakeFromNib()
19 +
20 + // image
21 + itemImage.image = UIImage(named: "ic_gift_circle", in: Bundle(for: MyEmptyClass.self), compatibleWith: nil)
22 +
23 + // title
24 + titleLabel.textColor = UIColor(rgb: 0x435563)
25 + titleLabel.text = "Αναλυτικά:"
26 + }
27 +}
28 +
29 +extension AnalysisHeaderViewCell {
30 + func configureCell(item: AnalysisItem) {
31 +
32 + // TODO: TO BE IMPLEMENTED
33 + }
34 +}
1 +//
2 +// AnalysisItem.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +public class AnalysisItem: Codable {
11 +
12 + // attributes
13 + public var date: Date
14 + public var image_url: String?
15 + public var title: String?
16 + public let subtitle: String?
17 + public var price: Float
18 +
19 + // initialization
20 + public init() {
21 + self.date = Date()
22 + self.image_url = ""
23 + self.title = ""
24 + self.subtitle = ""
25 + self.price = 4.0
26 + }
27 +}
1 +//
2 +// AnalysisItemViewCell.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class AnalysisItemViewCell: UITableViewCell {
11 +
12 + @IBOutlet weak var dateLabel: UILabel!
13 + @IBOutlet weak var itemImage: UIImageView!
14 + @IBOutlet weak var titleLabel: UILabel!
15 + @IBOutlet weak var priceLabel: UILabel!
16 + @IBOutlet weak var subtitleLabel: UILabel!
17 +
18 + // lifecycle
19 + override func awakeFromNib() {
20 + super.awakeFromNib()
21 +
22 + // date
23 + dateLabel.textColor = UIColor(rgb: 0x435563)
24 +
25 + // title
26 + titleLabel.textColor = UIColor(rgb: 0x435563)
27 +
28 + // price
29 + priceLabel.textColor = UIColor(rgb: 0x435563)
30 +
31 + // subtitle
32 + subtitleLabel.textColor = UIColor(rgb: 0x8B97A3)
33 + }
34 +}
35 +
36 +extension AnalysisItemViewCell {
37 + func configureCell(item: swiftApi.SharingCouponModel) {
38 +
39 + dateLabel.text = item._date
40 + //itemImage.image =
41 + titleLabel.text = item._name
42 +
43 + let priceFloat = Float(round(100 * (Float(item._discount) ?? 0.0)) / 100)
44 + var priceString = "0"
45 + priceString = String(format: "%.2f", priceFloat).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil)
46 + priceLabel.text = priceString + "€"
47 +
48 + if ("sent" == item._sharing_type) {
49 + subtitleLabel.text = String(format: "Εκπτωτικό κουπόνι προς " + item._receiver_msisdn)
50 + } else if ("received" == item._sharing_type) {
51 + subtitleLabel.text = String(format: "Εκπτωτικό κουπόνι από " + item._sender_msisdn)
52 + }
53 + }
54 +
55 + func configureCell(item: swiftApi.CouponItemModel) {
56 +
57 +// COUPONSET: desc, img_preview, name, terms
58 +// COUPON: coupon, expiration, discount, status
59 +
60 + let couponSetData: swiftApi.CouponSetItemModel? = item.couponset_data
61 +
62 + dateLabel.text = item.expiration ?? "" // TODO: change
63 + itemImage.load(link: couponSetData?.img_preview ?? "", placeholder: UIImage(), cache: URLCache())
64 + titleLabel.text = couponSetData?.name ?? ""
65 +
66 + let priceFloat = Float(round(100 * (Float(item.discount ?? "") ?? 0.0)) / 100)
67 + var priceString = "0"
68 + priceString = String(format: "%.2f", priceFloat).replacingOccurrences(of: ".", with: ",", options: .literal, range: nil)
69 + priceLabel.text = priceString + "€"
70 +
71 + subtitleLabel.text = couponSetData?.short_description ?? ""
72 +
73 + }
74 +}
1 +//
2 +// HistoryViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class HistoryViewController: AnalysisChildViewController {
11 +
12 + var loading: Bool = false
13 + var items: Array<swiftApi.CouponItemModel> = swiftApi().getCouponList()
14 +
15 + // TODO: remove this when configuring model
16 + let hasMessage = true
17 +
18 + // lifecycle
19 + override func viewDidLoad() {
20 +
21 + super.viewDidLoad()
22 +
23 + self.refreshControl = UIRefreshControl()
24 + self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged)
25 +
26 + handleRefresh(self.refreshControl!)
27 + }
28 +
29 + // mvp
30 + @objc func load() {
31 +
32 + if (loading) {
33 + return;
34 + }
35 +
36 + showLoading()
37 +
38 + items = swiftApi().getOldCouponList()
39 + showContent()
40 + self.tableView.reloadData()
41 + }
42 +
43 + private func showLoading() {
44 +
45 + loading = true
46 + if (self.refreshControl!.isRefreshing) {
47 + return;
48 + }
49 +
50 + self.refreshControl!.beginRefreshing()
51 + }
52 +
53 + private func showError() {
54 + }
55 +
56 + private func showContent() {
57 +
58 + loading = false
59 + self.refreshControl!.endRefreshing()
60 + }
61 +
62 + // private
63 + func responseCallback (_ data: Array<swiftApi.CouponItemModel>?) -> Void {
64 +
65 + self.items = data!
66 + showContent()
67 + DispatchQueue.main.async {
68 + self.tableView.reloadData()
69 + }
70 + }
71 +
72 + @objc func handleRefresh(_ refreshControl: UIRefreshControl) {
73 +
74 + self.perform(_: #selector(load), with: nil, afterDelay: 0.5)
75 + }
76 +
77 + // MARK: - Table view data source
78 + override func numberOfSections(in tableView: UITableView) -> Int {
79 + return 2
80 + }
81 +
82 + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
83 + if (section == 0) {
84 + return 1;
85 + }
86 +
87 + return items.count
88 + }
89 +
90 + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
91 + if (indexPath.section == 0) {
92 + return hasMessage ? 380.0 : 280
93 + }
94 +
95 + return 140.0
96 + }
97 +
98 + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
99 +
100 + // header
101 + if (indexPath.section == 0) {
102 + if (hasMessage) {
103 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell
104 + }
105 +
106 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell
107 + }
108 +
109 + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell
110 + cell.configureCell(item: items[indexPath.row])
111 +
112 + return cell
113 + }
114 +}
...@@ -2,30 +2,133 @@ ...@@ -2,30 +2,133 @@
2 // LoyaltyAnalysisViewController.swift 2 // LoyaltyAnalysisViewController.swift
3 // SwiftWarplyFramework 3 // SwiftWarplyFramework
4 // 4 //
5 -// Created by Manos Chorianopoulos on 10/6/22. 5 +// Created by Manos Chorianopoulos on 18/7/22.
6 // 6 //
7 7
8 import UIKit 8 import UIKit
9 +import RESegmentedControl
9 10
10 @objc public class LoyaltyAnalysisViewController: UIViewController { 11 @objc public class LoyaltyAnalysisViewController: UIViewController {
11 12
13 + @IBOutlet weak var leftButton: UIButton!
14 + @IBOutlet weak var rightButton: UIButton!
15 + @IBOutlet weak var contentView: UIView!
16 + var pageController: UIPageViewController!
17 +
12 public override func viewDidLoad() { 18 public override func viewDidLoad() {
13 super.viewDidLoad() 19 super.viewDidLoad()
14 20
15 self.hidesBottomBarWhenPushed = true 21 self.hidesBottomBarWhenPushed = true
16 22
17 - // Do any additional setup after loading the view. 23 + // setup view
24 + setBackButton()
25 + setNavigationTitle("Ανάλυση")
26 +
27 + // tab
28 + leftButton.setTitle("Εξαργυρωμένα", for:.normal)
29 + leftButton.backgroundColor = . clear
30 + leftButton.setTitleColor(UIColor(rgb: 0x2EAFB9), for:.normal)
31 +
32 + rightButton.setTitle("Μοιρασμένα δώρα", for:.normal)
33 + rightButton.backgroundColor = . clear
34 + rightButton.setTitleColor(UIColor(rgb: 0x2EAFB9), for:.normal)
35 +
36 + // pages
37 + pageController = UIPageViewController(transitionStyle:.scroll, navigationOrientation:.horizontal)
38 + pageController.dataSource = self;
39 + pageController.delegate = self;
40 +
41 + pageController.view.frame = contentView.bounds;
42 + addChild(pageController)
43 + contentView.addSubview(pageController.view)
44 + pageController .didMove(toParent: self)
45 +
46 + let analysisVC = self.viewControllerAt(0)
47 + pageController.setViewControllers([analysisVC!], direction:.forward, animated:false)
48 + }
49 +
50 + ////////////////////////////////////////////////////////////////////////////////
51 + private func viewControllerAt(_ index:Int) -> AnalysisChildViewController?
52 + {
53 + let storyboard = UIStoryboard(name: "Main", bundle: nil)
54 +
55 + if (index == 1) {
56 + let analysisVC = storyboard.instantiateViewController(withIdentifier:"SharingHistoryViewController") as! SharingHistoryViewController
57 + analysisVC.index = index;
58 +
59 + return analysisVC;
18 } 60 }
19 61
62 + let analysisVC = storyboard.instantiateViewController(withIdentifier:"HistoryViewController") as! HistoryViewController
63 + analysisVC.index = index;
64 +
65 + return analysisVC;
66 + }
67 +
68 + // MARK: - Handlers
69 + @IBAction func handleLeft() {
70 +
71 + let analysisVC = self.viewControllerAt(0)
72 + pageController.setViewControllers([analysisVC!], direction:.reverse, animated:true)
73 + }
74 +
75 + @IBAction func handleRight() {
76 +
77 + let analysisVC = self.viewControllerAt(1)
78 + pageController.setViewControllers([analysisVC!], direction:.forward, animated:true)
79 + }
80 +}
81 +
82 +// MARK: - PageViewController
83 +extension LoyaltyAnalysisViewController: UIPageViewControllerDataSource, UIPageViewControllerDelegate {
20 84
21 - /* 85 + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
22 - // MARK: - Navigation
23 86
24 - // In a storyboard-based application, you will often want to do a little preparation before navigation 87 + if let analysisVC = viewController as? AnalysisChildViewController {
25 - override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 88 + var index = analysisVC.index
26 - // Get the new view controller using segue.destination. 89 + if (index == 1) {
27 - // Pass the selected object to the new view controller. 90 + return nil;
28 } 91 }
29 - */
30 92
93 + index += 1;
94 + return viewControllerAt(index);
95 + }
96 +
97 + return nil;
98 + }
99 +
100 + public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
101 +
102 + if let analysisVC = viewController as? AnalysisChildViewController {
103 + var index = analysisVC.index
104 + if (index == 0) {
105 + return nil;
106 + }
107 +
108 + index -= 1;
109 + return viewControllerAt(index);
110 + }
111 +
112 + return nil;
113 + }
114 +
115 +
116 + public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
117 +
118 + if (!completed) {
119 + return;
120 + }
121 +
122 +
123 + if let childVCs = pageViewController.viewControllers as? [AnalysisChildViewController] {
124 + let currentIndex = childVCs[0].index
125 + if (currentIndex == 0) {
126 + leftButton.isSelected = true
127 + rightButton.isSelected = false
128 + } else {
129 + leftButton.isSelected = false
130 + rightButton.isSelected = true
131 + }
132 + }
133 + }
31 } 134 }
......
...@@ -379,7 +379,7 @@ ...@@ -379,7 +379,7 @@
379 </viewController> 379 </viewController>
380 <placeholder placeholderIdentifier="IBFirstResponder" id="Ee1-aw-PRJ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 380 <placeholder placeholderIdentifier="IBFirstResponder" id="Ee1-aw-PRJ" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
381 </objects> 381 </objects>
382 - <point key="canvasLocation" x="1535" y="837"/> 382 + <point key="canvasLocation" x="1612" y="836"/>
383 </scene> 383 </scene>
384 <!--Steps View Controller--> 384 <!--Steps View Controller-->
385 <scene sceneID="BCE-JX-L0C"> 385 <scene sceneID="BCE-JX-L0C">
...@@ -403,13 +403,253 @@ ...@@ -403,13 +403,253 @@
403 <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW"> 403 <view key="view" contentMode="scaleToFill" id="zWp-Y3-xCW">
404 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> 404 <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
405 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> 405 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
406 + <subviews>
407 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Z7V-En-7Tl">
408 + <rect key="frame" x="0.0" y="44" width="414" height="50"/>
409 + <subviews>
410 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="liP-dN-sf3">
411 + <rect key="frame" x="0.0" y="0.0" width="206.5" height="50"/>
412 + <state key="normal" title="Button"/>
413 + <buttonConfiguration key="configuration" style="plain" title="Button"/>
414 + <connections>
415 + <action selector="handleLeft" destination="duB-b9-cnh" eventType="touchUpInside" id="eCq-GW-QAg"/>
416 + </connections>
417 + </button>
418 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kAf-Oi-EnQ">
419 + <rect key="frame" x="206.5" y="0.0" width="1" height="50"/>
420 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
421 + <constraints>
422 + <constraint firstAttribute="width" constant="1" id="CxW-qN-ftc"/>
423 + </constraints>
424 + </view>
425 + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BNZ-3e-HXp">
426 + <rect key="frame" x="207.5" y="0.0" width="206.5" height="50"/>
427 + <state key="normal" title="Button"/>
428 + <buttonConfiguration key="configuration" style="plain" title="Button"/>
429 + <connections>
430 + <action selector="handleRight" destination="duB-b9-cnh" eventType="touchUpInside" id="bo6-x4-8Ld"/>
431 + </connections>
432 + </button>
433 + </subviews>
434 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
435 + <constraints>
436 + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="leading" secondItem="liP-dN-sf3" secondAttribute="trailing" id="7Eg-e7-UZK"/>
437 + <constraint firstItem="liP-dN-sf3" firstAttribute="leading" secondItem="Z7V-En-7Tl" secondAttribute="leading" id="CRR-X1-VXy"/>
438 + <constraint firstAttribute="trailing" secondItem="BNZ-3e-HXp" secondAttribute="trailing" id="FUC-Xt-vrx"/>
439 + <constraint firstAttribute="bottom" secondItem="liP-dN-sf3" secondAttribute="bottom" id="HX4-Xg-GBR"/>
440 + <constraint firstItem="liP-dN-sf3" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="O5V-e5-NPf"/>
441 + <constraint firstAttribute="height" constant="50" id="W4o-5O-kfL"/>
442 + <constraint firstItem="BNZ-3e-HXp" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="WtA-PL-BZy"/>
443 + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="centerX" secondItem="Z7V-En-7Tl" secondAttribute="centerX" id="jG4-gb-zWB"/>
444 + <constraint firstAttribute="bottom" secondItem="BNZ-3e-HXp" secondAttribute="bottom" id="kzL-YN-Vkn"/>
445 + <constraint firstItem="BNZ-3e-HXp" firstAttribute="leading" secondItem="kAf-Oi-EnQ" secondAttribute="trailing" id="zPD-7c-CdH"/>
446 + <constraint firstItem="kAf-Oi-EnQ" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="top" id="zq1-qp-f9S"/>
447 + <constraint firstAttribute="bottom" secondItem="kAf-Oi-EnQ" secondAttribute="bottom" id="zsL-bI-ChP"/>
448 + </constraints>
449 + </view>
450 + <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FyK-3t-liP">
451 + <rect key="frame" x="0.0" y="94" width="414" height="802"/>
452 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
453 + </view>
454 + </subviews>
406 <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/> 455 <viewLayoutGuide key="safeArea" id="cej-iH-8gP"/>
407 <color key="backgroundColor" systemColor="systemBackgroundColor"/> 456 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
457 + <constraints>
458 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="2VB-wC-r2b"/>
459 + <constraint firstItem="FyK-3t-liP" firstAttribute="top" secondItem="Z7V-En-7Tl" secondAttribute="bottom" id="E4I-cW-BL9"/>
460 + <constraint firstItem="FyK-3t-liP" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="NTr-5G-XH5"/>
461 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="trailing" secondItem="cej-iH-8gP" secondAttribute="trailing" id="PwM-0Q-xtQ"/>
462 + <constraint firstAttribute="bottom" secondItem="FyK-3t-liP" secondAttribute="bottom" id="fbh-Cd-dHd"/>
463 + <constraint firstItem="Z7V-En-7Tl" firstAttribute="top" secondItem="cej-iH-8gP" secondAttribute="top" id="l8U-kf-IRu"/>
464 + <constraint firstItem="FyK-3t-liP" firstAttribute="leading" secondItem="cej-iH-8gP" secondAttribute="leading" id="qiJ-nX-tRU"/>
465 + </constraints>
408 </view> 466 </view>
467 + <connections>
468 + <outlet property="contentView" destination="FyK-3t-liP" id="lBC-DU-jIb"/>
469 + <outlet property="leftButton" destination="liP-dN-sf3" id="PSM-x1-lPV"/>
470 + <outlet property="rightButton" destination="BNZ-3e-HXp" id="NDe-B7-wIV"/>
471 + </connections>
409 </viewController> 472 </viewController>
410 <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 473 <placeholder placeholderIdentifier="IBFirstResponder" id="jF4-GM-aCp" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
411 </objects> 474 </objects>
412 - <point key="canvasLocation" x="3126" y="836"/> 475 + <point key="canvasLocation" x="3124.6376811594205" y="835.71428571428567"/>
476 + </scene>
477 + <!--Sharing History View Controller-->
478 + <scene sceneID="Yng-iu-80u">
479 + <objects>
480 + <tableViewController id="xOZ-Af-1Nw" customClass="SharingHistoryViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController">
481 + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="160" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="IAk-m8-ZIC">
482 + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
483 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
484 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
485 + <prototypes>
486 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisItemViewCell" rowHeight="160" id="iNx-Id-iLB" customClass="AnalysisItemViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
487 + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/>
488 + <autoresizingMask key="autoresizingMask"/>
489 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="iNx-Id-iLB" id="X28-3l-fcy">
490 + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/>
491 + <autoresizingMask key="autoresizingMask"/>
492 + <subviews>
493 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="05/05/2022" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fWY-zJ-P1c" userLabel="Date">
494 + <rect key="frame" x="10" y="20" width="394" height="16"/>
495 + <constraints>
496 + <constraint firstAttribute="height" constant="16" id="5pR-Xb-nB2"/>
497 + </constraints>
498 + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
499 + <nil key="textColor"/>
500 + <nil key="highlightedColor"/>
501 + </label>
502 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rW5-M3-c7s">
503 + <rect key="frame" x="10" y="46" width="28" height="28"/>
504 + <constraints>
505 + <constraint firstAttribute="height" constant="28" id="Nw7-Mi-QTe"/>
506 + <constraint firstAttribute="width" constant="28" id="hEI-zc-TX4"/>
507 + </constraints>
508 + </imageView>
509 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4,00€" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pyr-Jo-zxl" userLabel="Price">
510 + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/>
511 + <constraints>
512 + <constraint firstAttribute="height" constant="20" id="WPI-8H-zbd"/>
513 + </constraints>
514 + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
515 + <nil key="textColor"/>
516 + <nil key="highlightedColor"/>
517 + </label>
518 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="BOX" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hqA-F6-n9s" userLabel="Title">
519 + <rect key="frame" x="42" y="50" width="295.5" height="20"/>
520 + <constraints>
521 + <constraint firstAttribute="height" constant="20" id="D6h-47-exa"/>
522 + </constraints>
523 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
524 + <nil key="textColor"/>
525 + <nil key="highlightedColor"/>
526 + </label>
527 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="Έκπτωτικό κουπόνι" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xac-fs-J8S" userLabel="Subtitle">
528 + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/>
529 + <fontDescription key="fontDescription" type="system" pointSize="18"/>
530 + <nil key="textColor"/>
531 + <nil key="highlightedColor"/>
532 + </label>
533 + </subviews>
534 + <constraints>
535 + <constraint firstItem="fWY-zJ-P1c" firstAttribute="top" secondItem="X28-3l-fcy" secondAttribute="top" constant="20" id="Gj8-gE-gbj"/>
536 + <constraint firstAttribute="trailing" secondItem="fWY-zJ-P1c" secondAttribute="trailing" constant="10" id="MNz-as-PZd"/>
537 + <constraint firstItem="hqA-F6-n9s" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="OpX-dx-J0h"/>
538 + <constraint firstItem="rW5-M3-c7s" firstAttribute="top" secondItem="fWY-zJ-P1c" secondAttribute="bottom" constant="10" id="Sbw-Ar-xiH"/>
539 + <constraint firstItem="xac-fs-J8S" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="leading" id="UYN-ui-q74"/>
540 + <constraint firstItem="rW5-M3-c7s" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Vco-mW-IpG"/>
541 + <constraint firstItem="fWY-zJ-P1c" firstAttribute="leading" secondItem="X28-3l-fcy" secondAttribute="leading" constant="10" id="Ynl-uB-QjI"/>
542 + <constraint firstItem="xac-fs-J8S" firstAttribute="trailing" secondItem="hqA-F6-n9s" secondAttribute="trailing" id="bKd-IG-1da"/>
543 + <constraint firstItem="xac-fs-J8S" firstAttribute="top" secondItem="hqA-F6-n9s" secondAttribute="bottom" constant="2" id="mQi-g5-OUm"/>
544 + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="leading" secondItem="hqA-F6-n9s" secondAttribute="trailing" constant="4" id="mzB-xA-7SR"/>
545 + <constraint firstAttribute="trailing" secondItem="Pyr-Jo-zxl" secondAttribute="trailing" constant="20" id="nYY-Th-Hob"/>
546 + <constraint firstItem="hqA-F6-n9s" firstAttribute="leading" secondItem="rW5-M3-c7s" secondAttribute="trailing" constant="4" id="r8B-Tl-KPA"/>
547 + <constraint firstItem="Pyr-Jo-zxl" firstAttribute="centerY" secondItem="rW5-M3-c7s" secondAttribute="centerY" id="zif-gr-5SM"/>
548 + </constraints>
549 + </tableViewCellContentView>
550 + <connections>
551 + <outlet property="dateLabel" destination="fWY-zJ-P1c" id="zmh-T6-Uia"/>
552 + <outlet property="itemImage" destination="rW5-M3-c7s" id="27r-CK-e8f"/>
553 + <outlet property="priceLabel" destination="Pyr-Jo-zxl" id="hWV-75-Gqf"/>
554 + <outlet property="subtitleLabel" destination="xac-fs-J8S" id="7ml-5a-zmc"/>
555 + <outlet property="titleLabel" destination="hqA-F6-n9s" id="zlL-DU-81T"/>
556 + </connections>
557 + </tableViewCell>
558 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderViewCell" rowHeight="280" id="HMC-zK-06F" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
559 + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/>
560 + <autoresizingMask key="autoresizingMask"/>
561 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="HMC-zK-06F" id="RtV-Li-Dnj">
562 + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/>
563 + <autoresizingMask key="autoresizingMask"/>
564 + <subviews>
565 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="xmN-ke-oBj">
566 + <rect key="frame" x="124" y="31" width="166" height="166"/>
567 + <constraints>
568 + <constraint firstAttribute="height" constant="166" id="OG9-xL-K4U"/>
569 + <constraint firstAttribute="width" constant="166" id="Xgj-YV-J4n"/>
570 + </constraints>
571 + </imageView>
572 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LKw-8l-mRY">
573 + <rect key="frame" x="162" y="248" width="90" height="22"/>
574 + <constraints>
575 + <constraint firstAttribute="height" constant="22" id="T1B-pX-6hx"/>
576 + </constraints>
577 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
578 + <nil key="textColor"/>
579 + <nil key="highlightedColor"/>
580 + </label>
581 + </subviews>
582 + <constraints>
583 + <constraint firstItem="xmN-ke-oBj" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="LvL-o4-MTE"/>
584 + <constraint firstAttribute="bottom" secondItem="LKw-8l-mRY" secondAttribute="bottom" constant="10" id="jlt-UV-Eud"/>
585 + <constraint firstItem="xmN-ke-oBj" firstAttribute="top" secondItem="RtV-Li-Dnj" secondAttribute="topMargin" constant="20" id="v4Z-tl-gBX"/>
586 + <constraint firstItem="LKw-8l-mRY" firstAttribute="centerX" secondItem="RtV-Li-Dnj" secondAttribute="centerX" id="yJq-7A-H3r"/>
587 + </constraints>
588 + </tableViewCellContentView>
589 + <connections>
590 + <outlet property="itemImage" destination="xmN-ke-oBj" id="zRs-Ks-2Re"/>
591 + <outlet property="titleLabel" destination="LKw-8l-mRY" id="2Nl-uC-2aJ"/>
592 + </connections>
593 + </tableViewCell>
594 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderMessageViewCell" rowHeight="380" id="oPh-jz-GSZ" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
595 + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/>
596 + <autoresizingMask key="autoresizingMask"/>
597 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="oPh-jz-GSZ" id="8oK-tI-pLa">
598 + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/>
599 + <autoresizingMask key="autoresizingMask"/>
600 + <subviews>
601 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nkc-wO-by3">
602 + <rect key="frame" x="50" y="237" width="314" height="60"/>
603 + <constraints>
604 + <constraint firstAttribute="height" constant="60" id="ZEz-dt-NJa"/>
605 + </constraints>
606 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
607 + <nil key="textColor"/>
608 + <nil key="highlightedColor"/>
609 + </label>
610 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sdY-Vd-bbW">
611 + <rect key="frame" x="124" y="31" width="166" height="166"/>
612 + <constraints>
613 + <constraint firstAttribute="height" constant="166" id="ZHj-a8-3y1"/>
614 + <constraint firstAttribute="width" constant="166" id="oqg-jC-ibc"/>
615 + </constraints>
616 + </imageView>
617 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9MF-rh-eec">
618 + <rect key="frame" x="166" y="339" width="82" height="20"/>
619 + <constraints>
620 + <constraint firstAttribute="height" constant="20" id="XkT-At-XWY"/>
621 + </constraints>
622 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
623 + <nil key="textColor"/>
624 + <nil key="highlightedColor"/>
625 + </label>
626 + </subviews>
627 + <constraints>
628 + <constraint firstItem="nkc-wO-by3" firstAttribute="top" secondItem="sdY-Vd-bbW" secondAttribute="bottom" constant="40" id="2Yl-Fb-ksG"/>
629 + <constraint firstItem="sdY-Vd-bbW" firstAttribute="top" secondItem="8oK-tI-pLa" secondAttribute="topMargin" constant="20" id="CEe-Np-pPS"/>
630 + <constraint firstAttribute="bottomMargin" secondItem="9MF-rh-eec" secondAttribute="bottom" constant="10" id="E0e-rS-Vwh"/>
631 + <constraint firstItem="sdY-Vd-bbW" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="L16-AP-9gA"/>
632 + <constraint firstItem="nkc-wO-by3" firstAttribute="leading" secondItem="8oK-tI-pLa" secondAttribute="leadingMargin" constant="30" id="MhA-nS-gcP"/>
633 + <constraint firstAttribute="trailingMargin" secondItem="nkc-wO-by3" secondAttribute="trailing" constant="30" id="dIv-s4-jcV"/>
634 + <constraint firstItem="9MF-rh-eec" firstAttribute="centerX" secondItem="8oK-tI-pLa" secondAttribute="centerX" id="pKh-jT-Xoe"/>
635 + </constraints>
636 + </tableViewCellContentView>
637 + <connections>
638 + <outlet property="itemImage" destination="sdY-Vd-bbW" id="FPk-8S-kCA"/>
639 + <outlet property="messageLabel" destination="nkc-wO-by3" id="4gl-nq-4jN"/>
640 + <outlet property="titleLabel" destination="9MF-rh-eec" id="ogv-9c-JWm"/>
641 + </connections>
642 + </tableViewCell>
643 + </prototypes>
644 + <connections>
645 + <outlet property="dataSource" destination="xOZ-Af-1Nw" id="rM1-30-TpG"/>
646 + <outlet property="delegate" destination="xOZ-Af-1Nw" id="YFj-hI-ntL"/>
647 + </connections>
648 + </tableView>
649 + </tableViewController>
650 + <placeholder placeholderIdentifier="IBFirstResponder" id="4gQ-3O-aEc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
651 + </objects>
652 + <point key="canvasLocation" x="3903" y="836"/>
413 </scene> 653 </scene>
414 <!--Wallet View Controller--> 654 <!--Wallet View Controller-->
415 <scene sceneID="tSr-9x-GQW"> 655 <scene sceneID="tSr-9x-GQW">
...@@ -615,19 +855,19 @@ ...@@ -615,19 +855,19 @@
615 <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg"> 855 <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="2" translatesAutoresizingMaskIntoConstraints="NO" id="MCY-xv-vpg">
616 <rect key="frame" x="20" y="20" width="254" height="60.5"/> 856 <rect key="frame" x="20" y="20" width="254" height="60.5"/>
617 <subviews> 857 <subviews>
618 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL"> 858 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Ενεργός κωδικός:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ucC-u4-AQL">
619 <rect key="frame" x="0.0" y="0.0" width="254" height="21.5"/> 859 <rect key="frame" x="0.0" y="0.0" width="254" height="21.5"/>
620 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/> 860 <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="18"/>
621 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> 861 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
622 <nil key="highlightedColor"/> 862 <nil key="highlightedColor"/>
623 </label> 863 </label>
624 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx"> 864 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="961544809" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qBe-Jw-QUx">
625 <rect key="frame" x="0.0" y="23.5" width="254" height="21.5"/> 865 <rect key="frame" x="0.0" y="23.5" width="254" height="21.5"/>
626 <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/> 866 <fontDescription key="fontDescription" type="system" weight="heavy" pointSize="18"/>
627 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/> 867 <color key="textColor" red="0.23529411759999999" green="0.32549019610000002" blue="0.39607843139999999" alpha="1" colorSpace="calibratedRGB"/>
628 <nil key="highlightedColor"/> 868 <nil key="highlightedColor"/>
629 </label> 869 </label>
630 - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA"> 870 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="Λήγει σε 4 ημέρες" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qL0-3b-eqA">
631 <rect key="frame" x="0.0" y="47" width="254" height="13.5"/> 871 <rect key="frame" x="0.0" y="47" width="254" height="13.5"/>
632 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> 872 <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/>
633 <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> 873 <color key="textColor" red="0.2274509804" green="0.32156862749999998" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
...@@ -1714,7 +1954,7 @@ ...@@ -1714,7 +1954,7 @@
1714 </viewController> 1954 </viewController>
1715 <placeholder placeholderIdentifier="IBFirstResponder" id="HMq-Fe-QT6" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 1955 <placeholder placeholderIdentifier="IBFirstResponder" id="HMq-Fe-QT6" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
1716 </objects> 1956 </objects>
1717 - <point key="canvasLocation" x="2951" y="144"/> 1957 + <point key="canvasLocation" x="3125" y="129"/>
1718 </scene> 1958 </scene>
1719 <!--Active Gifts View Controller--> 1959 <!--Active Gifts View Controller-->
1720 <scene sceneID="GKF-Re-TAp"> 1960 <scene sceneID="GKF-Re-TAp">
...@@ -1743,7 +1983,184 @@ ...@@ -1743,7 +1983,184 @@
1743 </viewController> 1983 </viewController>
1744 <placeholder placeholderIdentifier="IBFirstResponder" id="dOF-5b-vTf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> 1984 <placeholder placeholderIdentifier="IBFirstResponder" id="dOF-5b-vTf" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
1745 </objects> 1985 </objects>
1746 - <point key="canvasLocation" x="3590" y="144"/> 1986 + <point key="canvasLocation" x="3903" y="129"/>
1987 + </scene>
1988 + <!--History View Controller-->
1989 + <scene sceneID="KER-Da-ryV">
1990 + <objects>
1991 + <tableViewController id="ze6-Kr-Io4" customClass="HistoryViewController" customModule="SwiftWarplyFramework" customModuleProvider="target" sceneMemberID="viewController">
1992 + <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="160" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" id="qD1-U4-LYx">
1993 + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
1994 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
1995 + <color key="backgroundColor" systemColor="systemBackgroundColor"/>
1996 + <prototypes>
1997 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisItemViewCell" rowHeight="160" id="mwO-Y9-Whd" customClass="AnalysisItemViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
1998 + <rect key="frame" x="0.0" y="44.5" width="414" height="160"/>
1999 + <autoresizingMask key="autoresizingMask"/>
2000 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="mwO-Y9-Whd" id="4Lb-Ez-2D5">
2001 + <rect key="frame" x="0.0" y="0.0" width="414" height="160"/>
2002 + <autoresizingMask key="autoresizingMask"/>
2003 + <subviews>
2004 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="05/05/2022" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZqN-UN-x9M" userLabel="Date">
2005 + <rect key="frame" x="10" y="20" width="394" height="16"/>
2006 + <constraints>
2007 + <constraint firstAttribute="height" constant="16" id="Vgv-VT-mzv"/>
2008 + </constraints>
2009 + <fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
2010 + <nil key="textColor"/>
2011 + <nil key="highlightedColor"/>
2012 + </label>
2013 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="VHu-ds-i1E">
2014 + <rect key="frame" x="10" y="46" width="28" height="28"/>
2015 + <constraints>
2016 + <constraint firstAttribute="width" constant="28" id="0eN-xR-ec6"/>
2017 + <constraint firstAttribute="height" constant="28" id="OZS-QM-eof"/>
2018 + </constraints>
2019 + </imageView>
2020 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4,00€" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGs-RN-c7E" userLabel="Price">
2021 + <rect key="frame" x="341.5" y="50" width="52.5" height="20"/>
2022 + <constraints>
2023 + <constraint firstAttribute="height" constant="20" id="VS4-Dn-eBF"/>
2024 + </constraints>
2025 + <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
2026 + <nil key="textColor"/>
2027 + <nil key="highlightedColor"/>
2028 + </label>
2029 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="BOX" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Ag-Sp-uXt" userLabel="Title">
2030 + <rect key="frame" x="42" y="50" width="295.5" height="20"/>
2031 + <constraints>
2032 + <constraint firstAttribute="height" constant="20" id="U6X-e9-8w7"/>
2033 + </constraints>
2034 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
2035 + <nil key="textColor"/>
2036 + <nil key="highlightedColor"/>
2037 + </label>
2038 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="248" verticalHuggingPriority="251" text="Έκπτωτικό κουπόνι" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4bA-Ab-3q1" userLabel="Subtitle">
2039 + <rect key="frame" x="42" y="72" width="295.5" height="21.5"/>
2040 + <fontDescription key="fontDescription" type="system" pointSize="18"/>
2041 + <nil key="textColor"/>
2042 + <nil key="highlightedColor"/>
2043 + </label>
2044 + </subviews>
2045 + <constraints>
2046 + <constraint firstItem="9Ag-Sp-uXt" firstAttribute="leading" secondItem="VHu-ds-i1E" secondAttribute="trailing" constant="4" id="5Df-Np-oYZ"/>
2047 + <constraint firstAttribute="trailing" secondItem="ZGs-RN-c7E" secondAttribute="trailing" constant="20" id="7wc-o5-29i"/>
2048 + <constraint firstItem="ZGs-RN-c7E" firstAttribute="leading" secondItem="9Ag-Sp-uXt" secondAttribute="trailing" constant="4" id="Hjq-nc-G40"/>
2049 + <constraint firstItem="ZqN-UN-x9M" firstAttribute="leading" secondItem="4Lb-Ez-2D5" secondAttribute="leading" constant="10" id="PT7-de-Fld"/>
2050 + <constraint firstItem="VHu-ds-i1E" firstAttribute="leading" secondItem="4Lb-Ez-2D5" secondAttribute="leading" constant="10" id="Psu-2D-Icf"/>
2051 + <constraint firstItem="9Ag-Sp-uXt" firstAttribute="centerY" secondItem="VHu-ds-i1E" secondAttribute="centerY" id="Px2-r8-FUX"/>
2052 + <constraint firstItem="4bA-Ab-3q1" firstAttribute="top" secondItem="9Ag-Sp-uXt" secondAttribute="bottom" constant="2" id="VrB-Ui-gWz"/>
2053 + <constraint firstItem="4bA-Ab-3q1" firstAttribute="trailing" secondItem="9Ag-Sp-uXt" secondAttribute="trailing" id="bhA-o7-Cso"/>
2054 + <constraint firstItem="ZGs-RN-c7E" firstAttribute="centerY" secondItem="VHu-ds-i1E" secondAttribute="centerY" id="hDC-IU-u0r"/>
2055 + <constraint firstAttribute="trailing" secondItem="ZqN-UN-x9M" secondAttribute="trailing" constant="10" id="rSB-Gw-mg0"/>
2056 + <constraint firstItem="VHu-ds-i1E" firstAttribute="top" secondItem="ZqN-UN-x9M" secondAttribute="bottom" constant="10" id="rY7-hZ-thV"/>
2057 + <constraint firstItem="4bA-Ab-3q1" firstAttribute="leading" secondItem="9Ag-Sp-uXt" secondAttribute="leading" id="vSP-D0-3lM"/>
2058 + <constraint firstItem="ZqN-UN-x9M" firstAttribute="top" secondItem="4Lb-Ez-2D5" secondAttribute="top" constant="20" id="wui-T5-7cH"/>
2059 + </constraints>
2060 + </tableViewCellContentView>
2061 + <connections>
2062 + <outlet property="dateLabel" destination="ZqN-UN-x9M" id="GvG-Jp-72t"/>
2063 + <outlet property="itemImage" destination="VHu-ds-i1E" id="hie-z9-0r4"/>
2064 + <outlet property="priceLabel" destination="ZGs-RN-c7E" id="pMD-5S-hAB"/>
2065 + <outlet property="subtitleLabel" destination="4bA-Ab-3q1" id="cGH-SR-2cx"/>
2066 + <outlet property="titleLabel" destination="9Ag-Sp-uXt" id="FN2-u8-I6a"/>
2067 + </connections>
2068 + </tableViewCell>
2069 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderViewCell" rowHeight="280" id="TXv-Qw-94X" customClass="AnalysisHeaderViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
2070 + <rect key="frame" x="0.0" y="204.5" width="414" height="280"/>
2071 + <autoresizingMask key="autoresizingMask"/>
2072 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="TXv-Qw-94X" id="fmq-OF-USg">
2073 + <rect key="frame" x="0.0" y="0.0" width="414" height="280"/>
2074 + <autoresizingMask key="autoresizingMask"/>
2075 + <subviews>
2076 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Lul-sk-Xaj">
2077 + <rect key="frame" x="124" y="31" width="166" height="166"/>
2078 + <constraints>
2079 + <constraint firstAttribute="height" constant="166" id="gOb-nT-us3"/>
2080 + <constraint firstAttribute="width" constant="166" id="pY8-aZ-nnb"/>
2081 + </constraints>
2082 + </imageView>
2083 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XjQ-Dg-ucn">
2084 + <rect key="frame" x="162" y="248" width="90" height="22"/>
2085 + <constraints>
2086 + <constraint firstAttribute="height" constant="22" id="Ccg-Xm-m6C"/>
2087 + </constraints>
2088 + <fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
2089 + <nil key="textColor"/>
2090 + <nil key="highlightedColor"/>
2091 + </label>
2092 + </subviews>
2093 + <constraints>
2094 + <constraint firstItem="XjQ-Dg-ucn" firstAttribute="centerX" secondItem="fmq-OF-USg" secondAttribute="centerX" id="Lbh-ZU-mWb"/>
2095 + <constraint firstAttribute="bottom" secondItem="XjQ-Dg-ucn" secondAttribute="bottom" constant="10" id="b1r-ZX-eVt"/>
2096 + <constraint firstItem="Lul-sk-Xaj" firstAttribute="centerX" secondItem="fmq-OF-USg" secondAttribute="centerX" id="hOd-Db-G3B"/>
2097 + <constraint firstItem="Lul-sk-Xaj" firstAttribute="top" secondItem="fmq-OF-USg" secondAttribute="topMargin" constant="20" id="p5M-bI-lEn"/>
2098 + </constraints>
2099 + </tableViewCellContentView>
2100 + <connections>
2101 + <outlet property="itemImage" destination="Lul-sk-Xaj" id="yG3-o7-77x"/>
2102 + <outlet property="titleLabel" destination="XjQ-Dg-ucn" id="1uG-vu-ajJ"/>
2103 + </connections>
2104 + </tableViewCell>
2105 + <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AnalysisHeaderMessageViewCell" rowHeight="380" id="9cE-DQ-oc7" customClass="AnalysisHeaderMessageViewCell" customModule="SwiftWarplyFramework" customModuleProvider="target">
2106 + <rect key="frame" x="0.0" y="484.5" width="414" height="380"/>
2107 + <autoresizingMask key="autoresizingMask"/>
2108 + <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="9cE-DQ-oc7" id="Kcf-Zv-eMe">
2109 + <rect key="frame" x="0.0" y="0.0" width="414" height="380"/>
2110 + <autoresizingMask key="autoresizingMask"/>
2111 + <subviews>
2112 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Μέχρι τώρα έχεις κερδίσει 20,00€ σε προσφορές από 3 κουπόνια!" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yth-0S-P60">
2113 + <rect key="frame" x="50" y="237" width="314" height="60"/>
2114 + <constraints>
2115 + <constraint firstAttribute="height" constant="60" id="Ams-n8-yUP"/>
2116 + </constraints>
2117 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
2118 + <nil key="textColor"/>
2119 + <nil key="highlightedColor"/>
2120 + </label>
2121 + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="QY9-ar-jbw">
2122 + <rect key="frame" x="124" y="31" width="166" height="166"/>
2123 + <constraints>
2124 + <constraint firstAttribute="width" constant="166" id="ZuH-X9-Nie"/>
2125 + <constraint firstAttribute="height" constant="166" id="dUQ-Ou-Apu"/>
2126 + </constraints>
2127 + </imageView>
2128 + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Αναλυτικά:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nzx-D5-LHo">
2129 + <rect key="frame" x="166" y="339" width="82" height="20"/>
2130 + <constraints>
2131 + <constraint firstAttribute="height" constant="20" id="K9D-vL-Saj"/>
2132 + </constraints>
2133 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
2134 + <nil key="textColor"/>
2135 + <nil key="highlightedColor"/>
2136 + </label>
2137 + </subviews>
2138 + <constraints>
2139 + <constraint firstAttribute="trailingMargin" secondItem="Yth-0S-P60" secondAttribute="trailing" constant="30" id="6SE-2z-kcV"/>
2140 + <constraint firstItem="QY9-ar-jbw" firstAttribute="top" secondItem="Kcf-Zv-eMe" secondAttribute="topMargin" constant="20" id="7r7-Q0-rq4"/>
2141 + <constraint firstItem="nzx-D5-LHo" firstAttribute="centerX" secondItem="Kcf-Zv-eMe" secondAttribute="centerX" id="9MU-dy-Lh7"/>
2142 + <constraint firstItem="Yth-0S-P60" firstAttribute="top" secondItem="QY9-ar-jbw" secondAttribute="bottom" constant="40" id="f7j-JG-hqO"/>
2143 + <constraint firstItem="Yth-0S-P60" firstAttribute="leading" secondItem="Kcf-Zv-eMe" secondAttribute="leadingMargin" constant="30" id="qsD-vg-jYM"/>
2144 + <constraint firstAttribute="bottomMargin" secondItem="nzx-D5-LHo" secondAttribute="bottom" constant="10" id="tgQ-Ov-G72"/>
2145 + <constraint firstItem="QY9-ar-jbw" firstAttribute="centerX" secondItem="Kcf-Zv-eMe" secondAttribute="centerX" id="xiH-Cs-G6E"/>
2146 + </constraints>
2147 + </tableViewCellContentView>
2148 + <connections>
2149 + <outlet property="itemImage" destination="QY9-ar-jbw" id="UHu-bz-9Uk"/>
2150 + <outlet property="messageLabel" destination="Yth-0S-P60" id="tVN-jB-FvL"/>
2151 + <outlet property="titleLabel" destination="nzx-D5-LHo" id="cU7-6c-HiO"/>
2152 + </connections>
2153 + </tableViewCell>
2154 + </prototypes>
2155 + <connections>
2156 + <outlet property="dataSource" destination="ze6-Kr-Io4" id="XcZ-cQ-TzG"/>
2157 + <outlet property="delegate" destination="ze6-Kr-Io4" id="pAt-Pk-8Z1"/>
2158 + </connections>
2159 + </tableView>
2160 + </tableViewController>
2161 + <placeholder placeholderIdentifier="IBFirstResponder" id="8Bf-SH-BtT" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
2162 + </objects>
2163 + <point key="canvasLocation" x="4654" y="836"/>
1747 </scene> 2164 </scene>
1748 <!--Telco View Controller--> 2165 <!--Telco View Controller-->
1749 <scene sceneID="eiY-GQ-hTe"> 2166 <scene sceneID="eiY-GQ-hTe">
......
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
63 - (NSDictionary*) getCoupons; 63 - (NSDictionary*) getCoupons;
64 - (NSDictionary*) getTransactionHistory; 64 - (NSDictionary*) getTransactionHistory;
65 - (NSDictionary*) getPointsHistory; 65 - (NSDictionary*) getPointsHistory;
66 +- (NSDictionary*) getSharingHistory;
66 - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes; 67 - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes;
67 - (NSDictionary*)getAddress; 68 - (NSDictionary*)getAddress;
68 - (NSDictionary*)editAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes andUuid:(NSString*)uuid; 69 - (NSDictionary*)editAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes andUuid:(NSString*)uuid;
......
...@@ -940,6 +940,35 @@ NSString *VERIFY_URL = @"/partners/cosmote/verify"; ...@@ -940,6 +940,35 @@ NSString *VERIFY_URL = @"/partners/cosmote/verify";
940 return resp; 940 return resp;
941 } 941 }
942 942
943 +- (NSDictionary*) getSharingHistory
944 +{
945 + __block NSDictionary *resp = [NSDictionary alloc];
946 + __block BOOL isRunLoopNested = NO;
947 + __block BOOL isOperationCompleted = NO;
948 + [[Warply sharedService] getSharingHistoryWithSuccessBlock:^(NSDictionary *response) {
949 + resp = response;
950 + isOperationCompleted = YES;
951 + if (isRunLoopNested) {
952 + CFRunLoopStop(CFRunLoopGetCurrent()); // CFRunLoopRun() returns
953 + }
954 + } failureBlock:^(NSError *error) {
955 + NSLog(@"%@", error);
956 + resp = nil;
957 + isOperationCompleted = YES;
958 + if (isRunLoopNested) {
959 + CFRunLoopStop(CFRunLoopGetCurrent()); // CFRunLoopRun() returns
960 + }
961 + }];
962 + if ( ! isOperationCompleted) {
963 + isRunLoopNested = YES;
964 + NSLog(@"Waiting...");
965 + CFRunLoopRun(); // Magic!
966 + isRunLoopNested = NO;
967 + }
968 + return resp;
969 +}
970 +
971 +
943 - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes { 972 - (NSDictionary*)addAddress:(NSString*)friendlyName andAddressName:(NSString*)addressName andAddressNumber:(NSString*)addressNumber andPostalCode:(NSString*)postalCode andFloorNumber:(NSNumber*)floorNumber andDoorbell:(NSString*)doorbel andRegion:(NSString*)region andLatitude:(NSString*)latitude andLongitude:(NSString*)longitude andNotes:(NSString*)notes {
944 __block NSDictionary *resp = [NSDictionary alloc]; 973 __block NSDictionary *resp = [NSDictionary alloc];
945 __block BOOL isRunLoopNested = NO; 974 __block BOOL isRunLoopNested = NO;
......
1 +//
2 +// SharingHistoryViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import UIKit
9 +
10 +class SharingHistoryViewController: AnalysisChildViewController {
11 +
12 + var loading: Bool = false
13 + var items: Array<swiftApi.SharingCouponModel> = Array()
14 +
15 + // TODO: remove this when configuring model
16 + let hasMessage = false
17 +
18 + // lifecycle
19 + override func viewDidLoad() {
20 +
21 + super.viewDidLoad()
22 +
23 + self.refreshControl = UIRefreshControl()
24 + self.refreshControl?.addTarget(self, action: #selector(handleRefresh(_:)), for: .valueChanged)
25 +
26 + handleRefresh(self.refreshControl!)
27 + }
28 +
29 + // mvp
30 + @objc func load() {
31 +
32 + if (loading) {
33 + return;
34 + }
35 +
36 + showLoading()
37 +
38 + swiftApi().getSharingHistoryAsync(responseCallback)
39 + }
40 +
41 + private func showLoading() {
42 +
43 + loading = true
44 + if (self.refreshControl!.isRefreshing) {
45 + return;
46 + }
47 +
48 + self.refreshControl!.beginRefreshing()
49 + }
50 +
51 + private func showError() {
52 + }
53 +
54 + private func showContent() {
55 +
56 + loading = false
57 + self.refreshControl!.endRefreshing()
58 + }
59 +
60 + // private
61 + func responseCallback (_ data: Array<swiftApi.SharingCouponModel>?) -> Void {
62 +
63 + self.items = data!
64 + showContent()
65 + DispatchQueue.main.async {
66 + self.tableView.reloadData()
67 + }
68 + }
69 +
70 + @objc func handleRefresh(_ refreshControl: UIRefreshControl) {
71 +
72 + self.perform(_: #selector(load), with: nil, afterDelay: 0.5)
73 + }
74 +
75 + // MARK: - Table view data source
76 + override func numberOfSections(in tableView: UITableView) -> Int {
77 + return 2
78 + }
79 +
80 + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
81 + if (section == 0) {
82 + return 1;
83 + }
84 +
85 + return items.count
86 + }
87 +
88 + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
89 + if (indexPath.section == 0) {
90 + return hasMessage ? 380.0 : 280
91 + }
92 +
93 + return 140.0
94 + }
95 +
96 + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
97 +
98 + // header
99 + if (indexPath.section == 0) {
100 + if (hasMessage) {
101 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderMessageViewCell", for: indexPath) as! AnalysisHeaderMessageViewCell
102 + }
103 +
104 + return tableView.dequeueReusableCell(withIdentifier: "AnalysisHeaderViewCell", for: indexPath) as! AnalysisHeaderViewCell
105 + }
106 +
107 + let cell = tableView.dequeueReusableCell(withIdentifier: "AnalysisItemViewCell", for: indexPath) as! AnalysisItemViewCell
108 + cell.configureCell(item: items[indexPath.row])
109 +
110 + return cell
111 + }
112 +}
1 +//
2 +// UIColorExtensions.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Manos Chorianopoulos on 18/7/22.
6 +//
7 +
8 +import Foundation
9 +import UIKit
10 +
11 +extension UIColor {
12 + convenience init(rgb: UInt) {
13 + self.init(
14 + red: CGFloat((rgb & 0xFF0000) >> 16) / 255.0,
15 + green: CGFloat((rgb & 0x00FF00) >> 8) / 255.0,
16 + blue: CGFloat(rgb & 0x0000FF) / 255.0,
17 + alpha: CGFloat(1.0)
18 + )
19 + }
20 +}
...@@ -156,7 +156,6 @@ public class swiftApi { ...@@ -156,7 +156,6 @@ public class swiftApi {
156 return GlobalVariables.dfyCoupons 156 return GlobalVariables.dfyCoupons
157 } 157 }
158 158
159 -
160 public class CouponSetItemModel: Codable { 159 public class CouponSetItemModel: Codable {
161 public let uuid: String? 160 public let uuid: String?
162 public let admin_name: String? 161 public let admin_name: String?
......