- 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
This commit is contained in:
Bilal
2024-06-04 20:01:51 +05:30
parent a5b33a3cfa
commit 4175dca940
45 changed files with 2303 additions and 58 deletions

View File

@@ -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 */,

View File

@@ -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

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

View 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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View 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"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 B

View File

@@ -46,6 +46,7 @@ extension K{
struct SideBarNav{
static let aboutUsVc = "AboutUsVc"
static let faqVC = "FaqVC"
static let contactSupportVC = "ContactSupportVC"
}
}
}

View File

@@ -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")

View 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>

View 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

View 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

View 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

View 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>

View 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

File diff suppressed because it is too large Load Diff

View 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

View 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")
}

View File

@@ -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)
}
}

View File

@@ -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) {

View File

@@ -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>

View File

@@ -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"

View 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)
}
}
}

View File

@@ -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
}
}

View File

@@ -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"

View File

@@ -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>

View File

@@ -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
}
}
}

View File

@@ -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>

View 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)
}
}

View File

@@ -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
}

View File

@@ -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
}
}
}
}

View 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
}