- Handled cc avenue payment web view

- Added analytics and crashlytics.
- Completed add address
- Completed payment , added callback handler
This commit is contained in:
2024-07-29 20:04:40 +05:30
parent adb2e2684c
commit edcb7c4e29
26 changed files with 1402 additions and 200 deletions

View File

@@ -83,6 +83,16 @@
526A43752C36AA4A00AE148F /* GamesListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526A43742C36AA4A00AE148F /* GamesListVC.swift */; };
5272FCE32BDFDB05000ECB1D /* UserDetailsRegisterVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5272FCE22BDFDB05000ECB1D /* UserDetailsRegisterVC.swift */; };
5272FCE52BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5272FCE42BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift */; };
527A2BC22C576E980080DF9B /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 527A2BC12C576E980080DF9B /* FirebaseAnalytics */; };
527A2BC42C576E980080DF9B /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 527A2BC32C576E980080DF9B /* FirebaseCrashlytics */; };
527A2BC62C576EAF0080DF9B /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 527A2BC52C576EAF0080DF9B /* GoogleService-Info.plist */; };
527A2BC82C5777360080DF9B /* VerifyAddressPincodeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BC72C5777360080DF9B /* VerifyAddressPincodeVC.swift */; };
527A2BCA2C57776A0080DF9B /* AddNewAddressVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BC92C57776A0080DF9B /* AddNewAddressVC.swift */; };
527A2BCC2C577F8A0080DF9B /* AnalyticsEventKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BCB2C577F8A0080DF9B /* AnalyticsEventKeys.swift */; };
527A2BCE2C579D490080DF9B /* AddNewAddressVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BCD2C579D490080DF9B /* AddNewAddressVM.swift */; };
527A2BD02C57A2AE0080DF9B /* PaymentWebViewVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BCF2C57A2AE0080DF9B /* PaymentWebViewVC.swift */; };
527A2BD22C57B40A0080DF9B /* CartDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A2BD12C57B40A0080DF9B /* CartDataCache.swift */; };
527A2BD52C57D0C20080DF9B /* Address.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 527A2BD42C57D0C20080DF9B /* Address.storyboard */; };
527AC6F72C171C8F00434FB7 /* BlogsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527AC6F52C171C8F00434FB7 /* BlogsCell.swift */; };
527AC6F82C171C8F00434FB7 /* BlogsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 527AC6F62C171C8F00434FB7 /* BlogsCell.xib */; };
527AC6FA2C17387300434FB7 /* SongBlogDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527AC6F92C17387300434FB7 /* SongBlogDM.swift */; };
@@ -414,6 +424,14 @@
526A43742C36AA4A00AE148F /* GamesListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamesListVC.swift; sourceTree = "<group>"; };
5272FCE22BDFDB05000ECB1D /* UserDetailsRegisterVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailsRegisterVC.swift; sourceTree = "<group>"; };
5272FCE42BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailsRegisterVM.swift; sourceTree = "<group>"; };
527A2BC52C576EAF0080DF9B /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
527A2BC72C5777360080DF9B /* VerifyAddressPincodeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerifyAddressPincodeVC.swift; sourceTree = "<group>"; };
527A2BC92C57776A0080DF9B /* AddNewAddressVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewAddressVC.swift; sourceTree = "<group>"; };
527A2BCB2C577F8A0080DF9B /* AnalyticsEventKeys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsEventKeys.swift; sourceTree = "<group>"; };
527A2BCD2C579D490080DF9B /* AddNewAddressVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewAddressVM.swift; sourceTree = "<group>"; };
527A2BCF2C57A2AE0080DF9B /* PaymentWebViewVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentWebViewVC.swift; sourceTree = "<group>"; };
527A2BD12C57B40A0080DF9B /* CartDataCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CartDataCache.swift; sourceTree = "<group>"; };
527A2BD42C57D0C20080DF9B /* Address.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Address.storyboard; sourceTree = "<group>"; };
527AC6F52C171C8F00434FB7 /* BlogsCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlogsCell.swift; sourceTree = "<group>"; };
527AC6F62C171C8F00434FB7 /* BlogsCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BlogsCell.xib; sourceTree = "<group>"; };
527AC6F92C17387300434FB7 /* SongBlogDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SongBlogDM.swift; sourceTree = "<group>"; };
@@ -647,6 +665,8 @@
files = (
4469E533EC95AC428FE50FB2 /* Pods_WOKA.framework in Frameworks */,
52C83E3F2C493FD700F27563 /* RSKPlaceholderTextView in Frameworks */,
527A2BC42C576E980080DF9B /* FirebaseCrashlytics in Frameworks */,
527A2BC22C576E980080DF9B /* FirebaseAnalytics in Frameworks */,
521CB1002C493DB80085BDF8 /* JWPlayerKit in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -782,6 +802,7 @@
523ED25C2BDA2BC700CFED02 /* WOKA */ = {
isa = PBXGroup;
children = (
527A2BD32C57D0B20080DF9B /* Address */,
5259542C2BEA392A00191286 /* Alerts */,
523ED2932BDA3D0100CFED02 /* Assets */,
52BFB52B2C33DA9700BAAE15 /* Audio Books */,
@@ -796,6 +817,7 @@
52C8B0512BDA4B51003B51D0 /* Helpers */,
9CBCB2A62BE5104F007D7934 /* Home */,
523ED26B2BDA2BC900CFED02 /* Info.plist */,
527A2BC52C576EAF0080DF9B /* GoogleService-Info.plist */,
9CB3D0832C37BA470062869D /* Karaoke */,
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
@@ -1064,6 +1086,56 @@
path = Model;
sourceTree = "<group>";
};
527A2BD32C57D0B20080DF9B /* Address */ = {
isa = PBXGroup;
children = (
527A2BD92C57D0CD0080DF9B /* Model */,
527A2BD82C57D0CA0080DF9B /* View */,
527A2BD72C57D0C70080DF9B /* ViewModel */,
527A2BD62C57D0C50080DF9B /* Controller */,
527A2BD42C57D0C20080DF9B /* Address.storyboard */,
);
path = Address;
sourceTree = "<group>";
};
527A2BD62C57D0C50080DF9B /* Controller */ = {
isa = PBXGroup;
children = (
52BBFCB12C52730C00F7D0D1 /* AddressListVC.swift */,
527A2BC92C57776A0080DF9B /* AddNewAddressVC.swift */,
527A2BC72C5777360080DF9B /* VerifyAddressPincodeVC.swift */,
527A2BCF2C57A2AE0080DF9B /* PaymentWebViewVC.swift */,
);
path = Controller;
sourceTree = "<group>";
};
527A2BD72C57D0C70080DF9B /* ViewModel */ = {
isa = PBXGroup;
children = (
52BBFCB32C5275E100F7D0D1 /* AddressListVM.swift */,
527A2BCD2C579D490080DF9B /* AddNewAddressVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
};
527A2BD82C57D0CA0080DF9B /* View */ = {
isa = PBXGroup;
children = (
52BBFCB72C52782600F7D0D1 /* AddressCell.swift */,
52BBFCB82C52782600F7D0D1 /* AddressCell.xib */,
);
path = View;
sourceTree = "<group>";
};
527A2BD92C57D0CD0080DF9B /* Model */ = {
isa = PBXGroup;
children = (
52BBFCB52C52764B00F7D0D1 /* AddressListDM.swift */,
9CDAEB132C54132E00890C47 /* CheckEddDM.swift */,
);
path = Model;
sourceTree = "<group>";
};
527AC6FF2C182D1700434FB7 /* Timer */ = {
isa = PBXGroup;
children = (
@@ -1138,6 +1210,7 @@
52A6DCC12C4F8E8500F63C51 /* ViewModel */,
52A6DCC02C4F8E8300F63C51 /* Controller */,
52A6DCBE2C4F8E7C00F63C51 /* Cart.storyboard */,
527A2BD12C57B40A0080DF9B /* CartDataCache.swift */,
);
path = Cart;
sourceTree = "<group>";
@@ -1147,7 +1220,6 @@
children = (
52A6DCC42C4F8EA800F63C51 /* CartListVC.swift */,
525861D12C4FC6C000C33C79 /* CartPaymentOptionsVC.swift */,
52BBFCB12C52730C00F7D0D1 /* AddressListVC.swift */,
);
path = Controller;
sourceTree = "<group>";
@@ -1157,7 +1229,6 @@
children = (
52A6DCC62C4F8FD000F63C51 /* CartListVM.swift */,
525861D32C4FCCB500C33C79 /* CartPaymentOptionsVM.swift */,
52BBFCB32C5275E100F7D0D1 /* AddressListVM.swift */,
);
path = ViewModel;
sourceTree = "<group>";
@@ -1171,8 +1242,6 @@
525861D62C4FD38D00C33C79 /* CartPaymentOptionsCell.xib */,
525861DB2C4FE7A100C33C79 /* CouponCell.swift */,
525861DC2C4FE7A100C33C79 /* CouponCell.xib */,
52BBFCB72C52782600F7D0D1 /* AddressCell.swift */,
52BBFCB82C52782600F7D0D1 /* AddressCell.xib */,
);
path = View;
sourceTree = "<group>";
@@ -1183,8 +1252,6 @@
52A6DCC82C4F906900F63C51 /* CartListingDM.swift */,
525861D92C4FE71100C33C79 /* CouponListDM.swift */,
525861DF2C4FF16700C33C79 /* CouponApplyDM.swift */,
52BBFCB52C52764B00F7D0D1 /* AddressListDM.swift */,
9CDAEB132C54132E00890C47 /* CheckEddDM.swift */,
);
path = Model;
sourceTree = "<group>";
@@ -1317,6 +1384,7 @@
524C42302C0499560016A11C /* NotificationCenterReloads.swift */,
9C8C4FAF2C1328060017DD3B /* Disclaimer.rtf */,
9C3E14462C517E8F00D06C10 /* TopViewEnum.swift */,
527A2BCB2C577F8A0080DF9B /* AnalyticsEventKeys.swift */,
);
path = "Constants K";
sourceTree = "<group>";
@@ -1740,6 +1808,8 @@
packageProductDependencies = (
521CB0FF2C493DB80085BDF8 /* JWPlayerKit */,
52C83E3E2C493FD700F27563 /* RSKPlaceholderTextView */,
527A2BC12C576E980080DF9B /* FirebaseAnalytics */,
527A2BC32C576E980080DF9B /* FirebaseCrashlytics */,
);
productName = WOKA;
productReference = 523ED25A2BDA2BC700CFED02 /* WOKA.app */;
@@ -1817,6 +1887,7 @@
packageReferences = (
521CB0FE2C493DB80085BDF8 /* XCRemoteSwiftPackageReference "JWPlayerKit-package" */,
52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */,
527A2BC02C576E980080DF9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */,
);
productRefGroup = 523ED25B2BDA2BC700CFED02 /* Products */;
projectDirPath = "";
@@ -1859,6 +1930,7 @@
526A436F2C36A97400AE148F /* Games.storyboard in Resources */,
9CDAEB0B2C53E9FF00890C47 /* ShopProductImageCell.xib in Resources */,
522D65652C1ACE9C0021E505 /* UserNotificationCell.xib in Resources */,
527A2BD52C57D0C20080DF9B /* Address.storyboard in Resources */,
9C535DC52C00BF2400DA6DCD /* HomeExploreCell.xib in Resources */,
9CBE1B422C0F37B300CA6E61 /* DropDownCell.xib in Resources */,
52A3F6A92BECBF2A0000BB0B /* LinkedChildCell.xib in Resources */,
@@ -1882,6 +1954,7 @@
52C6E0262BE3B46A00E22D59 /* SelectAvatarCell.xib in Resources */,
52C8B0712BDA7512003B51D0 /* PassingCloud.json in Resources */,
9C8C4FB02C1328060017DD3B /* Disclaimer.rtf in Resources */,
527A2BC62C576EAF0080DF9B /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1983,6 +2056,7 @@
525953D42BE8B2DF00191286 /* UIApplication.swift in Sources */,
52C8EC802C358E75002DC35C /* AudioBookDetailsVC.swift in Sources */,
52CC38C32BDF812F00B74C3E /* LocalisedElements.swift in Sources */,
527A2BD02C57A2AE0080DF9B /* PaymentWebViewVC.swift in Sources */,
52A6DCCC2C4F929B00F63C51 /* CartListCell.swift in Sources */,
5259545E2BEBBA1A00191286 /* LoadingIndicatorImageView.swift in Sources */,
52B8D4DC2C04A25E00ED65F3 /* Delegate.swift in Sources */,
@@ -2052,6 +2126,7 @@
9C7939132C0EFCAE00F5D6E6 /* FaqVM.swift in Sources */,
52D774ED2BDFC13F001D87DE /* OTPVM.swift in Sources */,
52D23F112C465E6F003E743A /* LogoutPopupVC.swift in Sources */,
527A2BD22C57B40A0080DF9B /* CartDataCache.swift in Sources */,
525327D62BFCC23600F64283 /* SideMenuVM.swift in Sources */,
525861D22C4FC6C000C33C79 /* CartPaymentOptionsVC.swift in Sources */,
525861DA2C4FE71100C33C79 /* CouponListDM.swift in Sources */,
@@ -2061,6 +2136,7 @@
9CBE1B402C0F37B300CA6E61 /* DPDKeyboardListener.swift in Sources */,
52A3F6AB2BECBF550000BB0B /* LinkedChildVC.swift in Sources */,
52FDBA7B2BFF2712009D7AC7 /* AuthFuncTimeHandling.swift in Sources */,
527A2BC82C5777360080DF9B /* VerifyAddressPincodeVC.swift in Sources */,
9C834EC62C1C1D9500B29A9C /* BlogDetailsVC.swift in Sources */,
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */,
52C8D8D42C2D9F3400CA72A6 /* LikeFavCommonFunc.swift in Sources */,
@@ -2084,6 +2160,7 @@
9C0A853F2BEE35340093783D /* ForgotPassDM.swift in Sources */,
9CBCB2AA2BE51A52007D7934 /* ThemeOneVC.swift in Sources */,
52D774E92BDFBDA4001D87DE /* AuthenticationStringConstant.swift in Sources */,
527A2BCE2C579D490080DF9B /* AddNewAddressVM.swift in Sources */,
5259541B2BE8D6F900191286 /* NetworkReachibility.swift in Sources */,
52AF71EE2C36AD3100BC5972 /* GamesListVM.swift in Sources */,
52A981CE2C1AFE66000E0BEC /* FavouriteListingDM.swift in Sources */,
@@ -2160,6 +2237,7 @@
52A981D72C1B0E27000E0BEC /* FavouriteCell.swift in Sources */,
52C8B05F2BDA5AFA003B51D0 /* SplashVM.swift in Sources */,
52C1A4E12C05B69F007BAA50 /* UIApplicationSwitchRoot.swift in Sources */,
527A2BCC2C577F8A0080DF9B /* AnalyticsEventKeys.swift in Sources */,
52663FF72BDFACF60001D8CE /* ShadowView.swift in Sources */,
522D65602C1ACD8D0021E505 /* UserNotificationVC.swift in Sources */,
52AC2D252C295A7900337473 /* TeaserDM.swift in Sources */,
@@ -2185,6 +2263,7 @@
9CBE1B452C0F37B300CA6E61 /* DropDownCell.swift in Sources */,
9C27E16D2BDB852F00EC1DA9 /* GVar.swift in Sources */,
52B8D4E02C04A25E00ED65F3 /* UIView+Container.swift in Sources */,
527A2BCA2C57776A0080DF9B /* AddNewAddressVC.swift in Sources */,
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */,
52A6DCC92C4F906900F63C51 /* CartListingDM.swift in Sources */,
522D65622C1ACDA40021E505 /* CommonNwCall.swift in Sources */,
@@ -2610,6 +2689,14 @@
version = 4.19.1;
};
};
527A2BC02C576E980080DF9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/firebase/firebase-ios-sdk.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 10.29.0;
};
};
52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/ruslanskorb/RSKPlaceholderTextView.git";
@@ -2626,6 +2713,16 @@
package = 521CB0FE2C493DB80085BDF8 /* XCRemoteSwiftPackageReference "JWPlayerKit-package" */;
productName = JWPlayerKit;
};
527A2BC12C576E980080DF9B /* FirebaseAnalytics */ = {
isa = XCSwiftPackageProductDependency;
package = 527A2BC02C576E980080DF9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseAnalytics;
};
527A2BC32C576E980080DF9B /* FirebaseCrashlytics */ = {
isa = XCSwiftPackageProductDependency;
package = 527A2BC02C576E980080DF9B /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */;
productName = FirebaseCrashlytics;
};
52C83E3E2C493FD700F27563 /* RSKPlaceholderTextView */ = {
isa = XCSwiftPackageProductDependency;
package = 52C83E3D2C493FD700F27563 /* XCRemoteSwiftPackageReference "RSKPlaceholderTextView" */;

View File

@@ -74,6 +74,12 @@
ReferencedContainer = "container:WOKA.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "-FIRAnalyticsDebugEnabled"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "IDEPreferLogStreaming"

View File

@@ -0,0 +1,648 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<customFonts key="customFonts">
<array key="Exo2-Bold.ttf">
<string>Exo2-Bold</string>
</array>
<array key="Exo2-Regular.ttf">
<string>Exo2-Regular</string>
</array>
</customFonts>
<scenes>
<!--Verify Address PincodeVC-->
<scene sceneID="Upd-vi-uVH">
<objects>
<viewController storyboardIdentifier="VerifyAddressPincodeVC" id="EzK-8E-Z9y" customClass="VerifyAddressPincodeVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="m3A-6R-jow">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="60" translatesAutoresizingMaskIntoConstraints="NO" id="eqb-f6-ptc">
<rect key="frame" x="20" y="74" width="374" height="218"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Please enter your Pincode below to check service availability in your area." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4el-im-Ptb" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="374" height="48"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="20"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter Pincode" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="8JG-SF-ofW" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="108" width="374" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="CGP-V6-id7"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="numberPad" returnKeyType="done" enablesReturnKeyAutomatically="YES" textContentType="postal-code"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oUf-8Y-ZJl" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="218" width="374" height="0.0"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="beF-iZ-GoK" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="20" y="782" width="374" height="50"/>
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="5Bz-6e-Frn">
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</constraint>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="CHECK NOW">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="proceedBtnTapped:" destination="EzK-8E-Z9y" eventType="touchUpInside" id="SiH-sF-OLA"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="i17-bU-C2J"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstItem="i17-bU-C2J" firstAttribute="bottom" secondItem="beF-iZ-GoK" secondAttribute="bottom" constant="30" id="67A-iC-kFF"/>
<constraint firstItem="beF-iZ-GoK" firstAttribute="leading" secondItem="m3A-6R-jow" secondAttribute="leading" constant="20" id="Q8H-rp-kqH"/>
<constraint firstAttribute="trailing" secondItem="eqb-f6-ptc" secondAttribute="trailing" constant="20" id="Sjg-yY-gCP"/>
<constraint firstItem="eqb-f6-ptc" firstAttribute="leading" secondItem="i17-bU-C2J" secondAttribute="leading" constant="20" id="bnJ-qb-iGw"/>
<constraint firstItem="i17-bU-C2J" firstAttribute="trailing" secondItem="beF-iZ-GoK" secondAttribute="trailing" constant="20" id="erU-gK-rSC"/>
<constraint firstItem="eqb-f6-ptc" firstAttribute="top" secondItem="i17-bU-C2J" secondAttribute="top" constant="30" id="udO-7f-M4T"/>
</constraints>
</view>
<connections>
<outlet property="pinCodeTF" destination="8JG-SF-ofW" id="YJw-3G-Yhm"/>
<outlet property="pincodeServieable" destination="oUf-8Y-ZJl" id="7gC-0f-bLf"/>
<outlet property="proceedBtn" destination="beF-iZ-GoK" id="jp6-FD-Eja"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="UkX-3H-I0g" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2347.826086956522" y="-35.491071428571423"/>
</scene>
<!--Add New AddressVC-->
<scene sceneID="bAM-ow-jH6">
<objects>
<viewController storyboardIdentifier="AddNewAddressVC" id="kUr-6C-wWC" customClass="AddNewAddressVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="CDd-dV-9ZS">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tqo-IU-eLh">
<rect key="frame" x="0.0" y="44" width="414" height="758"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Fyh-aj-dYn">
<rect key="frame" x="0.0" y="0.0" width="414" height="878.66666666666663"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Add New Address" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S8i-lX-bse" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="5" width="394" height="24"/>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="20"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="v5u-ae-Jzp">
<rect key="frame" x="10" y="48.999999999999993" width="394" height="79.333333333333314"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address Name (Firstname &amp; Lastname)" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZOH-FN-Yqz" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter address name" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="M6e-0t-FoD" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333329" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="dGT-rJ-SeV"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocapitalizationType="words" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="name"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="14w-xR-r1s">
<rect key="frame" x="10" y="148.33333333333334" width="394" height="79.333333333333343"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address Line 1" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4qC-Pk-qkH" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter address line 1" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4gp-xB-FLw" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333314" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="FTw-KD-YCm"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="address-line2"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="ipZ-MN-bfu">
<rect key="frame" x="10" y="247.66666666666671" width="394" height="79.333333333333343"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Address Line 2" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zm9-HI-4ph" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter address line 1" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Le6-W7-6jI" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333314" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="ClL-wQ-HJ9"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="address-line1"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="rcB-OF-B3k">
<rect key="frame" x="10" y="347" width="394" height="79.333333333333314"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="City" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uq9-GD-cPW" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter city" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="BEd-ik-j0X" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333314" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="6m3-1Y-mTb"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="address-level2"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="c85-0g-vGf">
<rect key="frame" x="10" y="446.33333333333331" width="394" height="79.333333333333314"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="State" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9DD-Ab-AS9" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter state" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="SOb-Uq-xld" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333314" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="hXR-PQ-U9y"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="address-level1"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="ei6-kZ-2Pa">
<rect key="frame" x="10" y="545.66666666666663" width="394" height="79.333333333333371"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pincode" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ej4-NQ-wVN" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter coupon code" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="BqV-8B-1vE" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333371" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="kqh-DZ-rjE"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="numberPad" enablesReturnKeyAutomatically="YES" textContentType="postal-code"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="Mzj-PS-LkR">
<rect key="frame" x="10" y="645" width="394" height="79.333333333333371"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Country" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tyL-9S-yyo" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter country" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="lbG-6e-Siu" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333371" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="CxD-Jl-SHl"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocapitalizationType="words" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="country-name"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="dHl-UE-mSu">
<rect key="frame" x="10" y="744.33333333333337" width="394" height="79.333333333333371"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Phone Number" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QfX-WL-6A3" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="0.0" width="384" height="19.333333333333332"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter phone number" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Kmc-Zf-kNp" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="5" y="29.333333333333258" width="384" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" name="TextDarkBlue"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="jQD-1Y-U29"/>
</constraints>
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="phonePad" enablesReturnKeyAutomatically="YES" textContentType="tel"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</textField>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JSs-5V-3H5">
<rect key="frame" x="10" y="843.66666666666663" width="394" height="30"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="f6z-cu-XpL"/>
</constraints>
</view>
</subviews>
<edgeInsets key="layoutMargins" top="5" left="10" bottom="5" right="10"/>
</stackView>
</subviews>
<constraints>
<constraint firstItem="Fyh-aj-dYn" firstAttribute="leading" secondItem="AQg-AR-7VO" secondAttribute="leading" id="9Fd-aE-WIV"/>
<constraint firstItem="AQg-AR-7VO" firstAttribute="trailing" secondItem="Fyh-aj-dYn" secondAttribute="trailing" id="GPC-Tr-IsZ"/>
<constraint firstAttribute="bottom" secondItem="Fyh-aj-dYn" secondAttribute="bottom" id="S1e-yr-XFD"/>
<constraint firstItem="Fyh-aj-dYn" firstAttribute="width" secondItem="UFX-gk-2Lv" secondAttribute="width" id="fJn-5i-y4g"/>
<constraint firstItem="Fyh-aj-dYn" firstAttribute="top" secondItem="tqo-IU-eLh" secondAttribute="top" id="faW-Of-4eU"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="UFX-gk-2Lv"/>
<viewLayoutGuide key="frameLayoutGuide" id="AQg-AR-7VO"/>
</scrollView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HwB-90-dXI" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="10" y="807" width="394" height="50"/>
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="VmU-cD-GuG">
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</constraint>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="SUBMIT">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
<connections>
<action selector="submitBtnTapped:" destination="kUr-6C-wWC" eventType="touchUpInside" id="qvM-dW-RKq"/>
</connections>
</button>
</subviews>
<viewLayoutGuide key="safeArea" id="u6A-RO-Swd"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstItem="HwB-90-dXI" firstAttribute="leading" secondItem="u6A-RO-Swd" secondAttribute="leading" constant="10" id="12I-4V-n7e"/>
<constraint firstItem="HwB-90-dXI" firstAttribute="top" secondItem="tqo-IU-eLh" secondAttribute="bottom" constant="5" id="5BO-yu-r6D"/>
<constraint firstItem="tqo-IU-eLh" firstAttribute="top" secondItem="u6A-RO-Swd" secondAttribute="top" id="5UP-2Q-3bB"/>
<constraint firstItem="u6A-RO-Swd" firstAttribute="bottom" secondItem="HwB-90-dXI" secondAttribute="bottom" constant="5" id="6VC-fw-cK2"/>
<constraint firstItem="u6A-RO-Swd" firstAttribute="trailing" secondItem="tqo-IU-eLh" secondAttribute="trailing" id="NyN-gw-npW"/>
<constraint firstItem="u6A-RO-Swd" firstAttribute="trailing" secondItem="HwB-90-dXI" secondAttribute="trailing" constant="10" id="nNM-Hp-YuE"/>
<constraint firstItem="tqo-IU-eLh" firstAttribute="leading" secondItem="CDd-dV-9ZS" secondAttribute="leading" id="zIQ-dz-zKX"/>
</constraints>
</view>
<connections>
<outlet property="addressLine1TF" destination="4gp-xB-FLw" id="GEx-j8-lBv"/>
<outlet property="addressLine2TF" destination="Le6-W7-6jI" id="dnP-7d-DsF"/>
<outlet property="cityTF" destination="BEd-ik-j0X" id="sm0-IF-PLw"/>
<outlet property="countryTF" destination="lbG-6e-Siu" id="rUo-gx-F8A"/>
<outlet property="enterAddressNAmeTF" destination="M6e-0t-FoD" id="nNw-0k-g1r"/>
<outlet property="phoneNumberTF" destination="Kmc-Zf-kNp" id="ygJ-lq-GVb"/>
<outlet property="pinCodeTF" destination="BqV-8B-1vE" id="GOb-l8-s0J"/>
<outlet property="stateTF" destination="SOb-Uq-xld" id="YCh-hO-Fpd"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="VYK-hh-sUe" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3076.811594202899" y="-34.151785714285715"/>
</scene>
<!--Address ListVC-->
<scene sceneID="yYB-W8-Be2">
<objects>
<viewController storyboardIdentifier="AddressListVC" id="9jV-jN-cBr" customClass="AddressListVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="3PQ-Lr-YrD">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ry1-Ll-tvj">
<rect key="frame" x="10" y="49" width="394" height="808"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JAF-kY-lUa">
<rect key="frame" x="7" y="7" width="380" height="794"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="w05-l0-ALY">
<rect key="frame" x="10" y="10" width="360" height="649"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</tableView>
<stackView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="ZcH-zz-6Ma">
<rect key="frame" x="10" y="674" width="360" height="110"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZNs-65-Cqv" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="360" height="50"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="EPk-lY-YfW"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Use Selected Address">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="btnTapped:" destination="9jV-jN-cBr" eventType="touchUpInside" id="nVx-ab-UAY"/>
</connections>
</button>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="02u-58-7FW" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="60" width="360" height="50"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="S7b-39-iqV"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Add New Address">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="btnTapped:" destination="9jV-jN-cBr" eventType="touchUpInside" id="pfh-ww-S2K"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="ZcH-zz-6Ma" firstAttribute="top" secondItem="w05-l0-ALY" secondAttribute="bottom" constant="15" id="3Dl-PA-lw7"/>
<constraint firstAttribute="trailing" secondItem="ZcH-zz-6Ma" secondAttribute="trailing" constant="10" id="BgO-T1-2ax"/>
<constraint firstAttribute="bottom" secondItem="ZcH-zz-6Ma" secondAttribute="bottom" constant="10" id="CVN-3H-3hL"/>
<constraint firstItem="w05-l0-ALY" firstAttribute="top" secondItem="JAF-kY-lUa" secondAttribute="top" constant="10" id="bEt-2z-c5O"/>
<constraint firstAttribute="trailing" secondItem="w05-l0-ALY" secondAttribute="trailing" constant="10" id="fcO-JQ-gBO"/>
<constraint firstItem="w05-l0-ALY" firstAttribute="leading" secondItem="JAF-kY-lUa" secondAttribute="leading" constant="10" id="t9N-Yr-mjo"/>
<constraint firstItem="ZcH-zz-6Ma" firstAttribute="leading" secondItem="JAF-kY-lUa" secondAttribute="leading" constant="10" id="xLc-xS-qUW"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="JAF-kY-lUa" secondAttribute="bottom" constant="7" id="4Za-62-BdI"/>
<constraint firstAttribute="trailing" secondItem="JAF-kY-lUa" secondAttribute="trailing" constant="7" id="7tt-XB-j8O"/>
<constraint firstItem="JAF-kY-lUa" firstAttribute="leading" secondItem="Ry1-Ll-tvj" secondAttribute="leading" constant="7" id="bYh-QC-Mfw"/>
<constraint firstItem="JAF-kY-lUa" firstAttribute="top" secondItem="Ry1-Ll-tvj" secondAttribute="top" constant="7" id="k5x-tt-fzJ"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="37x-el-mdR"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstItem="37x-el-mdR" firstAttribute="bottom" secondItem="Ry1-Ll-tvj" secondAttribute="bottom" constant="5" id="g8o-D8-sxQ"/>
<constraint firstItem="37x-el-mdR" firstAttribute="trailing" secondItem="Ry1-Ll-tvj" secondAttribute="trailing" constant="10" id="hfh-kM-3II"/>
<constraint firstItem="Ry1-Ll-tvj" firstAttribute="top" secondItem="37x-el-mdR" secondAttribute="top" constant="5" id="nXO-UI-rOM"/>
<constraint firstItem="Ry1-Ll-tvj" firstAttribute="leading" secondItem="37x-el-mdR" secondAttribute="leading" constant="10" id="zid-rU-Ovk"/>
</constraints>
</view>
<connections>
<outlet property="addNewAddressBtn" destination="02u-58-7FW" id="eWv-38-GfZ"/>
<outlet property="innerView" destination="JAF-kY-lUa" id="cM7-cm-pqy"/>
<outlet property="tableView" destination="w05-l0-ALY" id="J15-i9-ySS"/>
<outlet property="useSelectedAddBtn" destination="ZNs-65-Cqv" id="hYN-Nc-H8h"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="AE5-IA-WsS" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1637" y="-35"/>
</scene>
<!--Payment Web ViewVC-->
<scene sceneID="Lox-n8-Pum">
<objects>
<viewController storyboardIdentifier="PaymentWebViewVC" id="Ijq-60-uUO" customClass="PaymentWebViewVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="vAr-Rb-W19">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<wkWebView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pMD-fy-kTc">
<rect key="frame" x="0.0" y="44" width="414" height="852"/>
<color key="backgroundColor" red="0.36078431370000003" green="0.38823529410000002" blue="0.4039215686" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<wkWebViewConfiguration key="configuration">
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
<wkPreferences key="preferences"/>
</wkWebViewConfiguration>
</wkWebView>
</subviews>
<viewLayoutGuide key="safeArea" id="9hc-zU-C3r"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="pMD-fy-kTc" firstAttribute="top" secondItem="9hc-zU-C3r" secondAttribute="top" id="Bfy-5b-hPK"/>
<constraint firstItem="pMD-fy-kTc" firstAttribute="leading" secondItem="9hc-zU-C3r" secondAttribute="leading" id="JEJ-jC-kj3"/>
<constraint firstAttribute="bottom" secondItem="pMD-fy-kTc" secondAttribute="bottom" id="jvs-sH-EBo"/>
<constraint firstItem="9hc-zU-C3r" firstAttribute="trailing" secondItem="pMD-fy-kTc" secondAttribute="trailing" id="uYG-b4-Die"/>
</constraints>
</view>
<connections>
<outlet property="webView" destination="pMD-fy-kTc" id="bji-wV-HRX"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="XVA-9y-F1L" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="3845" y="-34"/>
</scene>
</scenes>
<designables>
<designable name="4gp-xB-FLw">
<size key="intrinsicContentSize" width="191" height="21"/>
</designable>
<designable name="8JG-SF-ofW">
<size key="intrinsicContentSize" width="150" height="21"/>
</designable>
<designable name="BEd-ik-j0X">
<size key="intrinsicContentSize" width="119" height="21"/>
</designable>
<designable name="BqV-8B-1vE">
<size key="intrinsicContentSize" width="184.33333333333334" height="21"/>
</designable>
<designable name="Kmc-Zf-kNp">
<size key="intrinsicContentSize" width="198.33333333333334" height="21"/>
</designable>
<designable name="Le6-W7-6jI">
<size key="intrinsicContentSize" width="191" height="21"/>
</designable>
<designable name="M6e-0t-FoD">
<size key="intrinsicContentSize" width="195.33333333333334" height="21"/>
</designable>
<designable name="SOb-Uq-xld">
<size key="intrinsicContentSize" width="130.33333333333334" height="21"/>
</designable>
<designable name="lbG-6e-Siu">
<size key="intrinsicContentSize" width="149" height="21"/>
</designable>
</designables>
<resources>
<namedColor name="TextDarkBlue">
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemGreenColor">
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,133 @@
//
// AddNewAddressVC.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
class AddNewAddressVC: UIViewController {
@IBOutlet weak var enterAddressNAmeTF: TextFieldShadow! // min - 2 , max - 50
@IBOutlet weak var addressLine1TF: TextFieldShadow!
@IBOutlet weak var addressLine2TF: TextFieldShadow!
@IBOutlet weak var cityTF: TextFieldShadow!
@IBOutlet weak var stateTF: TextFieldShadow!
@IBOutlet weak var pinCodeTF: TextFieldShadow!
@IBOutlet weak var countryTF: TextFieldShadow!
@IBOutlet weak var phoneNumberTF: TextFieldShadow!
var vm = AddNewAddressVM()
override func viewDidLoad() {
super.viewDidLoad()
vm.vc = self
vm.initView()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.setColor(color: .white)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Customize the navigation bar's appearance
self.navigationController?.setColor(color: .black)
}
@IBAction func submitBtnTapped(_ sender: LocalisedElementsButton) {
if enterAddressNAmeTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "Name should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if addressLine1TF.text!.count < 15 {
Utilities.alertWithBtn(title: "", msgBody: "Address Line 1 should be minimum 15 Characters.", okBtnStr: "OK", vc: self)
return
}
if addressLine2TF.text!.count < 15 {
Utilities.alertWithBtn(title: "", msgBody: "Address Line 2 should be minimum 15 Characters.", okBtnStr: "OK", vc: self)
return
}
if cityTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "City should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if stateTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "State should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if countryTF.text!.count < 2 {
Utilities.alertWithBtn(title: "", msgBody: "Country should be minimum 2 Characters.", okBtnStr: "OK", vc: self)
return
}
if phoneNumberTF.text!.count < 10 {
Utilities.alertWithBtn(title: "", msgBody: "Enter 10 digit mobile number", okBtnStr: "OK", vc: self)
return
}
self.vm.addAddress()
}
}
extension AddNewAddressVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
switch textField{
case enterAddressNAmeTF:
if !string.nameCharacterOnly(){return false}
// min - 2 , max - 50
return ValidatorClass.sharedInstanec.limitCharacter(length: 50,textField, shouldChangeCharactersIn: range, replacementString: string)
case addressLine1TF, addressLine2TF:
if !string.numberAndCharacter(){return false}
// min - 2 , max - 200
return ValidatorClass.sharedInstanec.limitCharacter(length: 200,textField, shouldChangeCharactersIn: range, replacementString: string)
case cityTF, stateTF, countryTF:
if !string.nameCharacterOnly(){return false}
// min - 2 , max - 200
return ValidatorClass.sharedInstanec.limitCharacter(length: 50,textField, shouldChangeCharactersIn: range, replacementString: string)
case phoneNumberTF:
if !string.onlyNumber(){return false}
// max - 10
return ValidatorClass.sharedInstanec.limitCharacter(length: 10,textField, shouldChangeCharactersIn: range, replacementString: string)
default:
break
}
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField{
case enterAddressNAmeTF:
addressLine1TF.becomeFirstResponder()
case addressLine1TF:
addressLine2TF.becomeFirstResponder()
case addressLine2TF:
cityTF.becomeFirstResponder()
case cityTF:
stateTF.becomeFirstResponder()
case stateTF:
countryTF.becomeFirstResponder()
case countryTF:
phoneNumberTF.becomeFirstResponder()
default:
break
}
return true
}
}

View File

@@ -36,7 +36,9 @@ class AddressListVC: UIViewController {
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.setColor(color: .white)
// handle data change
self.tableView.reloadData()
}
override func viewWillDisappear(_ animated: Bool) {
@@ -52,6 +54,16 @@ class AddressListVC: UIViewController {
}
@IBAction func btnTapped(_ sender: LocalisedElementsButton) {
switch sender{
case useSelectedAddBtn:
vm.createOrder()
case addNewAddressBtn:
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.verifyAddressPincodeVC) as! VerifyAddressPincodeVC
self.navigationController?.pushViewController(vcPush, animated: true)
default:
break
}
}
}
@@ -59,27 +71,27 @@ class AddressListVC: UIViewController {
extension AddressListVC : TableViewSRC{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return vm.addressData.count
return CartDataCache.addressData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: K.CellIdentifier.Cart.addressCell) as! AddressCell
let data = vm.addressData[indexPath.row]
let data = CartDataCache.addressData[indexPath.row]
cell.setData(data: data)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
for index in vm.addressData.indices {
vm.addressData[index].isDefault = false
for index in CartDataCache.addressData.indices {
CartDataCache.addressData[index].isDefault = false
}
if vm.addressData[indexPath.row].eddDate == nil || vm.addressData[indexPath.row].eddDate == ""{
if let pincode = vm.addressData[indexPath.row].pincode, let id = vm.addressData[indexPath.row].id{
if CartDataCache.addressData[indexPath.row].eddDate == nil || CartDataCache.addressData[indexPath.row].eddDate == ""{
if let pincode = CartDataCache.addressData[indexPath.row].pincode, let id = CartDataCache.addressData[indexPath.row].id{
vm.checkEstimatedDeliveryData(pinCode: pincode, id: id)
}
}
vm.addressData[indexPath.row].isDefault = true
CartDataCache.addressData[indexPath.row].isDefault = true
tableView.reloadData()
}
}

View File

@@ -0,0 +1,71 @@
//
// PaymentWebViewVC.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
import WebKit
class PaymentWebViewVC: UIViewController {
@IBOutlet weak var webView: WKWebView!
var url : String?
override func viewDidLoad() {
super.viewDidLoad()
if let url {
let link = URL(string:url)!
let request = URLRequest(url: link)
webView.load(request)
}
webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let key = change?[NSKeyValueChangeKey.newKey] {
print("observeValue \(key)") // url value
if let finalURL = key as? URL {
let endpoint = finalURL.lastPathComponent
var domain = String()
if #available(iOS 16.0, *) {
domain = finalURL.host() ?? ""
} else {
domain = finalURL.host ?? ""
}
if domain == "secure.ccavenue.com" && endpoint.lowercased() == "canceltransaction"{
Timer.scheduledTimer(withTimeInterval: 2.5, repeats: false) { _ in
self.dismiss(animated: true)
}
}
} else {
print("urlAny is not a String")
}
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.setColor(color: .white)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Customize the navigation bar's appearance
self.navigationController?.setColor(color: .black)
}
}

View File

@@ -0,0 +1,150 @@
//
// VerifyAddressPincodeVC.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
import Alamofire
class VerifyAddressPincodeVC: UIViewController {
@IBOutlet weak var pinCodeTF: TextFieldShadow!
@IBOutlet weak var proceedBtn: LocalisedElementsButton!
@IBOutlet weak var pincodeServieable: LocalisedElementsLabel!
var verifyPincodeData : CheckEddDM.ResultData?
override func viewDidLoad() {
super.viewDidLoad()
addGradient()
self.pinCodeTF.roundCorner()
self.title = "ADDRESS DETAILS".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
pinCodeTF.delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.setNavigationBarHidden(false, animated: animated)
}
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.setColor(color: .white)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.setNavigationBarHidden(true, animated: animated)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Customize the navigation bar's appearance
self.navigationController?.setColor(color: .black)
}
@IBAction func proceedBtnTapped(_ sender: LocalisedElementsButton) {
guard let tf = pinCodeTF.text else{return}
if sender.titleLabel?.text == "CHECK NOW"{
if tf.count < 6{
Utilities.alertWithBtn(title: "", msgBody: "Please enter 6 digit pincode.", okBtnStr: "OK", vc: self)
return
}
//check if user is checking for same pincode
if let verifyPincodeData{
if tf == verifyPincodeData.lmPincode{
checkServiceAble()
return
}
}
checkEstimatedDeliveryData(pinCode: tf)
} else{
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.addNewAddressVC) as! AddNewAddressVC
vcPush.vm.pincode = tf
self.navigationController?.pushViewController(vcPush, animated: true)
}
}
func addGradient(){
let color1 = #colorLiteral(red: 0.6745098039, green: 0.6235294118, blue: 0.1725490196, alpha: 1)
let color2 = #colorLiteral(red: 0.5450980392, green: 0.6745098039, blue: 0.1725490196, alpha: 1)
self.view.applyGradient(colors: [color2, color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
}
func checkEstimatedDeliveryData(pinCode : String){
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["pincode" : pinCode]
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.pincode_serviceability_check_edd, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<CheckEddDM>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
Utilities.dismissProgressHUD()
return
}
switch data.success{
case 0:
/*
Error
*/
Utilities.dismissProgressHUD()
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data?.result else{return}
self.verifyPincodeData = data
checkServiceAble()
default:
Utilities.dismissProgressHUD()
break
}
case .failure(let error):
guard let self else{
Utilities.dismissProgressHUD()
return
}
Utilities.dismissProgressHUD()
self.toast(msg: error.localizedDescription, time: 1.5)
}
}
}
func checkServiceAble(){
guard let data = self.verifyPincodeData else{
self.pincodeServieable.text = "Pincode Unserviceable."
proceedBtn.setTitle("CHECK NOW", for: .normal)
return
}
proceedBtn.setTitle("PROCEED", for: .normal)
self.pincodeServieable.text = "Pincode Servicable." + "\n" + "Expected delivery by " + (data.edd ?? "123456")
}
}
extension VerifyAddressPincodeVC : UITextFieldDelegate{
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// Check if user is deleting text so hide pincode servicable text
if string.count == 0 && range.length > 0 {
self.pincodeServieable.text = ""
self.proceedBtn.setTitle("CHECK NOW", for: .normal)
// Back pressed
return true
}
//Pincode should be only number
if !string.onlyNumber(){return false}
// pincode should be max 6 characters in length
return ValidatorClass.sharedInstanec.limitCharacter(length: 6,textField, shouldChangeCharactersIn: range, replacementString: string)
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print("Return")
return true
}
}

View File

@@ -25,3 +25,4 @@ struct AddressListDM: Codable {
case email
}
}

View File

@@ -0,0 +1,101 @@
//
// AddNewAddressVM.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import UIKit
import Alamofire
class AddNewAddressVM{
weak var vc : AddNewAddressVC!
var pincode = String()
func initView(){
vc.title = "ADDRESS DETAILS".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
addGradient()
vc.enterAddressNAmeTF.delegate = self.vc
vc.addressLine1TF.delegate = self.vc
vc.addressLine2TF.delegate = self.vc
vc.cityTF.delegate = self.vc
vc.stateTF.delegate = self.vc
vc.countryTF.delegate = self.vc
vc.phoneNumberTF.delegate = self.vc
vc.enterAddressNAmeTF.roundCorner()
vc.addressLine1TF.roundCorner()
vc.addressLine2TF.roundCorner()
vc.cityTF.roundCorner()
vc.stateTF.roundCorner()
vc.countryTF.roundCorner()
vc.phoneNumberTF.roundCorner()
vc.pinCodeTF.roundCorner()
vc.pinCodeTF.text = pincode
}
func addGradient(){
let color1 = #colorLiteral(red: 0.6745098039, green: 0.6235294118, blue: 0.1725490196, alpha: 1)
let color2 = #colorLiteral(red: 0.5450980392, green: 0.6745098039, blue: 0.1725490196, alpha: 1)
vc.view.applyGradient(colors: [color2, color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
}
func addAddress(){
Utilities.startProgressHUD()
let address = (vc.addressLine1TF.text ?? "") + ", " + (vc.addressLine2TF.text ?? "")
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["address_name" : vc.enterAddressNAmeTF.text!,
"address" : address,
"city" : vc.cityTF.text!,
"state" : vc.stateTF.text!,
"pincode" : vc.pinCodeTF.text!,
"mobile_number" : vc.phoneNumberTF.text!]
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.add_parent_address, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<AddressListDM>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
Utilities.dismissProgressHUD()
return
}
switch data.success{
case 0:
/*
Error
*/
Utilities.dismissProgressHUD()
case 1:
Utilities.dismissProgressHUD()
self.vc.toast(msg: data.message ?? "Address Added", time: 2) {
guard let data = data.data else{return}
CartDataCache.addressData.append(data)
//set the newly added address as default
guard let navigationController = self.vc.navigationController else {
print("Not in a navigation controller")
return
}
if let targetController = navigationController.viewControllers.first(where: { $0 is AddressListVC }) {
navigationController.popToViewController(targetController, animated: true)
} else {
print("Target view controller not found in the navigation stack")
}
}
default:
Utilities.dismissProgressHUD()
break
}
case .failure(let error):
guard let self else{
Utilities.dismissProgressHUD()
return
}
Utilities.dismissProgressHUD()
Utilities.alert(title: "Error", message: error.localizedDescription, viewController: self.vc)
}
}
}
}

View File

@@ -11,7 +11,6 @@ import Alamofire
class AddressListVM{
weak var vc : AddressListVC!
var addressData = [AddressListDM]()
func initView(){
vc.innerView.addBorderView(width: 1, color: .darkGray)
@@ -51,7 +50,7 @@ class AddressListVM{
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Cart.parent_address_listing, method: .get,headers: headers) { [weak self](result : Result<BaseResponseModel<[AddressListDM]>, NetworkManager.APIError>) in
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.parent_address_listing, method: .get,headers: headers) { [weak self](result : Result<BaseResponseModel<[AddressListDM]>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
@@ -67,12 +66,12 @@ class AddressListVM{
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data else{return}
self.addressData = data
if self.addressData.count != 0{
self.addressData[0].isDefault = true
CartDataCache.addressData = data
if CartDataCache.addressData.count != 0{
CartDataCache.addressData[0].isDefault = true
}
self.vc.tableView.reloadData()
if let pincode = self.addressData.first?.pincode , let id = self.addressData.first?.id{
if let pincode = CartDataCache.addressData.first?.pincode , let id = CartDataCache.addressData.first?.id{
checkEstimatedDeliveryData(pinCode: pincode, id: id)
}
default:
@@ -97,7 +96,7 @@ class AddressListVM{
func checkEstimatedDeliveryData(pinCode : String, id : Int){
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["pincode" : pinCode]
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Cart.pincode_serviceability_check_edd, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<CheckEddDM>, NetworkManager.APIError>) in
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Address.pincode_serviceability_check_edd, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<CheckEddDM>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
@@ -113,8 +112,8 @@ class AddressListVM{
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data?.result else{return}
if let index = self.addressData.firstIndex(where: {$0.id == id}){
self.addressData[index].eddDate = data.edd
if let index = CartDataCache.addressData.firstIndex(where: {$0.id == id}){
CartDataCache.addressData[index].eddDate = data.edd
self.vc.tableView.reloadData()
}
default:
@@ -131,4 +130,60 @@ class AddressListVM{
}
}
}
func createOrder(){
var productIDs = [Int]()
for i in CartDataCache.cartListData{
if let id = i.id{
productIDs.append(id)
}
}
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["product_ids" : productIDs,
"address_id" : "56"]
struct URLResp : Codable {
var url : String?
}
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Cart.create_new_order, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<URLResp>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
Utilities.dismissProgressHUD()
return
}
switch data.success{
case 0:
/*
Error
*/
Utilities.dismissProgressHUD()
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data else{return}
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.paymentWebViewVC) as! PaymentWebViewVC
vcPush.url = data.url
vcPush.modalTransitionStyle = .crossDissolve
vcPush.modalPresentationStyle = .fullScreen
self.vc.present(vcPush, animated: true)
default:
Utilities.dismissProgressHUD()
break
}
case .failure(let error):
guard let self else{
Utilities.dismissProgressHUD()
return
}
Utilities.dismissProgressHUD()
Utilities.alertWithBtnCancelCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
if isDone{
self.createOrder()
}
}
}
}
}
}

View File

@@ -385,117 +385,10 @@
</objects>
<point key="canvasLocation" x="907.63358778625945" y="-35.211267605633807"/>
</scene>
<!--Address ListVC-->
<scene sceneID="pB5-5z-2Mm">
<objects>
<viewController storyboardIdentifier="AddressListVC" id="e74-xp-vgC" customClass="AddressListVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Qtr-Tw-ga2">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u8h-Ky-5D7">
<rect key="frame" x="10" y="49" width="394" height="808"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="o9Q-Ev-529">
<rect key="frame" x="7" y="7" width="380" height="794"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="hwr-Ev-IwN">
<rect key="frame" x="10" y="10" width="360" height="649"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</tableView>
<stackView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="uW6-Km-RZg">
<rect key="frame" x="10" y="674" width="360" height="110"/>
<subviews>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yKt-QH-gCB" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="360" height="50"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="E9r-k9-Fq8"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Use Selected Address">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="btnTapped:" destination="e74-xp-vgC" eventType="touchUpInside" id="5vZ-BG-eI8"/>
</connections>
</button>
<button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2Fy-uW-HrA" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
<rect key="frame" x="0.0" y="60" width="360" height="50"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="1EF-fs-4m9"/>
</constraints>
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Add New Address">
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</state>
<connections>
<action selector="btnTapped:" destination="e74-xp-vgC" eventType="touchUpInside" id="go2-GU-591"/>
</connections>
</button>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="uW6-Km-RZg" firstAttribute="top" secondItem="hwr-Ev-IwN" secondAttribute="bottom" constant="15" id="OVV-uW-oXC"/>
<constraint firstItem="uW6-Km-RZg" firstAttribute="leading" secondItem="o9Q-Ev-529" secondAttribute="leading" constant="10" id="P1a-Az-pIH"/>
<constraint firstItem="hwr-Ev-IwN" firstAttribute="leading" secondItem="o9Q-Ev-529" secondAttribute="leading" constant="10" id="Tuw-H5-5Yr"/>
<constraint firstAttribute="trailing" secondItem="hwr-Ev-IwN" secondAttribute="trailing" constant="10" id="Txv-7p-fEZ"/>
<constraint firstAttribute="bottom" secondItem="uW6-Km-RZg" secondAttribute="bottom" constant="10" id="UU8-Kf-CaV"/>
<constraint firstItem="hwr-Ev-IwN" firstAttribute="top" secondItem="o9Q-Ev-529" secondAttribute="top" constant="10" id="m1B-Mo-zwg"/>
<constraint firstAttribute="trailing" secondItem="uW6-Km-RZg" secondAttribute="trailing" constant="10" id="rVg-cz-SNd"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="o9Q-Ev-529" firstAttribute="top" secondItem="u8h-Ky-5D7" secondAttribute="top" constant="7" id="BDm-Ob-kzQ"/>
<constraint firstAttribute="bottom" secondItem="o9Q-Ev-529" secondAttribute="bottom" constant="7" id="JYE-Kg-AqL"/>
<constraint firstAttribute="trailing" secondItem="o9Q-Ev-529" secondAttribute="trailing" constant="7" id="Ltn-Wb-Tqk"/>
<constraint firstItem="o9Q-Ev-529" firstAttribute="leading" secondItem="u8h-Ky-5D7" secondAttribute="leading" constant="7" id="XSS-aC-DNR"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<integer key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="GRP-hQ-hXk"/>
<color key="backgroundColor" systemColor="systemGreenColor"/>
<constraints>
<constraint firstItem="u8h-Ky-5D7" firstAttribute="leading" secondItem="GRP-hQ-hXk" secondAttribute="leading" constant="10" id="Cv6-mw-Ufr"/>
<constraint firstItem="GRP-hQ-hXk" firstAttribute="bottom" secondItem="u8h-Ky-5D7" secondAttribute="bottom" constant="5" id="J1K-fH-i7N"/>
<constraint firstItem="GRP-hQ-hXk" firstAttribute="trailing" secondItem="u8h-Ky-5D7" secondAttribute="trailing" constant="10" id="Yaw-gX-PJ4"/>
<constraint firstItem="u8h-Ky-5D7" firstAttribute="top" secondItem="GRP-hQ-hXk" secondAttribute="top" constant="5" id="jkK-Ha-dps"/>
</constraints>
</view>
<connections>
<outlet property="addNewAddressBtn" destination="2Fy-uW-HrA" id="PaR-kg-dCQ"/>
<outlet property="innerView" destination="o9Q-Ev-529" id="yRK-FN-AyR"/>
<outlet property="tableView" destination="hwr-Ev-IwN" id="0H0-wg-Nf0"/>
<outlet property="useSelectedAddBtn" destination="yKt-QH-gCB" id="ZXu-Tn-XLT"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="x5u-g1-Lhg" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1637" y="-35"/>
</scene>
</scenes>
<designables>
<designable name="0cZ-tT-3PH">
<size key="intrinsicContentSize" width="134.33333333333334" height="21"/>
<size key="intrinsicContentSize" width="184.33333333333334" height="21"/>
</designable>
</designables>
<resources>
@@ -504,9 +397,6 @@
<namedColor name="TextDarkBlue">
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</namedColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemGreenColor">
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>

View File

@@ -0,0 +1,15 @@
//
// CartDataCache.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import Foundation
class CartDataCache{
static var cartListData = [CartListingDM.ResultData]()
static var addressData = [AddressListDM]()
}

View File

@@ -14,6 +14,7 @@ class CartListVC: UIViewController {
@IBOutlet weak var noDataStack: UIStackView!
@IBOutlet weak var checkoutBtn: LocalisedElementsButton!
var vm = CartListVM()
static let shareInstance = CartListVC()
// MARK: - Life Cycle
@@ -64,7 +65,7 @@ class CartListVC: UIViewController {
}
let sb = UIStoryboard(name: K.StoryBoard.cart, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Cart.cartPaymentOptionsVC) as! CartPaymentOptionsVC
vcPush.vm.cartListData = vm.cartListData
// vcPush.vm.cartListData = vm.cartListData
vcPush.vm.cartTotalPrice = vm.totalAmount
self.navigationController?.pushViewController(vcPush, animated: true)
}
@@ -74,12 +75,12 @@ class CartListVC: UIViewController {
extension CartListVC : TableViewSRC{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return vm.cartListData.count
return CartDataCache.cartListData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: K.CellIdentifier.Cart.cartListCell) as! CartListCell
let data = vm.cartListData[indexPath.row]
let data = CartDataCache.cartListData[indexPath.row]
cell.setData(data: data)
cell.btnTapped = { [weak self] () -> Void in
guard let self else{return}
@@ -117,7 +118,7 @@ extension CartListVC : TableViewSRC{
switch mode{
case .yes:
guard let self else{return}
if let shopMasterID = vm.cartListData[indexPath].id{
if let shopMasterID = CartDataCache.cartListData[indexPath].id{
vm.removeItemFromCart(shopMasterID: shopMasterID, index: indexPath)
}
case .no:

View File

@@ -40,6 +40,7 @@ class CartPaymentOptionsVC: UIViewController {
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.navigationController?.setColor(color: .white)
}
@@ -69,8 +70,8 @@ class CartPaymentOptionsVC: UIViewController {
}
@IBAction func confirmBtnTapped(_ sender: LocalisedElementsButton) {
let sb = UIStoryboard(name: K.StoryBoard.cart, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Cart.addressListVC) as! AddressListVC
let sb = UIStoryboard(name: K.StoryBoard.address, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Address.addressListVC) as! AddressListVC
self.navigationController?.pushViewController(vcPush, animated: true)
// vm.createOrder()
}
@@ -88,7 +89,7 @@ class CartPaymentOptionsVC: UIViewController {
extension CartPaymentOptionsVC : TableViewSRC{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == cartTableView{
return vm.cartListData.count
return CartDataCache.cartListData.count
}else{
return vm.couponData.count
}
@@ -97,7 +98,7 @@ extension CartPaymentOptionsVC : TableViewSRC{
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView == cartTableView{
let cell = tableView.dequeueReusableCell(withIdentifier: K.CellIdentifier.Cart.cartPaymentOptionsCell) as! CartPaymentOptionsCell
let data = vm.cartListData[indexPath.row]
let data = CartDataCache.cartListData[indexPath.row]
cell.setData(data: data)
return cell
}else{

View File

@@ -11,7 +11,7 @@ import Alamofire
class CartListVM{
weak var vc : CartListVC!
var cartListData = [CartListingDM.ResultData]()
// var cartListData = [CartListingDM.ResultData]()
var totalAmount = 0.0 {
didSet{
@@ -78,7 +78,7 @@ class CartListVM{
totalAmount = data.data?.totalAmount ?? 0.0
guard let data = data.data?.result else{return}
self.cartListData = data
CartDataCache.cartListData = data
self.vc.tableView.reloadData()
feedbackGenerator.impactOccurred()
self.checkCount()
@@ -105,7 +105,7 @@ class CartListVM{
}
func checkCount(){
if self.cartListData.count == 0 {
if CartDataCache.cartListData.count == 0 {
self.vc.noDataStack.isHidden = false
self.vc.checkoutBtn.isEnabled = false
self.vc.checkoutBtn.backgroundColor = #colorLiteral(red: 0.03529411765, green: 0, blue: 0.3647058824, alpha: 1).withAlphaComponent(0.7)
@@ -140,8 +140,8 @@ class CartListVM{
}
case 1:
Utilities.dismissProgressHUD()
self.totalAmount = self.totalAmount - (self.cartListData[index].productFinalPrice ?? 0.0)
self.cartListData.remove(at: index)
self.totalAmount = self.totalAmount - (CartDataCache.cartListData[index].productFinalPrice ?? 0.0)
CartDataCache.cartListData.remove(at: index)
self.vc.tableView.reloadData()
self.checkCount()
default:

View File

@@ -11,7 +11,7 @@ import Alamofire
class CartPaymentOptionsVM{
weak var vc : CartPaymentOptionsVC!
var cartListData = [CartListingDM.ResultData]()
// var cartListData = [CartListingDM.ResultData]()
var couponData = [CouponListDM.ResultData]()
var isExpanded = false
var cartTotalPrice = 0.0
@@ -147,55 +147,6 @@ class CartPaymentOptionsVM{
}
}
func createOrder(){
var productIDs = [Int]()
for i in cartListData{
if let id = i.id{
productIDs.append(id)
}
}
Utilities.startProgressHUD()
let headers : HTTPHeaders = ["access-token" : AuthFunc.shareInstance.getAccessToken()]
let params : Parameters = ["product_ids" : productIDs,
"address_id" : "56"]
struct URLResp : Codable {
var url : String?
}
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.Cart.create_new_order, method: .post, parameters: params,headers: headers) { [weak self](result : Result<BaseResponseModel<URLResp>, NetworkManager.APIError>) in
switch result{
case .success(let data):
guard let self else{
Utilities.dismissProgressHUD()
return
}
switch data.success{
case 0:
/*
Error
*/
Utilities.dismissProgressHUD()
case 1:
Utilities.dismissProgressHUD()
guard let data = data.data else{return}
print(data.url)
default:
Utilities.dismissProgressHUD()
break
}
case .failure(let error):
guard let self else{
Utilities.dismissProgressHUD()
return
}
Utilities.dismissProgressHUD()
Utilities.alertWithBtnCancelCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
if isDone{
self.createOrder()
}
}
}
}
}
}

View File

@@ -0,0 +1,16 @@
//
// AnalyticsEventKeys.swift
// WOKA
//
// Created by MacBook Pro on 29/07/24.
//
import Foundation
extension K{
struct AnalyticsEventKeys{
static var new_guest_login = "new_guest_login"
static var user_signup = "user_signup"
}
}

View File

@@ -22,5 +22,6 @@ extension K{
static let Karaoke = "Karaoke"
static let shop = "Shop"
static let cart = "Cart"
static let address = "Address"
}
}

View File

@@ -105,7 +105,15 @@ extension K{
struct Cart{
static let cartListVC = "CartListVC"
static let cartPaymentOptionsVC = "CartPaymentOptionsVC"
}
// MARK: - Address
struct Address{
static let addressListVC = "AddressListVC"
static let verifyAddressPincodeVC = "VerifyAddressPincodeVC"
static let addNewAddressVC = "AddNewAddressVC"
static let paymentWebViewVC = "PaymentWebViewVC"
}
}

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>AIzaSyDA_akTO852Olbp9YUbtBlmTQVk0-z9NPA</string>
<key>GCM_SENDER_ID</key>
<string>15836861503</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.app.woka</string>
<key>PROJECT_ID</key>
<string>wokaga-19312</string>
<key>STORAGE_BUCKET</key>
<string>wokaga-19312.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:15836861503:ios:4bd34209992a812c66548a</string>
<key>ADMOB_APP_ID</key>
<string>ca-app-pub-5699008063638916~6654980943</string>
</dict>
</plist>

View File

@@ -9,6 +9,7 @@ import UIKit
import Lottie
import IQKeyboardManagerSwift
import JWPlayerKit
import Firebase
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
@@ -29,6 +30,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//Initialize Firebase
// FirebaseApp.configure()
// enabling the IQKeyboard manager instance
IQKeyboardManager.shared.enable = true
IQKeyboardManager.shared.resignOnTouchOutside = true

View File

@@ -19,8 +19,8 @@ struct APIEndPoints {
private init() {}
struct BaseURL {
static let staging = "https://wokaland.com/admin/api/"
static let production = "https://simplitend.com"
static let staging = "https://wokaland.com/secret-panel-10102023/hidden-admin-portal-20092023/api/"
static let production = ""
static let appUrl = "https://apps.apple.com/in/app/woka/id6465305185"
}
@@ -122,7 +122,11 @@ struct APIEndPoints {
static let coupon_listing = makeURL(path: "coupon_listing")
static let applied_coupon_discount = makeURL(path: "applied_coupon_discount")
static let create_new_order = makeURL(path: "create_new_order")
}
struct Address{
static let parent_address_listing = makeURL(path: "parent_address_listing")
static let add_parent_address = makeURL(path: "add_parent_address")
static let pincode_serviceability_check_edd = makeURL(path: "pincode_serviceability_check_edd")
}

View File

@@ -8,6 +8,7 @@
import UIKit
import AVFoundation
import Alamofire
import FirebaseAnalytics
class SplashVM{
@@ -15,6 +16,9 @@ class SplashVM{
var player: AVAudioPlayer?
func initView(){
// Analytics.logEvent(K.AnalyticsEventKeys.new_guest_login, parameters: ["os_type" : "iOS"])
vc.activityIndicator.hidesWhenStopped = true
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
let color2 = #colorLiteral(red: 0.4862745098, green: 0.1960784314, blue: 0.7019607843, alpha: 1)