- Added api for FAQ’s , Made data model and decoded it
- Made 3 layer gradient for the view - Completed FAq expand collapse with logic. - addd error handler - Made Woka Support UI - Added Custom DropDown in support - Added Custom Gradeint - Handled the autolayouts - Added Check for No Subject Selected
@@ -150,6 +150,10 @@
|
||||
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */; };
|
||||
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */; };
|
||||
9C56E84B2BDBF03F00E4CA14 /* AuthenticationSB.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9C56E84A2BDBF03F00E4CA14 /* AuthenticationSB.storyboard */; };
|
||||
9C7939132C0EFCAE00F5D6E6 /* FaqVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7939122C0EFCAE00F5D6E6 /* FaqVM.swift */; };
|
||||
9C7939152C0F23AA00F5D6E6 /* NsNotificationExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7939142C0F23AA00F5D6E6 /* NsNotificationExtension.swift */; };
|
||||
9C7939172C0F23E900F5D6E6 /* LinkTypeEnum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7939162C0F23E900F5D6E6 /* LinkTypeEnum.swift */; };
|
||||
9C7939192C0F345000F5D6E6 /* ContactSupportVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C7939182C0F345000F5D6E6 /* ContactSupportVC.swift */; };
|
||||
9C9BEEC72BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9BEEC62BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift */; };
|
||||
9CBCB29B2BE4D614007D7934 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB29A2BE4D614007D7934 /* LoginVC.swift */; };
|
||||
9CBCB29D2BE4D6BB007D7934 /* LoginVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB29C2BE4D6BB007D7934 /* LoginVM.swift */; };
|
||||
@@ -159,6 +163,13 @@
|
||||
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A42BE50D49007D7934 /* NewPasswordVC.swift */; };
|
||||
9CBCB2A82BE5105A007D7934 /* Home.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A72BE5105A007D7934 /* Home.storyboard */; };
|
||||
9CBCB2AA2BE51A52007D7934 /* ThemeOneVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A92BE51A52007D7934 /* ThemeOneVC.swift */; };
|
||||
9CBE1B3F2C0F37B300CA6E61 /* DPDConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B322C0F37B200CA6E61 /* DPDConstants.swift */; };
|
||||
9CBE1B402C0F37B300CA6E61 /* DPDKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B332C0F37B200CA6E61 /* DPDKeyboardListener.swift */; };
|
||||
9CBE1B412C0F37B300CA6E61 /* DPDUIView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B342C0F37B200CA6E61 /* DPDUIView+Extension.swift */; };
|
||||
9CBE1B422C0F37B300CA6E61 /* DropDownCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9CBE1B362C0F37B200CA6E61 /* DropDownCell.xib */; };
|
||||
9CBE1B432C0F37B300CA6E61 /* DropDown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B382C0F37B200CA6E61 /* DropDown.swift */; };
|
||||
9CBE1B442C0F37B300CA6E61 /* DropDown+Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B392C0F37B200CA6E61 /* DropDown+Appearance.swift */; };
|
||||
9CBE1B452C0F37B300CA6E61 /* DropDownCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBE1B3A2C0F37B200CA6E61 /* DropDownCell.swift */; };
|
||||
9CDC343C2BDBBC6B00093089 /* SelectAgeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */; };
|
||||
9CDCE1452BDB9B9A003FEF11 /* OnBoardMainSound.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 9CDCE1442BDB9B9A003FEF11 /* OnBoardMainSound.m4a */; };
|
||||
/* End PBXBuildFile section */
|
||||
@@ -333,6 +344,10 @@
|
||||
9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailVC.swift; sourceTree = "<group>"; };
|
||||
9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetColor.swift; sourceTree = "<group>"; };
|
||||
9C56E8492BDBF03F00E4CA14 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/AuthenticationSB.storyboard; sourceTree = "<group>"; };
|
||||
9C7939122C0EFCAE00F5D6E6 /* FaqVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FaqVM.swift; sourceTree = "<group>"; };
|
||||
9C7939142C0F23AA00F5D6E6 /* NsNotificationExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NsNotificationExtension.swift; sourceTree = "<group>"; };
|
||||
9C7939162C0F23E900F5D6E6 /* LinkTypeEnum.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkTypeEnum.swift; sourceTree = "<group>"; };
|
||||
9C7939182C0F345000F5D6E6 /* ContactSupportVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactSupportVC.swift; sourceTree = "<group>"; };
|
||||
9C9BEEC62BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewCenteredFlowLayout.swift; sourceTree = "<group>"; };
|
||||
9CBCB29A2BE4D614007D7934 /* LoginVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = "<group>"; };
|
||||
9CBCB29C2BE4D6BB007D7934 /* LoginVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVM.swift; sourceTree = "<group>"; };
|
||||
@@ -342,6 +357,14 @@
|
||||
9CBCB2A42BE50D49007D7934 /* NewPasswordVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewPasswordVC.swift; sourceTree = "<group>"; };
|
||||
9CBCB2A72BE5105A007D7934 /* Home.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Home.storyboard; sourceTree = "<group>"; };
|
||||
9CBCB2A92BE51A52007D7934 /* ThemeOneVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeOneVC.swift; sourceTree = "<group>"; };
|
||||
9CBE1B322C0F37B200CA6E61 /* DPDConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DPDConstants.swift; sourceTree = "<group>"; };
|
||||
9CBE1B332C0F37B200CA6E61 /* DPDKeyboardListener.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DPDKeyboardListener.swift; sourceTree = "<group>"; };
|
||||
9CBE1B342C0F37B200CA6E61 /* DPDUIView+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DPDUIView+Extension.swift"; sourceTree = "<group>"; };
|
||||
9CBE1B362C0F37B200CA6E61 /* DropDownCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DropDownCell.xib; sourceTree = "<group>"; };
|
||||
9CBE1B382C0F37B200CA6E61 /* DropDown.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DropDown.swift; sourceTree = "<group>"; };
|
||||
9CBE1B392C0F37B200CA6E61 /* DropDown+Appearance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DropDown+Appearance.swift"; sourceTree = "<group>"; };
|
||||
9CBE1B3A2C0F37B200CA6E61 /* DropDownCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DropDownCell.swift; sourceTree = "<group>"; };
|
||||
9CBE1B3C2C0F37B200CA6E61 /* DropDown.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DropDown.h; sourceTree = "<group>"; };
|
||||
9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectAgeVC.swift; sourceTree = "<group>"; };
|
||||
9CDCE1412BDB94BA003FEF11 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Main.strings; sourceTree = "<group>"; };
|
||||
9CDCE1422BDB94BD003FEF11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = "<group>"; };
|
||||
@@ -426,9 +449,9 @@
|
||||
522A93142C0DE8770098FE49 /* SideBarNav */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
522A93182C0DE8A50098FE49 /* View */,
|
||||
522A93172C0DE8A20098FE49 /* Model */,
|
||||
522A93162C0DE89F0098FE49 /* ViewModel */,
|
||||
522A93182C0DE8A50098FE49 /* View */,
|
||||
9C7939112C0EFCA000F5D6E6 /* ViewModel */,
|
||||
522A93152C0DE8960098FE49 /* Controller */,
|
||||
522A93192C0DE8CC0098FE49 /* SideBarNav.storyboard */,
|
||||
);
|
||||
@@ -440,17 +463,11 @@
|
||||
children = (
|
||||
522A931B2C0DE9150098FE49 /* AboutUsVc.swift */,
|
||||
52BC3BE12C0E02EE002FACA6 /* FaqVC.swift */,
|
||||
9C7939182C0F345000F5D6E6 /* ContactSupportVC.swift */,
|
||||
);
|
||||
path = Controller;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
522A93162C0DE89F0098FE49 /* ViewModel */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = ViewModel;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
522A93172C0DE8A20098FE49 /* Model */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -493,11 +510,9 @@
|
||||
523ED25C2BDA2BC700CFED02 /* WOKA */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
522A93142C0DE8770098FE49 /* SideBarNav */,
|
||||
523ED26B2BDA2BC900CFED02 /* Info.plist */,
|
||||
9C9BEEC62BEE1BBF004ECC2F /* CollectionViewCenteredFlowLayout.swift */,
|
||||
5259541E2BE8E93500191286 /* Config.xcconfig */,
|
||||
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
|
||||
5259542C2BEA392A00191286 /* Alerts */,
|
||||
523ED2932BDA3D0100CFED02 /* Assets */,
|
||||
9C56E83E2BDBE4FB00E4CA14 /* Authentication */,
|
||||
@@ -505,10 +520,12 @@
|
||||
52C6E01F2BE3ADD800E22D59 /* Default Enum */,
|
||||
52C8B0512BDA4B51003B51D0 /* Helpers */,
|
||||
9CBCB2A62BE5104F007D7934 /* Home */,
|
||||
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
|
||||
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
|
||||
9C27E1612BDB6F0F00EC1DA9 /* Main */,
|
||||
525954152BE8CAC900191286 /* Network Adapter */,
|
||||
523ED28E2BDA372C00CFED02 /* OnBoarding Module */,
|
||||
522A93142C0DE8770098FE49 /* SideBarNav */,
|
||||
525327D72BFCC30400F64283 /* TabBar & SideMenu */,
|
||||
9C535DC82C00C34000DA6DCD /* Theme */,
|
||||
);
|
||||
@@ -671,6 +688,7 @@
|
||||
524C422D2C048C620016A11C /* ViewModel */,
|
||||
524C422C2C048C5E0016A11C /* Controller */,
|
||||
522242582BFC73E40085C632 /* SideMenu */,
|
||||
9C7939162C0F23E900F5D6E6 /* LinkTypeEnum.swift */,
|
||||
);
|
||||
path = "TabBar & SideMenu";
|
||||
sourceTree = "<group>";
|
||||
@@ -739,6 +757,7 @@
|
||||
52C8B0512BDA4B51003B51D0 /* Helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBE1B3E2C0F37B200CA6E61 /* DropDown */,
|
||||
9C535DB62C0089A700DA6DCD /* Animation */,
|
||||
525953D22BE8B2CD00191286 /* UIApplication */,
|
||||
525953CD2BE8B28100191286 /* ActivityToast&Indicator */,
|
||||
@@ -755,6 +774,7 @@
|
||||
5259545D2BEBBA1A00191286 /* LoadingIndicatorImageView.swift */,
|
||||
52A3F6AC2BECC0340000BB0B /* TypeAlias.swift */,
|
||||
5219C2C12C086D9B00A1DF4D /* DataTypeConversion.swift */,
|
||||
9C7939142C0F23AA00F5D6E6 /* NsNotificationExtension.swift */,
|
||||
);
|
||||
path = Helpers;
|
||||
sourceTree = "<group>";
|
||||
@@ -971,6 +991,14 @@
|
||||
path = Controller;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9C7939112C0EFCA000F5D6E6 /* ViewModel */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9C7939122C0EFCAE00F5D6E6 /* FaqVM.swift */,
|
||||
);
|
||||
path = ViewModel;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CBCB2A62BE5104F007D7934 /* Home */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -983,6 +1011,45 @@
|
||||
path = Home;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CBE1B352C0F37B200CA6E61 /* helpers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBE1B322C0F37B200CA6E61 /* DPDConstants.swift */,
|
||||
9CBE1B332C0F37B200CA6E61 /* DPDKeyboardListener.swift */,
|
||||
9CBE1B342C0F37B200CA6E61 /* DPDUIView+Extension.swift */,
|
||||
);
|
||||
path = helpers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CBE1B372C0F37B200CA6E61 /* resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBE1B362C0F37B200CA6E61 /* DropDownCell.xib */,
|
||||
);
|
||||
path = resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CBE1B3B2C0F37B200CA6E61 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBE1B382C0F37B200CA6E61 /* DropDown.swift */,
|
||||
9CBE1B392C0F37B200CA6E61 /* DropDown+Appearance.swift */,
|
||||
9CBE1B3A2C0F37B200CA6E61 /* DropDownCell.swift */,
|
||||
);
|
||||
path = src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CBE1B3E2C0F37B200CA6E61 /* DropDown */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9CBE1B352C0F37B200CA6E61 /* helpers */,
|
||||
9CBE1B372C0F37B200CA6E61 /* resources */,
|
||||
9CBE1B3B2C0F37B200CA6E61 /* src */,
|
||||
9CBE1B3C2C0F37B200CA6E61 /* DropDown.h */,
|
||||
);
|
||||
path = DropDown;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9CDCE1432BDB9B64003FEF11 /* Sounds */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -1125,6 +1192,7 @@
|
||||
525954392BEB4B3B00191286 /* Exo2-ExtraBold.ttf in Resources */,
|
||||
5259543A2BEB4B3B00191286 /* Exo2-SemiBold.ttf in Resources */,
|
||||
9C535DC52C00BF2400DA6DCD /* HomeExploreCell.xib in Resources */,
|
||||
9CBE1B422C0F37B300CA6E61 /* DropDownCell.xib in Resources */,
|
||||
52A3F6A92BECBF2A0000BB0B /* LinkedChildCell.xib in Resources */,
|
||||
523ED2652BDA2BC700CFED02 /* Base in Resources */,
|
||||
52BC3BE62C0E0326002FACA6 /* FaqCell.xib in Resources */,
|
||||
@@ -1202,6 +1270,7 @@
|
||||
5272FCE32BDFDB05000ECB1D /* UserDetailsRegisterVC.swift in Sources */,
|
||||
525954102BE8B72900191286 /* FontCustom.swift in Sources */,
|
||||
5202AAFE2BDF90590043B7BD /* TextFieldImage.swift in Sources */,
|
||||
9C7939152C0F23AA00F5D6E6 /* NsNotificationExtension.swift in Sources */,
|
||||
52FDDAB52BF34DC300E037C1 /* YesNoAlertVC.swift in Sources */,
|
||||
52C6E0232BE3B3E300E22D59 /* SelectAvatarVC.swift in Sources */,
|
||||
529B0DD62C070C0F00CFC54B /* GuestDataDM.swift in Sources */,
|
||||
@@ -1220,6 +1289,7 @@
|
||||
5259541D2BE8D94400191286 /* QueueHelper.swift in Sources */,
|
||||
525954232BE8F00400191286 /* BaseResponseModel.swift in Sources */,
|
||||
9C27E1692BDB76F200EC1DA9 /* OnBoardVM.swift in Sources */,
|
||||
9C7939172C0F23E900F5D6E6 /* LinkTypeEnum.swift in Sources */,
|
||||
523ED2622BDA2BC700CFED02 /* SplashVC.swift in Sources */,
|
||||
9CDC343C2BDBBC6B00093089 /* SelectAgeVC.swift in Sources */,
|
||||
525327D02BFCBC4A00F64283 /* ExploreWokaVC.swift in Sources */,
|
||||
@@ -1233,6 +1303,7 @@
|
||||
525954192BE8CC3400191286 /* ConstantString.swift in Sources */,
|
||||
52D774EB2BDFC0BF001D87DE /* OTPVC.swift in Sources */,
|
||||
9C27E16F2BDB866500EC1DA9 /* CellIdentifier.swift in Sources */,
|
||||
9CBE1B412C0F37B300CA6E61 /* DPDUIView+Extension.swift in Sources */,
|
||||
9C27E1632BDB6F1900EC1DA9 /* AuthFunc.swift in Sources */,
|
||||
9C0A85412BEE35670093783D /* ResetPassUserNameVM.swift in Sources */,
|
||||
52C6E0292BE3B52500E22D59 /* SelectAvatarVM.swift in Sources */,
|
||||
@@ -1242,11 +1313,13 @@
|
||||
525954142BE8C87300191286 /* ExtensionVCToastAlert.swift in Sources */,
|
||||
52B8D4D92C04A25E00ED65F3 /* UIViewController+Container.swift in Sources */,
|
||||
523ED25E2BDA2BC700CFED02 /* AppDelegate.swift in Sources */,
|
||||
9C7939132C0EFCAE00F5D6E6 /* FaqVM.swift in Sources */,
|
||||
52D774ED2BDFC13F001D87DE /* OTPVM.swift in Sources */,
|
||||
525327D62BFCC23600F64283 /* SideMenuVM.swift in Sources */,
|
||||
9CBCB2A32BE50C95007D7934 /* ResetPassUserNameVC.swift in Sources */,
|
||||
52A3F6A52BECBA8D0000BB0B /* LinkedChildDM.swift in Sources */,
|
||||
52B8D4DE2C04A25E00ED65F3 /* SideMenuController.swift in Sources */,
|
||||
9CBE1B402C0F37B300CA6E61 /* DPDKeyboardListener.swift in Sources */,
|
||||
52A3F6AB2BECBF550000BB0B /* LinkedChildVC.swift in Sources */,
|
||||
52FDBA7B2BFF2712009D7AC7 /* AuthFuncTimeHandling.swift in Sources */,
|
||||
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */,
|
||||
@@ -1258,6 +1331,7 @@
|
||||
52B8D4E22C04A25E00ED65F3 /* Segue.swift in Sources */,
|
||||
5259542E2BEA393700191286 /* AlertCustomVC.swift in Sources */,
|
||||
52CA28FA2BE119F500708B49 /* UserIntrestVC.swift in Sources */,
|
||||
9CBE1B442C0F37B300CA6E61 /* DropDown+Appearance.swift in Sources */,
|
||||
9C27E16B2BDB774D00EC1DA9 /* CarouselData.swift in Sources */,
|
||||
525954212BE8EB7900191286 /* APIEndPoints.swift in Sources */,
|
||||
5259545A2BEB67D200191286 /* DateFormatterLib.swift in Sources */,
|
||||
@@ -1277,6 +1351,8 @@
|
||||
52A3F6A82BECBF2A0000BB0B /* LinkedChildCell.swift in Sources */,
|
||||
52C6E01E2BE3847F00E22D59 /* BorderView.swift in Sources */,
|
||||
52FDBA7D2BFF481A009D7AC7 /* ThemeOneVM.swift in Sources */,
|
||||
9C7939192C0F345000F5D6E6 /* ContactSupportVC.swift in Sources */,
|
||||
9CBE1B432C0F37B300CA6E61 /* DropDown.swift in Sources */,
|
||||
52C8B0742BDA7626003B51D0 /* OnBoardVC.swift in Sources */,
|
||||
5219C2C22C086D9C00A1DF4D /* DataTypeConversion.swift in Sources */,
|
||||
525953CF2BE8B28F00191286 /* Utilities.swift in Sources */,
|
||||
@@ -1304,6 +1380,7 @@
|
||||
52663FF72BDFACF60001D8CE /* ShadowView.swift in Sources */,
|
||||
9C535DC22C00B36900DA6DCD /* ThemeTwoVC.swift in Sources */,
|
||||
52D774F12BDFC53B001D87DE /* StringSubScript.swift in Sources */,
|
||||
9CBE1B3F2C0F37B300CA6E61 /* DPDConstants.swift in Sources */,
|
||||
52B8D4DA2C04A25E00ED65F3 /* Preferences.swift in Sources */,
|
||||
52FB2D8F2BDF898F0009B0C7 /* TextFieldPadding.swift in Sources */,
|
||||
5257B2652BDFB6F50086D79B /* CheckPhoneHomeBtnOrNotch.swift in Sources */,
|
||||
@@ -1312,6 +1389,7 @@
|
||||
525954342BEA620800191286 /* IntrestTopicDM.swift in Sources */,
|
||||
52BC3BE52C0E0326002FACA6 /* FaqCell.swift in Sources */,
|
||||
52663FF52BDFAB830001D8CE /* TextFieldErrorView.swift in Sources */,
|
||||
9CBE1B452C0F37B300CA6E61 /* DropDownCell.swift in Sources */,
|
||||
9C27E16D2BDB852F00EC1DA9 /* GVar.swift in Sources */,
|
||||
52B8D4E02C04A25E00ED65F3 /* UIView+Container.swift in Sources */,
|
||||
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */,
|
||||
|
||||
@@ -54,7 +54,7 @@ class AlertCustomVC: UIViewController {
|
||||
@IBAction func doneBtnTapped(_ sender: UIButton) {
|
||||
self.dismiss()
|
||||
// Execute completion block if provided
|
||||
// self.onDoneBlock?(true)
|
||||
self.onDoneBlock?(true)
|
||||
}
|
||||
|
||||
// Action when cancel button is tapped
|
||||
|
||||
23
WOKA/Assets/Assets.xcassets/Menu/SideMenu/CollapseFaq.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 1@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 1@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/CollapseFaq.imageset/next-svgrepo-com (1) 1.png
vendored
Normal file
|
After Width: | Height: | Size: 434 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/CollapseFaq.imageset/next-svgrepo-com (1) 1@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 896 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/CollapseFaq.imageset/next-svgrepo-com (1) 1@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 449 B |
23
WOKA/Assets/Assets.xcassets/Menu/SideMenu/ExpandFaq.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 2.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 2@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "next-svgrepo-com (1) 2@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/ExpandFaq.imageset/next-svgrepo-com (1) 2.png
vendored
Normal file
|
After Width: | Height: | Size: 342 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/ExpandFaq.imageset/next-svgrepo-com (1) 2@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 515 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/ExpandFaq.imageset/next-svgrepo-com (1) 2@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 375 B |
26
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportBottomArrow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "downarrow.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "downarrow@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "downarrow@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportBottomArrow.imageset/downarrow.png
vendored
Normal file
|
After Width: | Height: | Size: 438 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportBottomArrow.imageset/downarrow@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 889 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportBottomArrow.imageset/downarrow@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 465 B |
21
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportGirlImage.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Ellipse 20.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportGirlImage.imageset/Ellipse 20.png
vendored
Normal file
|
After Width: | Height: | Size: 96 KiB |
26
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportUpArrow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "uparrow.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "uparrow@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "uparrow@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportUpArrow.imageset/uparrow.png
vendored
Normal file
|
After Width: | Height: | Size: 434 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportUpArrow.imageset/uparrow@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 896 B |
BIN
WOKA/Assets/Assets.xcassets/Menu/SideMenu/SupportUpArrow.imageset/uparrow@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 449 B |
@@ -46,6 +46,7 @@ extension K{
|
||||
struct SideBarNav{
|
||||
static let aboutUsVc = "AboutUsVc"
|
||||
static let faqVC = "FaqVC"
|
||||
static let contactSupportVC = "ContactSupportVC"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ class Utilities{
|
||||
static func alertWithBtn(title : String , msgBody : String, okBtnStr : String?,vc : UIViewController){
|
||||
let alert = UIAlertController(title: title, message: msgBody, preferredStyle: .alert)
|
||||
|
||||
let titleAttrString = NSMutableAttributedString(string: title != "" ? (title + "\n") : "", attributes: [NSAttributedString.Key.font: UIFont(name: "Nunito-Medium", size: 20)! as Any])
|
||||
let titleAttrString = NSMutableAttributedString(string: title != "" ? (title + "\n") : "", attributes: [NSAttributedString.Key.font: FontCustom.shareInstance.customFont(fontName: .Exo2_Regular, size: 16) as Any])
|
||||
alert.setValue(titleAttrString, forKey: "attributedTitle")
|
||||
|
||||
|
||||
|
||||
19
WOKA/Helpers/DropDown/DropDown.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// DropDown.h
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 13/06/16.
|
||||
// Copyright © 2016 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
//! Project version number for DropDown.
|
||||
FOUNDATION_EXPORT double DropDownVersionNumber;
|
||||
|
||||
//! Project version string for DropDown.
|
||||
FOUNDATION_EXPORT const unsigned char DropDownVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <DropDown/PublicHeader.h>
|
||||
|
||||
|
||||
61
WOKA/Helpers/DropDown/helpers/DPDConstants.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// Constants.swift
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 28/07/15.
|
||||
// Copyright (c) 2015 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
import UIKit
|
||||
|
||||
internal struct DPDConstant {
|
||||
|
||||
internal struct KeyPath {
|
||||
|
||||
static let Frame = "frame"
|
||||
|
||||
}
|
||||
|
||||
internal struct ReusableIdentifier {
|
||||
|
||||
static let DropDownCell = "DropDownCell"
|
||||
|
||||
}
|
||||
|
||||
internal struct UI {
|
||||
|
||||
static let TextColor = UIColor.black
|
||||
static let SelectedTextColor = UIColor.black
|
||||
static let TextFont = UIFont.systemFont(ofSize: 15)
|
||||
static let BackgroundColor = UIColor(white: 0.94, alpha: 1)
|
||||
static let SelectionBackgroundColor = UIColor(white: 0.89, alpha: 1)
|
||||
static let SeparatorColor = UIColor.clear
|
||||
static let CornerRadius: CGFloat = 2
|
||||
static let RowHeight: CGFloat = 44
|
||||
static let HeightPadding: CGFloat = 20
|
||||
|
||||
struct Shadow {
|
||||
|
||||
static let Color = UIColor.darkGray
|
||||
static let Offset = CGSize.zero
|
||||
static let Opacity: Float = 0.4
|
||||
static let Radius: CGFloat = 8
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal struct Animation {
|
||||
|
||||
static let Duration = 0.15
|
||||
static let EntranceOptions: UIView.AnimationOptions = [.allowUserInteraction, .curveEaseOut]
|
||||
static let ExitOptions: UIView.AnimationOptions = [.allowUserInteraction, .curveEaseIn]
|
||||
static let DownScaleTransform = CGAffineTransform(scaleX: 0.9, y: 0.9)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
72
WOKA/Helpers/DropDown/helpers/DPDKeyboardListener.swift
Normal file
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// KeyboardListener.swift
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 30/07/15.
|
||||
// Copyright (c) 2015 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
import UIKit
|
||||
|
||||
internal final class KeyboardListener {
|
||||
|
||||
static let sharedInstance = KeyboardListener()
|
||||
|
||||
fileprivate(set) var isVisible = false
|
||||
fileprivate(set) var keyboardFrame = CGRect.zero
|
||||
fileprivate var isListening = false
|
||||
|
||||
deinit {
|
||||
stopListeningToKeyboard()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//MARK: - Notifications
|
||||
|
||||
extension KeyboardListener {
|
||||
|
||||
func startListeningToKeyboard() {
|
||||
if isListening {
|
||||
return
|
||||
}
|
||||
|
||||
isListening = true
|
||||
|
||||
NotificationCenter.default.addObserver(
|
||||
self,
|
||||
selector: #selector(keyboardWillShow(_:)),
|
||||
name: UIResponder.keyboardWillShowNotification,
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(
|
||||
self,
|
||||
selector: #selector(keyboardWillHide(_:)),
|
||||
name: UIResponder.keyboardWillHideNotification,
|
||||
object: nil)
|
||||
}
|
||||
|
||||
func stopListeningToKeyboard() {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
}
|
||||
|
||||
@objc
|
||||
fileprivate func keyboardWillShow(_ notification: Notification) {
|
||||
isVisible = true
|
||||
keyboardFrame = keyboardFrame(fromNotification: notification)
|
||||
}
|
||||
|
||||
@objc
|
||||
fileprivate func keyboardWillHide(_ notification: Notification) {
|
||||
isVisible = false
|
||||
keyboardFrame = keyboardFrame(fromNotification: notification)
|
||||
}
|
||||
|
||||
fileprivate func keyboardFrame(fromNotification notification: Notification) -> CGRect {
|
||||
return ((notification as NSNotification).userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue ?? CGRect.zero
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
61
WOKA/Helpers/DropDown/helpers/DPDUIView+Extension.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// UIView+Constraints.swift
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 28/07/15.
|
||||
// Copyright (c) 2015 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
import UIKit
|
||||
|
||||
//MARK: - Constraints
|
||||
|
||||
internal extension UIView {
|
||||
|
||||
func addConstraints(format: String, options: NSLayoutConstraint.FormatOptions = [], metrics: [String: AnyObject]? = nil, views: [String: UIView]) {
|
||||
addConstraints(NSLayoutConstraint.constraints(withVisualFormat: format, options: options, metrics: metrics, views: views))
|
||||
}
|
||||
|
||||
func addUniversalConstraints(format: String, options: NSLayoutConstraint.FormatOptions = [], metrics: [String: AnyObject]? = nil, views: [String: UIView]) {
|
||||
addConstraints(format: "H:\(format)", options: options, metrics: metrics, views: views)
|
||||
addConstraints(format: "V:\(format)", options: options, metrics: metrics, views: views)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//MARK: - Bounds
|
||||
|
||||
internal extension UIView {
|
||||
|
||||
var windowFrame: CGRect? {
|
||||
return superview?.convert(frame, to: nil)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal extension UIWindow {
|
||||
|
||||
static func visibleWindow() -> UIWindow? {
|
||||
var currentWindow = UIApplication.shared.keyWindow
|
||||
|
||||
if currentWindow == nil {
|
||||
let frontToBackWindows = Array(UIApplication.shared.windows.reversed())
|
||||
|
||||
for window in frontToBackWindows {
|
||||
if window.windowLevel == UIWindow.Level.normal {
|
||||
currentWindow = window
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return currentWindow
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
38
WOKA/Helpers/DropDown/resources/DropDownCell.xib
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22685"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="DropDownCell" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dhL-pA-i6q">
|
||||
<rect key="frame" x="8" y="8" width="304" height="28"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="dhL-pA-i6q" secondAttribute="trailing" constant="8" id="Phk-No-PFh"/>
|
||||
<constraint firstItem="dhL-pA-i6q" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="8" id="QIg-6Z-lbJ"/>
|
||||
<constraint firstItem="dhL-pA-i6q" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="8" id="qo1-5r-HsS"/>
|
||||
<constraint firstAttribute="bottom" secondItem="dhL-pA-i6q" secondAttribute="bottom" constant="8" id="wRT-h8-gtn"/>
|
||||
</constraints>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
|
||||
<connections>
|
||||
<outlet property="optionLabel" destination="dhL-pA-i6q" id="1GT-db-EaA"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-16" y="2"/>
|
||||
</view>
|
||||
</objects>
|
||||
</document>
|
||||
35
WOKA/Helpers/DropDown/src/DropDown+Appearance.swift
Normal file
@@ -0,0 +1,35 @@
|
||||
//
|
||||
// DropDown+Appearance.swift
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 13/06/16.
|
||||
// Copyright © 2016 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
import UIKit
|
||||
|
||||
extension DropDown {
|
||||
|
||||
public class func setupDefaultAppearance() {
|
||||
let appearance = DropDown.appearance()
|
||||
|
||||
appearance.cellHeight = DPDConstant.UI.RowHeight
|
||||
appearance.backgroundColor = DPDConstant.UI.BackgroundColor
|
||||
appearance.selectionBackgroundColor = DPDConstant.UI.SelectionBackgroundColor
|
||||
appearance.separatorColor = DPDConstant.UI.SeparatorColor
|
||||
appearance.cornerRadius = DPDConstant.UI.CornerRadius
|
||||
appearance.shadowColor = DPDConstant.UI.Shadow.Color
|
||||
appearance.shadowOffset = DPDConstant.UI.Shadow.Offset
|
||||
appearance.shadowOpacity = DPDConstant.UI.Shadow.Opacity
|
||||
appearance.shadowRadius = DPDConstant.UI.Shadow.Radius
|
||||
appearance.animationduration = DPDConstant.Animation.Duration
|
||||
appearance.textColor = DPDConstant.UI.TextColor
|
||||
appearance.selectedTextColor = DPDConstant.UI.SelectedTextColor
|
||||
appearance.textFont = DPDConstant.UI.TextFont
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
1209
WOKA/Helpers/DropDown/src/DropDown.swift
Normal file
78
WOKA/Helpers/DropDown/src/DropDownCell.swift
Normal file
@@ -0,0 +1,78 @@
|
||||
//
|
||||
// DropDownCellTableViewCell.swift
|
||||
// DropDown
|
||||
//
|
||||
// Created by Kevin Hirsch on 28/07/15.
|
||||
// Copyright (c) 2015 Kevin Hirsch. All rights reserved.
|
||||
//
|
||||
|
||||
#if os(iOS)
|
||||
|
||||
import UIKit
|
||||
|
||||
open class DropDownCell: UITableViewCell {
|
||||
|
||||
//UI
|
||||
@IBOutlet open weak var optionLabel: UILabel!
|
||||
|
||||
var selectedBackgroundColor: UIColor?
|
||||
var highlightTextColor: UIColor?
|
||||
var normalTextColor: UIColor?
|
||||
|
||||
}
|
||||
|
||||
//MARK: - UI
|
||||
|
||||
extension DropDownCell {
|
||||
|
||||
override open func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
|
||||
backgroundColor = .clear
|
||||
}
|
||||
|
||||
override open var isSelected: Bool {
|
||||
willSet {
|
||||
setSelected(newValue, animated: false)
|
||||
}
|
||||
}
|
||||
|
||||
override open var isHighlighted: Bool {
|
||||
willSet {
|
||||
setSelected(newValue, animated: false)
|
||||
}
|
||||
}
|
||||
|
||||
override open func setHighlighted(_ highlighted: Bool, animated: Bool) {
|
||||
setSelected(highlighted, animated: animated)
|
||||
}
|
||||
|
||||
override open func setSelected(_ selected: Bool, animated: Bool) {
|
||||
let executeSelection: () -> Void = { [weak self] in
|
||||
guard let `self` = self else { return }
|
||||
|
||||
if let selectedBackgroundColor = self.selectedBackgroundColor {
|
||||
if selected {
|
||||
self.backgroundColor = selectedBackgroundColor
|
||||
self.optionLabel.textColor = self.highlightTextColor
|
||||
} else {
|
||||
self.backgroundColor = .clear
|
||||
self.optionLabel.textColor = self.normalTextColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if animated {
|
||||
UIView.animate(withDuration: 0.3, animations: {
|
||||
executeSelection()
|
||||
})
|
||||
} else {
|
||||
executeSelection()
|
||||
}
|
||||
|
||||
accessibilityTraits = selected ? .selected : .none
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
13
WOKA/Helpers/NsNotificationExtension.swift
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// NsNotificationExtension.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by Bilal on 04/06/2024.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
extension Notification.Name {
|
||||
static let languageDidChange = Notification.Name("languageDidChange")
|
||||
static let linkPush = Notification.Name("linkPush")
|
||||
}
|
||||
@@ -48,4 +48,50 @@ extension UIView {
|
||||
// Insert the gradient layer as the bottom layer of the view's layer hierarchy
|
||||
layer.insertSublayer(gradientLayer, at: 0)
|
||||
}
|
||||
|
||||
func applyMultiGradient(colors: [UIColor], startPoint: CGPoint, endPoint: CGPoint) {
|
||||
// Check if the view already has a gradient layer
|
||||
if let sublayers = layer.sublayers {
|
||||
for sublayer in sublayers {
|
||||
if let gradientLayer = sublayer as? CAGradientLayer {
|
||||
// Update the existing gradient layer
|
||||
gradientLayer.colors = colors.map { $0.cgColor }
|
||||
gradientLayer.startPoint = startPoint
|
||||
gradientLayer.endPoint = endPoint
|
||||
gradientLayer.frame = bounds
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new CAGradientLayer instance
|
||||
let gradientLayer = CAGradientLayer()
|
||||
|
||||
// Set the frame of the gradient layer to match the bounds of the view
|
||||
gradientLayer.frame = bounds
|
||||
|
||||
// Ensure that there are at least two colors
|
||||
guard colors.count >= 2 else {
|
||||
fatalError("At least two colors are required for the gradient.")
|
||||
}
|
||||
|
||||
// Calculate the color stops
|
||||
let colorStops = (0..<colors.count).map { CGFloat($0) / CGFloat(colors.count - 1) }
|
||||
|
||||
// Convert UIColors to CGColors
|
||||
let cgColors = colors.map { $0.cgColor }
|
||||
|
||||
// Set the colors and color stops for the gradient layer
|
||||
gradientLayer.colors = cgColors
|
||||
gradientLayer.locations = colorStops as [NSNumber]?
|
||||
|
||||
// Set the start and end points of the gradient
|
||||
gradientLayer.startPoint = startPoint
|
||||
gradientLayer.endPoint = endPoint
|
||||
|
||||
// Insert the gradient layer as the bottom layer of the view's layer hierarchy
|
||||
layer.insertSublayer(gradientLayer, at: 0)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,11 +7,6 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
extension Notification.Name {
|
||||
static let languageDidChange = Notification.Name("languageDidChange")
|
||||
static let pushView = Notification.Name("pushView")
|
||||
}
|
||||
|
||||
class LocalisedElementsLabel: UILabel {
|
||||
|
||||
override init(frame: CGRect) {
|
||||
|
||||
@@ -48,14 +48,13 @@
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="Cia-vt-MF2">
|
||||
<objects>
|
||||
<navigationController storyboardIdentifier="ContentNavigation" automaticallyAdjustsScrollViewInsets="NO" id="XPN-2R-lh2" customClass="NavigationController" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<navigationController storyboardIdentifier="ContentNavigation" navigationBarHidden="YES" id="XPN-2R-lh2" customClass="NavigationController" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="gYe-fj-SXZ">
|
||||
<rect key="frame" x="0.0" y="48" width="414" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<textAttributes key="titleTextAttributes">
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="16"/>
|
||||
<fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="20"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</textAttributes>
|
||||
</navigationBar>
|
||||
@@ -355,6 +354,9 @@
|
||||
<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="WOKA Support"/>
|
||||
<connections>
|
||||
<action selector="btnTapped:" destination="yYJ-KT-PYn" eventType="touchUpInside" id="qGE-d6-T02"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cF2-pJ-F1x">
|
||||
<rect key="frame" x="0.0" y="126" width="88" height="34"/>
|
||||
@@ -362,6 +364,9 @@
|
||||
<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="My Profile"/>
|
||||
<connections>
|
||||
<action selector="btnTapped:" destination="yYJ-KT-PYn" eventType="touchUpInside" id="GKF-bY-Dzo"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ol4-co-NoI">
|
||||
<rect key="frame" x="0.0" y="168" width="153" height="34"/>
|
||||
@@ -829,7 +834,7 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a7Y-B6-f0Q">
|
||||
<rect key="frame" x="359" y="102" width="40" height="40"/>
|
||||
<rect key="frame" x="359" y="58" width="40" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="40" id="2KM-80-dp7"/>
|
||||
<constraint firstAttribute="width" secondItem="a7Y-B6-f0Q" secondAttribute="height" multiplier="1:1" id="VYl-jc-u32"/>
|
||||
@@ -927,10 +932,10 @@
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemCyanColor">
|
||||
<color red="0.19607843137254902" green="0.67843137254901964" blue="0.90196078431372551" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.1960784314" green="0.67843137249999996" blue="0.90196078430000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemGreenColor">
|
||||
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.20392156859999999" green="0.78039215689999997" blue="0.34901960780000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -55,6 +55,10 @@ struct APIEndPoints {
|
||||
static let get_user_data = makeURL(path: "get_user_data")
|
||||
}
|
||||
|
||||
struct SideBarNav{
|
||||
static let faq_listing = makeURL(path: "faq_listing")
|
||||
}
|
||||
|
||||
// Other endpoint categories...
|
||||
struct Links {
|
||||
static let privacyPolicy = "https://www.simplitend.com/privacy-policy"
|
||||
|
||||
97
WOKA/SideBarNav/Controller/ContactSupportVC.swift
Normal file
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// ContactSupportVC.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by Bilal on 04/06/2024.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class ContactSupportVC: UIViewController {
|
||||
|
||||
@IBOutlet weak var supportGirlImage: UIImageView!
|
||||
let dropDownModule = DropDown()
|
||||
var dataSource = [String]()
|
||||
@IBOutlet weak var bottomArrow: UIImageView!
|
||||
@IBOutlet weak var subjectStack: UIStackView!
|
||||
@IBOutlet weak var subjectLabel: UILabel!
|
||||
@IBOutlet weak var messageTF: UITextView!
|
||||
@IBOutlet weak var submitBtn: LocalisedElementsButton!
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
self.title = "Woka Support"
|
||||
let color1 = #colorLiteral(red: 0.7294117647, green: 0.7529411765, blue: 0.3803921569, alpha: 1)
|
||||
let color2 = #colorLiteral(red: 0.1843137255, green: 0.2156862745, blue: 0.0431372549, alpha: 1)
|
||||
self.view.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
|
||||
|
||||
let color3 = #colorLiteral(red: 0.968627451, green: 0.7882352941, blue: 0.1294117647, alpha: 1)
|
||||
let color4 = #colorLiteral(red: 0.968627451, green: 0.4196078431, blue: 0.1098039216, alpha: 1)
|
||||
self.submitBtn.applyGradient(colors: [color3, color4], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
|
||||
self.submitBtn.roundCorner()
|
||||
|
||||
supportGirlImage.roundCorner()
|
||||
subjectStack.roundCorner()
|
||||
messageTF.textContainerInset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||
|
||||
dataSource = ["Query" , "Complaint", "Suggestion", "Other"]
|
||||
initDropDown()
|
||||
|
||||
bottomArrow.addTapGesture {
|
||||
self.dropDownModule.show()
|
||||
}
|
||||
|
||||
subjectLabel.addTapGesture {
|
||||
self.dropDownModule.show()
|
||||
}
|
||||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
navigationController?.setNavigationBarHidden(false, animated: animated)
|
||||
}
|
||||
|
||||
override func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
navigationController?.setNavigationBarHidden(true, animated: animated)
|
||||
}
|
||||
|
||||
@IBAction func submitBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
if subjectLabel.text?.lowercased() == "select subject"{
|
||||
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
|
||||
|
||||
vcPush.contentLabel = "Please select subject".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
vcPush.mainTitleText = "Error".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
|
||||
// vcPush.onDoneBlock = { isDone in }
|
||||
vcPush.modalPresentationStyle = .overCurrentContext
|
||||
vcPush.modalTransitionStyle = .crossDissolve
|
||||
self.present(vcPush, animated: true)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// this func will initialize the dropdown menu
|
||||
func initDropDown(){
|
||||
dropDownModule.anchorView = subjectStack
|
||||
dropDownModule.dataSource = dataSource
|
||||
dropDownModule.cornerRadius = 10
|
||||
dropDownModule.bottomOffset = CGPoint(x: 0, y:(dropDownModule.anchorView?.plainView.bounds.height)!)
|
||||
dropDownModule.topOffset = CGPoint(x: 0, y:-(dropDownModule.anchorView?.plainView.bounds.height)!)
|
||||
dropDownModule.direction = .bottom
|
||||
dropDownModule.textFont = FontCustom.shareInstance.customFont(fontName: .Exo2_Medium, size: 16)
|
||||
dropDownModule.shadowColor = UIColor.appColor(.TextDarkBlue)!
|
||||
dropDownModule.backgroundColor = .white
|
||||
dropDownModule.shadowOffset = CGSize(width: 0, height: 1)
|
||||
dropDownModule.separatorColor = UIColor.lightGray
|
||||
dropDownModule.width = subjectStack.frame.width
|
||||
dropDownModule.selectionBackgroundColor = UIColor.appColor(.TextDarkBlue)!
|
||||
dropDownModule.selectedTextColor = UIColor.white
|
||||
dropDownModule.selectRow(0)
|
||||
dropDownModule.selectionAction = { [unowned self] (index: Int, item: String) in
|
||||
self.subjectLabel.text = item
|
||||
print(index , item)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,14 +10,20 @@ import UIKit
|
||||
class FaqVC: UIViewController {
|
||||
|
||||
@IBOutlet weak var tableView: UITableView!
|
||||
var vm = FaqVM()
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
vm.vc = self
|
||||
vm.initView()
|
||||
let color1 = #colorLiteral(red: 0.05490196078, green: 0.01176470588, blue: 0.3882352941, alpha: 1)
|
||||
let color2 = #colorLiteral(red: 0.2705882353, green: 0.2078431373, blue: 0.7647058824, alpha: 1)
|
||||
self.view.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
|
||||
let color2 = #colorLiteral(red: 0.2041364683, green: 0.156624428, blue: 0.5904380268, alpha: 1)
|
||||
self.view.applyMultiGradient(colors: [color1, color2,color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
|
||||
self.title = "FAQs"
|
||||
setupCell()
|
||||
|
||||
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
|
||||
navigationController?.navigationBar.shadowImage = UIImage()
|
||||
}
|
||||
|
||||
func setupCell(){
|
||||
@@ -42,16 +48,31 @@ class FaqVC: UIViewController {
|
||||
|
||||
extension FaqVC : TableViewSRC{
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
return 10
|
||||
return vm.faqData.count
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell = tableView.dequeueReusableCell(withIdentifier: K.CellIdentifier.SideBarNav.faqCell) as! FaqCell
|
||||
|
||||
cell.setData(data: vm.faqData[indexPath.row])
|
||||
return cell
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
|
||||
return 160
|
||||
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||
var index = [IndexPath]()
|
||||
if let lastIndex = vm.lastIndex{
|
||||
if lastIndex == indexPath.row{
|
||||
vm.faqData[indexPath.row].isExpanded?.toggle()
|
||||
self.tableView.reloadRows(at: [indexPath], with: .fade)
|
||||
return
|
||||
}
|
||||
vm.faqData[lastIndex].isExpanded = false
|
||||
index.append(IndexPath(row: lastIndex, section: 0))
|
||||
}
|
||||
|
||||
index.append(indexPath)
|
||||
vm.faqData[indexPath.row].isExpanded = true
|
||||
|
||||
self.tableView.reloadRows(at: index, with: .fade)
|
||||
vm.lastIndex = indexPath.row
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@ struct FaqListDM: Codable {
|
||||
let id: Int?
|
||||
let englishQuestion, englishAnswer, hindiQuestion, hindiAnswer: String?
|
||||
let categoryMasterID: Int?
|
||||
|
||||
var isExpanded : Bool? = false
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case englishQuestion = "english_question"
|
||||
|
||||
@@ -4,11 +4,15 @@
|
||||
<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>
|
||||
@@ -82,17 +86,26 @@
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="TZc-WP-mme">
|
||||
<rect key="frame" x="0.0" y="48" width="414" height="814"/>
|
||||
<rect key="frame" x="0.0" y="101" width="414" height="761"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</tableView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Frequently asked questions:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YX9-jD-Za3" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="25" y="63" width="364" height="23"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="19"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="lMq-HC-504"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="TZc-WP-mme" firstAttribute="top" secondItem="YX9-jD-Za3" secondAttribute="bottom" constant="15" id="Dwl-9Z-gd1"/>
|
||||
<constraint firstItem="TZc-WP-mme" firstAttribute="leading" secondItem="lMq-HC-504" secondAttribute="leading" id="Gk1-9F-K1s"/>
|
||||
<constraint firstItem="TZc-WP-mme" firstAttribute="top" secondItem="lMq-HC-504" secondAttribute="top" id="Q7A-g0-evD"/>
|
||||
<constraint firstItem="YX9-jD-Za3" firstAttribute="leading" secondItem="lmc-b6-1tV" secondAttribute="leading" constant="25" id="HfH-VU-grx"/>
|
||||
<constraint firstItem="lMq-HC-504" firstAttribute="trailing" secondItem="YX9-jD-Za3" secondAttribute="trailing" constant="25" id="JJS-8I-IWh"/>
|
||||
<constraint firstItem="lMq-HC-504" firstAttribute="trailing" secondItem="TZc-WP-mme" secondAttribute="trailing" id="bfl-YB-RLt"/>
|
||||
<constraint firstItem="lMq-HC-504" firstAttribute="bottom" secondItem="TZc-WP-mme" secondAttribute="bottom" id="ivt-j7-dU4"/>
|
||||
<constraint firstItem="YX9-jD-Za3" firstAttribute="top" secondItem="lMq-HC-504" secondAttribute="top" constant="15" id="sPA-M6-vA7"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
@@ -101,12 +114,139 @@
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="C0M-Y2-KMg" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="916" y="-34"/>
|
||||
<point key="canvasLocation" x="915.94202898550736" y="-34.151785714285715"/>
|
||||
</scene>
|
||||
<!--Contact SupportVC-->
|
||||
<scene sceneID="Zu9-55-aXs">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ContactSupportVC" id="sOK-Bx-Eu1" customClass="ContactSupportVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="JZ9-t4-rIu">
|
||||
<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="49" translatesAutoresizingMaskIntoConstraints="NO" id="5wC-Rc-bx0">
|
||||
<rect key="frame" x="10" y="78" width="394" height="515"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="qyO-EY-Xz8">
|
||||
<rect key="frame" x="15" y="10" width="364" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="LuW-Ab-BCC"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7Pn-Dg-gUD">
|
||||
<rect key="frame" x="15" y="109" width="364" height="120"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="SupportGirlImage" translatesAutoresizingMaskIntoConstraints="NO" id="I2o-ts-y1X">
|
||||
<rect key="frame" x="122" y="0.0" width="120" height="120"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="I2o-ts-y1X" secondAttribute="height" multiplier="1:1" id="wV8-De-yey"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="I2o-ts-y1X" firstAttribute="top" secondItem="7Pn-Dg-gUD" secondAttribute="top" id="HuI-ik-V3K"/>
|
||||
<constraint firstAttribute="bottom" secondItem="I2o-ts-y1X" secondAttribute="bottom" id="KeN-eI-CPR"/>
|
||||
<constraint firstItem="I2o-ts-y1X" firstAttribute="centerX" secondItem="7Pn-Dg-gUD" secondAttribute="centerX" id="ctt-K2-8CW"/>
|
||||
<constraint firstAttribute="height" constant="120" id="wKv-TV-ozO"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3td-Os-A3X">
|
||||
<rect key="frame" x="15" y="278" width="364" height="50"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Select Subject" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CoP-oH-nkk">
|
||||
<rect key="frame" x="15" y="10" width="309" height="30"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="18"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="SupportBottomArrow" translatesAutoresizingMaskIntoConstraints="NO" id="Msa-75-1Cg">
|
||||
<rect key="frame" x="324" y="10" width="25" height="30"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="25" id="lTQ-KK-usc"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="UUM-zp-6dX"/>
|
||||
</constraints>
|
||||
<edgeInsets key="layoutMargins" top="10" left="15" bottom="10" right="15"/>
|
||||
</stackView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="PNw-eT-0fE">
|
||||
<rect key="frame" x="15" y="377" width="364" height="128"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="128" id="T3n-bl-UGJ"/>
|
||||
</constraints>
|
||||
<mutableString key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</mutableString>
|
||||
<color key="textColor" systemColor="labelColor"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="18"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="15"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</textView>
|
||||
</subviews>
|
||||
<edgeInsets key="layoutMargins" top="10" left="15" bottom="10" right="15"/>
|
||||
</stackView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sxV-6l-8uX" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="30" y="782" width="354" height="50"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="Noq-ob-uk0"/>
|
||||
</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>
|
||||
<connections>
|
||||
<action selector="submitBtnTapped:" destination="sOK-Bx-Eu1" eventType="touchUpInside" id="UzF-2P-ufc"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="m71-vF-iJV"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="5wC-Rc-bx0" firstAttribute="top" secondItem="m71-vF-iJV" secondAttribute="top" constant="30" id="2Io-Qv-hbb"/>
|
||||
<constraint firstItem="m71-vF-iJV" firstAttribute="trailing" secondItem="5wC-Rc-bx0" secondAttribute="trailing" constant="10" id="9Uv-Ok-J32"/>
|
||||
<constraint firstItem="sxV-6l-8uX" firstAttribute="leading" secondItem="m71-vF-iJV" secondAttribute="leading" constant="30" id="KHU-DA-aHF"/>
|
||||
<constraint firstItem="m71-vF-iJV" firstAttribute="trailing" secondItem="sxV-6l-8uX" secondAttribute="trailing" constant="30" id="LnS-f4-2YP"/>
|
||||
<constraint firstItem="5wC-Rc-bx0" firstAttribute="leading" secondItem="m71-vF-iJV" secondAttribute="leading" constant="10" id="m8S-Rn-Tte"/>
|
||||
<constraint firstItem="m71-vF-iJV" firstAttribute="bottom" secondItem="sxV-6l-8uX" secondAttribute="bottom" constant="30" id="smy-GF-GI2"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="bottomArrow" destination="Msa-75-1Cg" id="ggE-Yq-RQ0"/>
|
||||
<outlet property="messageTF" destination="PNw-eT-0fE" id="eOq-VM-ZNL"/>
|
||||
<outlet property="subjectLabel" destination="CoP-oH-nkk" id="Hvm-1d-Y9L"/>
|
||||
<outlet property="subjectStack" destination="3td-Os-A3X" id="HbV-Yi-S3Y"/>
|
||||
<outlet property="submitBtn" destination="sxV-6l-8uX" id="L1t-GT-ohc"/>
|
||||
<outlet property="supportGirlImage" destination="I2o-ts-y1X" id="vMZ-Ge-MYx"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="CiJ-3c-075" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1640.5797101449277" y="-34.151785714285715"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="AboutKids" width="256" height="188"/>
|
||||
<image name="AboutVector" width="569.33331298828125" height="538.66668701171875"/>
|
||||
<image name="SupportBottomArrow" width="16" height="16"/>
|
||||
<image name="SupportGirlImage" width="166" height="166"/>
|
||||
<image name="WokaLogo" width="2224" height="450.5"/>
|
||||
<namedColor name="TextDarkBlue">
|
||||
<color red="0.10599999874830246" green="0.050999999046325684" blue="0.60399997234344482" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</namedColor>
|
||||
<systemColor name="labelColor">
|
||||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
|
||||
@@ -11,6 +11,8 @@ class FaqCell: UITableViewCell {
|
||||
|
||||
@IBOutlet weak var question: UILabel!
|
||||
@IBOutlet weak var answer: UILabel!
|
||||
@IBOutlet weak var expandedimage: UIImageView!
|
||||
@IBOutlet weak var lineSeperator: UIView!
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
@@ -23,4 +25,20 @@ class FaqCell: UITableViewCell {
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
func setData(data : FaqListDM.ResultData){
|
||||
self.question.text = data.englishQuestion
|
||||
self.answer.text = data.englishAnswer
|
||||
self.answer.isHidden = !data.isExpanded!
|
||||
|
||||
if let isExpaned = data.isExpanded , isExpaned{
|
||||
self.answer.isHidden = false
|
||||
self.expandedimage.image = UIImage(named: "CollapseFaq")
|
||||
lineSeperator.isHidden = false
|
||||
}else{
|
||||
self.answer.isHidden = true
|
||||
self.expandedimage.image = UIImage(named: "ExpandFaq")
|
||||
lineSeperator.isHidden = true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,28 +25,60 @@
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7aY-Ix-0I9">
|
||||
<rect key="frame" x="15" y="10" width="326" height="105"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Pwm-EW-Oup">
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="Pwm-EW-Oup">
|
||||
<rect key="frame" x="0.0" y="0.0" width="326" height="105"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d10-5Y-dqY">
|
||||
<rect key="frame" x="10" y="10" width="306" height="43.333333333333336"/>
|
||||
<string key="text">WOKA endeavours to make this world
|
||||
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="GwI-HK-ZuV">
|
||||
<rect key="frame" x="15" y="15" width="296" height="75"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d10-5Y-dqY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="276" height="75"/>
|
||||
<string key="text">WOKA endeavours to make this world
|
||||
</string>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WOKA endeavours to make this world WOKA endeavours to make this world" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vgk-wl-8Gw">
|
||||
<rect key="frame" x="10" y="58.333333333333329" width="306" height="36.666666666666671"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RaW-nK-y1i">
|
||||
<rect key="frame" x="281" y="0.0" width="15" height="75"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="ExpandFaq" translatesAutoresizingMaskIntoConstraints="NO" id="HQI-Hh-mIz">
|
||||
<rect key="frame" x="0.0" y="6" width="15" height="15"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="HQI-Hh-mIz" secondAttribute="height" multiplier="1:1" id="yE4-PS-nhZ"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="HQI-Hh-mIz" firstAttribute="leading" secondItem="RaW-nK-y1i" secondAttribute="leading" id="1qY-kF-5bw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="HQI-Hh-mIz" secondAttribute="trailing" id="Jgb-hU-ebX"/>
|
||||
<constraint firstAttribute="width" constant="15" id="aGj-ko-Llv"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="HQI-Hh-mIz" firstAttribute="top" secondItem="d10-5Y-dqY" secondAttribute="top" constant="6" id="ue5-Ql-tW6"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4fa-qf-bwB">
|
||||
<rect key="frame" x="15" y="90" width="296" height="0.3333333333333286"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="0.29999999999999999" id="6na-bY-iEL"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WOKA endeavours to make this world WOKA endeavours to make this world" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vgk-wl-8Gw">
|
||||
<rect key="frame" x="15" y="90" width="296" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="15"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<edgeInsets key="layoutMargins" top="10" left="10" bottom="10" right="10"/>
|
||||
<edgeInsets key="layoutMargins" top="15" left="15" bottom="15" right="15"/>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.20392156862745098" green="0.16862745098039217" blue="0.55294117647058827" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="backgroundColor" red="0.16385955824279269" green="0.15395406764696176" blue="0.39283271014371657" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Pwm-EW-Oup" firstAttribute="leading" secondItem="7aY-Ix-0I9" secondAttribute="leading" id="E6W-t7-74H"/>
|
||||
<constraint firstItem="Pwm-EW-Oup" firstAttribute="top" secondItem="7aY-Ix-0I9" secondAttribute="top" id="UZy-iR-9Nd"/>
|
||||
@@ -72,9 +104,14 @@
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<connections>
|
||||
<outlet property="answer" destination="vgk-wl-8Gw" id="yTe-WS-SgB"/>
|
||||
<outlet property="expandedimage" destination="HQI-Hh-mIz" id="GR2-pm-7O1"/>
|
||||
<outlet property="lineSeperator" destination="4fa-qf-bwB" id="zcv-SD-Xff"/>
|
||||
<outlet property="question" destination="d10-5Y-dqY" id="22H-Yd-Lnc"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="150" y="45"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="ExpandFaq" width="16" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
64
WOKA/SideBarNav/ViewModel/FaqVM.swift
Normal file
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// FaqVM.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by Bilal on 04/06/2024.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
import Alamofire
|
||||
|
||||
class FaqVM{
|
||||
|
||||
weak var vc : FaqVC!
|
||||
var faqData = [FaqListDM.ResultData]()
|
||||
var lastIndex : Int?
|
||||
|
||||
func initView(){
|
||||
getFaqs()
|
||||
}
|
||||
|
||||
// MARK: - Get Faq's
|
||||
|
||||
func getFaqs(){
|
||||
Utilities.startProgressHUD()
|
||||
let headers : HTTPHeaders = ["Accept-Language" : AuthFunc.shareInstance.languageSelected == .english ? "English" : "Hindi",
|
||||
"access-token": AuthFunc.shareInstance.getAccessToken()]
|
||||
let params : Parameters = ["faq_category_key" : "watch"]
|
||||
NetworkManager.shareInstance.apiRequest(url: APIEndPoints.SideBarNav.faq_listing, method: .post, parameters: params,headers : headers) {(result : Result<BaseResponseModel<FaqListDM>, NetworkManager.APIError>) in
|
||||
switch result{
|
||||
case .success(let data):
|
||||
switch data.success{
|
||||
case 0:
|
||||
Utilities.dismissProgressHUD()
|
||||
self.handlError(msg: data.message ?? "Unrecognised error")
|
||||
return
|
||||
case 1:
|
||||
Utilities.dismissProgressHUD()
|
||||
guard let data = data.data?.result else{return}
|
||||
self.faqData = data
|
||||
self.vc.tableView.reloadData()
|
||||
default:
|
||||
break
|
||||
}
|
||||
case .failure(let error):
|
||||
Utilities.dismissProgressHUD()
|
||||
self.handlError(msg: error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func handlError(msg : String){
|
||||
let sb = UIStoryboard(name: K.StoryBoard.customAlerts, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.CustomAlerts.alertCustomVC) as! AlertCustomVC
|
||||
vcPush.contentLabel = msg
|
||||
vcPush.mainTitleText = "Error"
|
||||
vcPush.yesBtnText = "Retry?"
|
||||
vcPush.onDoneBlock = { isDone in
|
||||
self.getFaqs()
|
||||
}
|
||||
vcPush.modalPresentationStyle = .overCurrentContext
|
||||
vcPush.modalTransitionStyle = .crossDissolve
|
||||
self.vc.present(vcPush, animated: true)
|
||||
}
|
||||
}
|
||||
@@ -53,10 +53,14 @@ class SideMenuVC: UIViewController {
|
||||
switch sender{
|
||||
case aboutBtn:
|
||||
self.sideMenuController?.hideMenu()
|
||||
NotificationCenter.default.post(name: .pushView, object: nil, userInfo: nil)
|
||||
NotificationCenter.default.post(name: .linkPush, object: nil, userInfo: ["type": LinkTypeEnum.about])
|
||||
case faqBtn:
|
||||
self.sideMenuController?.hideMenu()
|
||||
NotificationCenter.default.post(name: .pushView, object: nil, userInfo: nil)
|
||||
NotificationCenter.default.post(name: .linkPush, object: nil, userInfo: ["type": LinkTypeEnum.faq])
|
||||
case wokaSupportBtn:
|
||||
self.sideMenuController?.hideMenu()
|
||||
NotificationCenter.default.post(name: .linkPush, object: nil, userInfo: ["type": LinkTypeEnum.support])
|
||||
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
@@ -22,23 +22,36 @@ class TabBarVC: UITabBarController {
|
||||
self.setupTabBarUI()
|
||||
self.addCustomTabBarView()
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(languageDidChange), name: .languageDidChange, object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(pushView), name: .pushView, object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(linkPush), name: .linkPush, object: nil)
|
||||
|
||||
customizeTabBarItemIconSize()
|
||||
}
|
||||
|
||||
deinit{
|
||||
NotificationCenter.default.removeObserver(self, name: .languageDidChange, object: nil)
|
||||
NotificationCenter.default.removeObserver(self, name: .pushView, object: nil)
|
||||
NotificationCenter.default.removeObserver(self, name: .linkPush, object: nil)
|
||||
}
|
||||
|
||||
@objc func pushView(){
|
||||
Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { _ in
|
||||
let sb = UIStoryboard(name: K.StoryBoard.sideBarNav, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.SideBarNav.faqVC) as! FaqVC
|
||||
self.navigationController?.pushViewController(vcPush, animated: true)
|
||||
// let sb = UIStoryboard(name: K.StoryBoard.sideBarNav, bundle: nil)
|
||||
// let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.SideBarNav.aboutUsVc) as! AboutUsVc
|
||||
// self.navigationController?.pushViewController(vcPush, animated: true)
|
||||
@objc func linkPush(_ notification: NSNotification){
|
||||
if let type = notification.userInfo?["type"] as? LinkTypeEnum {
|
||||
Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { _ in
|
||||
switch type{
|
||||
case .about:
|
||||
let sb = UIStoryboard(name: K.StoryBoard.sideBarNav, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.SideBarNav.aboutUsVc) as! AboutUsVc
|
||||
self.navigationController?.pushViewController(vcPush, animated: true)
|
||||
case .faq:
|
||||
let sb = UIStoryboard(name: K.StoryBoard.sideBarNav, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.SideBarNav.faqVC) as! FaqVC
|
||||
self.navigationController?.pushViewController(vcPush, animated: true)
|
||||
case .support:
|
||||
let sb = UIStoryboard(name: K.StoryBoard.sideBarNav, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.SideBarNav.contactSupportVC) as! ContactSupportVC
|
||||
self.navigationController?.pushViewController(vcPush, animated: true)
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
16
WOKA/TabBar & SideMenu/LinkTypeEnum.swift
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// LinkTypeEnum.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by Bilal on 04/06/2024.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
enum LinkTypeEnum {
|
||||
case about
|
||||
case faq
|
||||
case support
|
||||
case profile
|
||||
case addChild
|
||||
}
|
||||