diff --git a/WOKA/Alerts/AlertCustomVC.swift b/WOKA/Alerts/AlertCustomVC.swift
index 58beb88..c1e9718 100644
--- a/WOKA/Alerts/AlertCustomVC.swift
+++ b/WOKA/Alerts/AlertCustomVC.swift
@@ -22,6 +22,8 @@ class AlertCustomVC: UIViewController {
var yesBtnText: String?
var mainTitleText: String?
+ var outsideViewTapGestureEnabled = true
+
override func viewDidLoad() {
super.viewDidLoad()
@@ -29,8 +31,10 @@ class AlertCustomVC: UIViewController {
setBtnName()
// Dismiss the alert when tapping outside
- outsideView.addTapGesture {
- self.dismiss(animated: true)
+ if outsideViewTapGestureEnabled == true{
+ outsideView.addTapGesture {
+ self.dismiss(animated: true)
+ }
}
}
diff --git a/WOKA/Audio Books/AudioBookHomeVC.swift b/WOKA/Audio Books/AudioBookHomeVC.swift
index 346ae3a..5f820ad 100644
--- a/WOKA/Audio Books/AudioBookHomeVC.swift
+++ b/WOKA/Audio Books/AudioBookHomeVC.swift
@@ -26,6 +26,7 @@ class AudioBookHomeVC: UIViewController {
@IBOutlet weak var headerTitleLabel: UILabel!
@IBOutlet weak var listenView: ShimmerEffectView!
+ @IBOutlet weak var noDataView: UIView!
@IBOutlet weak var loadMoreBtn: LocalisedElementsButton!
@IBOutlet weak var loadMoreActivityIndicator: UIActivityIndicatorView!
@@ -125,6 +126,17 @@ class AudioBookHomeVC: UIViewController {
}
JWPlayerManager.shared.presentPlayer(from: self, playerItems: playerItems, startIndex: 0, contentType: .audioBooks, videoIDs: [postID])
}
+
+ @IBAction func retryBtnTapped(_ sender: LocalisedElementsButton) {
+ /*
+ make page 0 as its lazy loading, hide the no data stack as retry is tapped,
+ start the shimmer and reload tableview so that both header and table shimmer matches, get the karaoke listing
+ */
+ vm.pageNo = 0
+ noDataView.isHidden = true
+ vm.startShimmer()
+ vm.getShowListing()
+ }
}
// MARK: - Delegate for reload
@@ -206,16 +218,22 @@ extension AudioBookHomeVC : TableViewSRC{
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let data = vm.audioListData[indexPath.row]
- /*
- Updated the top header data
- */
- vm.headerData = data
-
if let postID = data.id{
PersistentStorage.shared.addAudioCount(postID: postID)
}
- vm.setHeaderData()
+ /*
+ MAke logic for ads
+ */
+ if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.audioBooks.rawValue}).first != nil{
+ // check if ads data contains ad for webseries
+ }else{
+ /*
+ Updated the top header data
+ */
+ vm.headerData = data
+ vm.setHeaderData()
+ }
let sb = UIStoryboard(name: K.StoryBoard.audioBooks, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.AudioBooks.audioBookDetailsVC) as! AudioBookDetailsVC
@@ -252,12 +270,23 @@ extension AudioBookHomeVC : CollectionViewSRC{
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let data = vm.continueWatchingData[indexPath.row]
- vm.headerData = data
+
if let postID = data.id{
PersistentStorage.shared.addAudioCount(postID: postID)
}
- vm.setHeaderData()
+ /*
+ MAke logic for ads
+ */
+ if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
+ // check if ads data contains ad for webseries
+ }else{
+ /*
+ Updated the top header data
+ */
+ vm.headerData = data
+ vm.setHeaderData()
+ }
let sb = UIStoryboard(name: K.StoryBoard.audioBooks, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.AudioBooks.audioBookDetailsVC) as! AudioBookDetailsVC
diff --git a/WOKA/Audio Books/AudioBookHomeVM.swift b/WOKA/Audio Books/AudioBookHomeVM.swift
index 260eef8..769fe5f 100644
--- a/WOKA/Audio Books/AudioBookHomeVM.swift
+++ b/WOKA/Audio Books/AudioBookHomeVM.swift
@@ -24,7 +24,6 @@ class AudioBookHomeVM{
vc.scrollView.indicatorStyle = .white // or .white
startShimmer()
setupCell()
- getContinueWatching()
getShowListing()
//Set banner height
@@ -140,6 +139,7 @@ class AudioBookHomeVM{
vc.toast(msg: data.message ?? "Unrecognised error" , time: 2)
case 1:
Utilities.dismissProgressHUD()
+ getContinueWatching()
guard let dataCount = data.data?.totalRecords ,let data = data.data?.audioData else{return}
self.audioListData.append(contentsOf: data)
self.vc.audioListingTableView.reloadData()
@@ -190,12 +190,9 @@ class AudioBookHomeVM{
return
}
Utilities.dismissProgressHUD()
- Utilities.alertWithBtnCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
- if isDone{
- self.getShowListing()
- }
- }
-// vc.toast(msg: error.localizedDescription , time: 2)
+ vc.toast(msg: error.localizedDescription , time: K.ConstantString.errorTime)
+ self.stopShimmer()
+ self.vc.noDataView.isHidden = false
}
}
}
diff --git a/WOKA/Audio Books/AudioBooks.storyboard b/WOKA/Audio Books/AudioBooks.storyboard
index 0f68718..ac865a7 100644
--- a/WOKA/Audio Books/AudioBooks.storyboard
+++ b/WOKA/Audio Books/AudioBooks.storyboard
@@ -208,13 +208,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -235,6 +282,7 @@
+
@@ -571,6 +619,7 @@
+
diff --git a/WOKA/Cart/ViewModel/CartListVM.swift b/WOKA/Cart/ViewModel/CartListVM.swift
index c1aabbc..d6c8e1b 100644
--- a/WOKA/Cart/ViewModel/CartListVM.swift
+++ b/WOKA/Cart/ViewModel/CartListVM.swift
@@ -95,11 +95,7 @@ class CartListVM{
Utilities.dismissProgressHUD()
self.refreshControl.endRefreshing()
self.checkCount()
- Utilities.alertWithBtnCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
- if isDone{
- self.getCartList()
- }
- }
+ vc.toast(msg: error.localizedDescription , time: K.ConstantString.errorTime)
}
}
}
diff --git a/WOKA/Constants K/ConstantString.swift b/WOKA/Constants K/ConstantString.swift
index 18a5230..613f5a4 100644
--- a/WOKA/Constants K/ConstantString.swift
+++ b/WOKA/Constants K/ConstantString.swift
@@ -42,5 +42,7 @@ extension K{
static let rupeeSign = "₹"
static let sync = "Syncing..."
+
+ static let errorTime: Double = 1.6
}
}
diff --git a/WOKA/Games/Controller/GamesListVC.swift b/WOKA/Games/Controller/GamesListVC.swift
index 6b83b76..1817c6b 100644
--- a/WOKA/Games/Controller/GamesListVC.swift
+++ b/WOKA/Games/Controller/GamesListVC.swift
@@ -21,6 +21,7 @@ class GamesListVC: UIViewController {
@IBOutlet weak var headerTitleLabel: UILabel!
@IBOutlet weak var gamesLoadingView: ShimmerEffectView!
+ @IBOutlet weak var noDataView: UIView!
@IBOutlet weak var loadMoreBtn: LocalisedElementsButton!
@IBOutlet weak var loadMoreActivityIndicator: UIActivityIndicatorView!
@@ -47,8 +48,6 @@ class GamesListVC: UIViewController {
rewardedAd = try await GADRewardedAd.load(
withAdUnitID: "ca-app-pub-3940256099942544/1712485313", request: GADRequest())
rewardedAd?.fullScreenContentDelegate = self
-
-
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
@@ -134,6 +133,17 @@ class GamesListVC: UIViewController {
loadMoreActivityIndicator.startAnimating()
vm.getGamesListing(isBtnClick: true)
}
+
+ @IBAction func retryBtnTapped(_ sender: LocalisedElementsButton) {
+ /*
+ make page 0 as its lazy loading, hide the no data stack as retry is tapped,
+ start the shimmer and reload tableview so that both header and table shimmer matches, get the karaoke listing
+ */
+ vm.pageNo = 0
+ noDataView.isHidden = true
+ vm.startShimmer()
+ vm.getGamesListing()
+ }
}
// MARK: - TableView DataSource , Delegates
@@ -163,11 +173,16 @@ extension GamesListVC : TableViewSRC{
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- /*
- Updated the top header data
- */
vm.indexToLoad = indexPath.row
- vm.setHeaderData()
+
+ /*
+ MAke logic for ads
+ */
+ if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.games.rawValue}).first != nil{
+ // check if ads data contains ad for webseries
+ }else{
+ vm.setHeaderData()
+ }
let data = vm.gameData[indexPath.row]
@@ -179,22 +194,32 @@ extension GamesListVC : TableViewSRC{
This is only for test
*/
if data.title == "WOKA Ludo"{
-// guard let interstitial = interstitial else {
-// return print("Ad wasn't ready.")
-// }
-//
-// // The UIViewController parameter is an optional.
-// interstitial.present(fromRootViewController: nil)
+ // guard let interstitial = interstitial else {
+ // return print("Ad wasn't ready.")
+ // }
+ //
+ // // The UIViewController parameter is an optional.
+ // interstitial.present(fromRootViewController: nil)
guard let rewardedAd = rewardedAd else {
return print("Ad wasn't ready.")
- }
-
- // The UIViewController parameter is an optional.
+ }
+
+ // The UIViewController parameter is an optional.
rewardedAd.present(fromRootViewController: nil) {
let reward = rewardedAd.adReward
print("Reward received with currency \(reward.amount), amount \(reward.amount.doubleValue)")
// TODO: Reward the user.
- }
+ }
+ return
+ }
+
+ if data.title == "WOKA Carrom"{
+ guard let interstitial = interstitial else {
+ return print("Ad wasn't ready.")
+ }
+
+ // The UIViewController parameter is an optional.
+ interstitial.present(fromRootViewController: nil)
return
}
@@ -287,13 +312,13 @@ extension GamesListVC : GADFullScreenContentDelegate{
/// Tells the delegate that the ad dismissed full screen content.
func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
- let data = vm.gameData.first
+ let data = vm.gameData[vm.indexToLoad]
let sb = UIStoryboard(name: K.StoryBoard.Games, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Games.gamesDetailVC) as! GamesDetailVC
vcPush.modalPresentationStyle = .overCurrentContext
vcPush.modalTransitionStyle = .crossDissolve
- vcPush.gameIndex = 0
+ vcPush.gameIndex = vm.indexToLoad
vcPush.gameData = data
vcPush.delegate = self
self.present(vcPush, animated: true)
diff --git a/WOKA/Games/Games.storyboard b/WOKA/Games/Games.storyboard
index cfba77a..ad12c65 100644
--- a/WOKA/Games/Games.storyboard
+++ b/WOKA/Games/Games.storyboard
@@ -176,16 +176,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -200,6 +247,7 @@
+
@@ -605,6 +653,7 @@
+
diff --git a/WOKA/Games/ViewModel/GamesListVM.swift b/WOKA/Games/ViewModel/GamesListVM.swift
index f70d729..5f8ba8e 100644
--- a/WOKA/Games/ViewModel/GamesListVM.swift
+++ b/WOKA/Games/ViewModel/GamesListVM.swift
@@ -153,11 +153,9 @@ class GamesListVM{
return
}
Utilities.dismissProgressHUD()
- Utilities.alertWithBtnCompletion(title: "Error", msgBody: error.localizedDescription, okBtnStr: "Retry?", vc: self.vc) { isDone in
- if isDone{
- self.getGamesListing()
- }
- }
+ self.stopShimmer()
+ self.vc.noDataView.isHidden = false
+ vc.toast(msg: error.localizedDescription, time: K.ConstantString.errorTime)
}
}
}
diff --git a/WOKA/Karaoke/Controller/KaraokeListingVC.swift b/WOKA/Karaoke/Controller/KaraokeListingVC.swift
index b16b37c..7d4fd6b 100644
--- a/WOKA/Karaoke/Controller/KaraokeListingVC.swift
+++ b/WOKA/Karaoke/Controller/KaraokeListingVC.swift
@@ -16,6 +16,7 @@ class KaraokeListingVC: UIViewController {
@IBOutlet weak var headerViewLabelHeight: NSLayoutConstraint!
@IBOutlet weak var headerImage: UIImageView!
@IBOutlet weak var headerTitleLabel: UILabel!
+ @IBOutlet weak var noDataStack: UIView!
@IBOutlet weak var scrollView: UIScrollView!
@@ -120,6 +121,17 @@ class KaraokeListingVC: UIViewController {
vcPush.delegate = self
self.present(vcPush, animated: true)
}
+
+ @IBAction func retryBtnTapped(_ sender: LocalisedElementsButton) {
+ /*
+ make page 0 as its lazy loading, hide the no data stack as retry is tapped,
+ start the shimmer and reload tableview so that both header and table shimmer matches, get the karaoke listing
+ */
+ vm.pageNo = 0
+ noDataStack.isHidden = true
+ vm.startShimmer()
+ vm.getKaraokeListing()
+ }
}
// MARK: - CollectionView Delegate and Data Source
@@ -154,10 +166,17 @@ extension KaraokeListingVC : CollectionViewSRC{
}
/*
- Updated the top header data
+ MAke logic for ads
*/
- vm.headerData = data
- vm.setHeaderData()
+ if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
+ // check if ads data contains ad for webseries
+ }else{
+ /*
+ Updated the top header data
+ */
+ vm.headerData = data
+ vm.setHeaderData()
+ }
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC
@@ -208,9 +227,9 @@ extension KaraokeListingVC : TableViewSRC{
if vm.karaokeListData.count == 0{
cell.showShimmer()
}else{
+ cell.stopShimmer()
let data = vm.karaokeListData[indexPath.row]
cell.setKaraokeData(data: data)
- cell.stopShimmer()
}
cell.btnTapped = { [weak self] (type) -> Void in
@@ -235,11 +254,19 @@ extension KaraokeListingVC : TableViewSRC{
if let id = data.id{
PersistentStorage.shared.addKaraokeCount(postID: id)
}
+
/*
- Updated the top header data
+ MAke logic for ads
*/
- vm.headerData = data
- vm.setHeaderData()
+ if let adsData = AuthFunc.shareInstance.adsData, adsData.result?.filter({$0.forPage == AdsEnum.karaoke.rawValue}).first != nil{
+ // check if ads data contains ad for webseries
+ }else{
+ /*
+ Updated the top header data
+ */
+ vm.headerData = data
+ vm.setHeaderData()
+ }
let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil)
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC
diff --git a/WOKA/Karaoke/Karaoke.storyboard b/WOKA/Karaoke/Karaoke.storyboard
index ef71d32..f29a68c 100644
--- a/WOKA/Karaoke/Karaoke.storyboard
+++ b/WOKA/Karaoke/Karaoke.storyboard
@@ -217,6 +217,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -225,9 +268,13 @@
+
+
+
+
@@ -242,6 +289,7 @@
+
@@ -752,6 +800,7 @@
+
diff --git a/WOKA/Karaoke/ViewModel/KaraokeListingVM.swift b/WOKA/Karaoke/ViewModel/KaraokeListingVM.swift
index 75749cf..7a402b4 100644
--- a/WOKA/Karaoke/ViewModel/KaraokeListingVM.swift
+++ b/WOKA/Karaoke/ViewModel/KaraokeListingVM.swift
@@ -27,7 +27,7 @@ class KaraokeListingVM{
vc.title = "KARAOKE".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
vc.view.applyGradient(colors: [color2, color1], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
startShimmer()
- getContinueWatching()
+
getKaraokeListing()
//Set banner height
@@ -108,7 +108,7 @@ class KaraokeListingVM{
}
Utilities.dismissProgressHUD()
self.vc.continueWatchingStack.isHidden = true
- vc.toast(msg: error.localizedDescription , time: 2)
+ vc.toast(msg: error.localizedDescription , time: K.ConstantString.errorTime)
}
}
}
@@ -122,7 +122,6 @@ class KaraokeListingVM{
switch result{
case .success(let data):
guard let self else{
- Utilities.dismissProgressHUD()
return
}
switch data.success{
@@ -130,13 +129,12 @@ class KaraokeListingVM{
/*
Error
*/
- Utilities.dismissProgressHUD()
self.vc.loadMoreBtn.isHidden = true
self.vc.loadMoreActivityIndicator.stopAnimating()
self.vc.loadMoreActivityIndicator.hidesWhenStopped = true
// vc.toast(msg: data.message ?? "Unrecognised error" , time: 2)
case 1:
- Utilities.dismissProgressHUD()
+ getContinueWatching()
guard let dataCount = data.data?.totalRecords, let data = data.data?.karaokeData else{return}
self.karaokeListData.append(contentsOf: data)
self.vc.karaokeListingTableView.reloadData()
@@ -184,11 +182,11 @@ class KaraokeListingVM{
}
case .failure(let error):
guard let self else{
- Utilities.dismissProgressHUD()
return
}
- Utilities.dismissProgressHUD()
+ self.stopShimmer()
vc.toast(msg: error.localizedDescription , time: 2)
+ vc.noDataStack.isHidden = false
}
}
}
diff --git a/WOKA/Network Adapter/NetworkManager.swift b/WOKA/Network Adapter/NetworkManager.swift
index 249d6e0..13050ab 100644
--- a/WOKA/Network Adapter/NetworkManager.swift
+++ b/WOKA/Network Adapter/NetworkManager.swift
@@ -87,6 +87,7 @@ class NetworkManager{
vcPush.contentLabel = "Please Login Again"
vcPush.mainTitleText = "Session Expired."
vcPush.yesBtnText = "Login"
+ vcPush.outsideViewTapGestureEnabled = false
vcPush.onDoneBlock = { isDone in
AuthFunc.shareInstance.logout()
UIApplication.setRootView(LoginNavVC.instantiate(from: .AuthenticationSB))
diff --git a/WOKA/WebSeries/Controller/WebSeriesVC.swift b/WOKA/WebSeries/Controller/WebSeriesVC.swift
index 34b42be..14ee984 100644
--- a/WOKA/WebSeries/Controller/WebSeriesVC.swift
+++ b/WOKA/WebSeries/Controller/WebSeriesVC.swift
@@ -169,10 +169,10 @@ extension WebSeriesVC : TableViewSRC{
if vm.showData.count == 0{
cell.showShimmer()
}else{
+ cell.stopShimmer()
let data = vm.showData[indexPath.row]
let categoryID = vm.categoryListingData[vm.dropDownModule.indexForSelectedRow ?? 0].id ?? 0
cell.setData(data: data,selectedCategory: categoryID)
- cell.stopShimmer()
}
cell.btnTapped = { [self] (type) -> Void in
diff --git a/WOKA/WebSeries/ViewModel/WebSeriesVM.swift b/WOKA/WebSeries/ViewModel/WebSeriesVM.swift
index 4b14583..e095b8b 100644
--- a/WOKA/WebSeries/ViewModel/WebSeriesVM.swift
+++ b/WOKA/WebSeries/ViewModel/WebSeriesVM.swift
@@ -250,7 +250,7 @@ class WebSeriesVM{
return
}
Utilities.dismissProgressHUD()
- vc.toast(msg: error.localizedDescription , time: 2)
+ vc.toast(msg: error.localizedDescription , time: K.ConstantString.errorTime)
}
}
}