// // MyListVC.swift // // Created by Bilal on 19/05/2024. // import UIKit import GoogleMobileAds class MyListVC: UIViewController{ @IBOutlet weak var webSeriesCV: UICollectionView! @IBOutlet weak var webSeriesEnglishStack: UIStackView! @IBOutlet weak var webSeriesHindiCV: UICollectionView! @IBOutlet weak var webSeriesHindiStack: UIStackView! @IBOutlet weak var audioBooksCV: UICollectionView! @IBOutlet weak var audioBooksStack: UIStackView! @IBOutlet weak var karaokeCV: UICollectionView! @IBOutlet weak var karaokeStack: UIStackView! @IBOutlet weak var gamesCV: UICollectionView! @IBOutlet weak var gamesStack: UIStackView! @IBOutlet weak var noDataStack: UIStackView! @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var gradientView: UIView! @IBOutlet weak var guestLoginView: UIView! @IBOutlet weak var guestLoginStack: UIStackView! @IBOutlet weak var webSeriesBtn: LocalisedElementsButton! @IBOutlet weak var webSeriesHindiBtn: LocalisedElementsButton! @IBOutlet weak var audioBooksBtn: LocalisedElementsButton! @IBOutlet weak var gamesBtn: LocalisedElementsButton! @IBOutlet weak var karaokeViewBtn: LocalisedElementsButton! @IBOutlet weak var shimmerStack: UIStackView! @IBOutlet var shimmerView: [ShimmerEffectView]! @IBOutlet weak var adView: UIView! @IBOutlet weak var adHeight: NSLayoutConstraint! var vm = MyListVM() deinit{ NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: K.NotificationCenterReloads.myListPush), object: nil) } override func viewDidLoad() { super.viewDidLoad() vm.vc = self vm.initView() vm.refreshControl.attributedTitle = NSAttributedString(string: "Refreshing...",attributes: [.foregroundColor: UIColor.appColor(.TextDarkBlue)!]) vm.refreshControl.tintColor = UIColor.appColor(.TextDarkBlue)! vm.refreshControl.addTarget(self, action: #selector(self.refresh(_:)), for: .valueChanged) scrollView.addSubview(vm.refreshControl) } @objc func refresh(_ sender: AnyObject) { Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in guard let self else{return} vm.getFavouriteListing() } } override func viewWillAppear(_ animated: Bool) { } override func viewWillDisappear(_ animated: Bool) { } override func viewDidLayoutSubviews() { vm.addGradient() } override func viewDidAppear(_ animated: Bool) { K.GVar.topView = .myList if K.GVar.reloadMyList{ K.GVar.reloadMyList = false K.GVar.myListSoftReload = false Utilities.startProgressHUD() vm.getFavouriteListing() } if K.GVar.myListSoftReload{ vm.reloadCollections() vm.checkNil() K.GVar.myListSoftReload = false } if MyListDataTemp.shareInstance.isDatafetched == false{ K.GVar.reloadMyListAudioBooks = false K.GVar.reloadKaraoke = false K.GVar.reloadGames = false K.GVar.reloadHindiWebseries = false K.GVar.reloadEnglishWebseries = false return } if K.GVar.reloadMyListAudioBooks{ MyListDataTemp.shareInstance.updateAudioBooks() { [weak self] isDone in guard let self else{return} if isDone{ self.audioBooksCV.reloadData() vm.checkNil() vm.checkViewAll() } } K.GVar.reloadMyListAudioBooks = false } if K.GVar.reloadKaraoke{ MyListDataTemp.shareInstance.updateKaraoke() { [weak self] isDone in guard let self else{return} if isDone{ self.karaokeCV.reloadData() vm.checkNil() vm.checkViewAll() } } K.GVar.reloadKaraoke = false } if K.GVar.reloadGames{ MyListDataTemp.shareInstance.updateGames() { [weak self] isDone in guard let self else{return} if isDone{ self.gamesCV.reloadData() vm.checkNil() vm.checkViewAll() } } K.GVar.reloadGames = false } if K.GVar.reloadEnglishWebseries{ MyListDataTemp.shareInstance.updateWebSeries(catID: 1){ [weak self] isDone in guard let self else{return} if isDone{ webSeriesCV.reloadData() vm.checkNil() vm.checkViewAll() } } K.GVar.reloadEnglishWebseries = false } if K.GVar.reloadHindiWebseries{ MyListDataTemp.shareInstance.updateWebSeries(catID: 18) { [weak self] isDone in guard let self else{return} if isDone{ webSeriesHindiCV.reloadData() vm.checkNil() vm.checkViewAll() } } K.GVar.reloadHindiWebseries = false } } @IBAction func sideBarBtnTapped(_ sender: UIButton) { self.sideMenuController?.revealMenu() } @IBAction func backBtntapped(_ sender: UIButton) { self.tabBarController?.selectedIndex = 0 } @IBAction func freeSignIn(_ sender: LocalisedElementsButton) { UIApplication.setRootView(LoginNavVC.instantiate(from: .AuthenticationSB)) } @IBAction func viewAllBtnTapped(_ sender: UIButton) { PersistentStorage.shared.addOthersCount() switch sender{ case webSeriesHindiBtn: let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Home.MyListViewAllVC) as! MyListViewAllVC vcPush.vm.postType = 1 vcPush.vm.catID = "18" self.navigationController?.pushViewController(vcPush, animated: true) case webSeriesBtn: let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Home.MyListViewAllVC) as! MyListViewAllVC vcPush.vm.postType = 1 vcPush.vm.catID = "1" self.navigationController?.pushViewController(vcPush, animated: true) case karaokeViewBtn: let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Home.MyListViewAllVC) as! MyListViewAllVC vcPush.vm.postType = 8 self.navigationController?.pushViewController(vcPush, animated: true) case audioBooksBtn: let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Home.MyListViewAllVC) as! MyListViewAllVC vcPush.vm.postType = 7 self.navigationController?.pushViewController(vcPush, animated: true) case gamesBtn: let sb = UIStoryboard(name: K.StoryBoard.home, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Home.MyListViewAllVC) as! MyListViewAllVC vcPush.vm.postType = 6 self.navigationController?.pushViewController(vcPush, animated: true) default: break } } } // MARK: - CollectionView Delegate extension MyListVC : CollectionViewSRC{ func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { switch collectionView{ case webSeriesCV: if MyListDataTemp.shareInstance.favListingData?.showData?.english?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{ webSeriesEnglishStack.isHidden = true }else{ webSeriesEnglishStack.isHidden = false } return MyListDataTemp.shareInstance.favListingData?.showData?.english?.count ?? 0 case webSeriesHindiCV: if MyListDataTemp.shareInstance.favListingData?.showData?.hindi?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{ webSeriesHindiStack.isHidden = true }else{ webSeriesHindiStack.isHidden = false } return MyListDataTemp.shareInstance.favListingData?.showData?.hindi?.count ?? 0 case audioBooksCV: if MyListDataTemp.shareInstance.favListingData?.audioData?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{ audioBooksStack.isHidden = true }else{ audioBooksStack.isHidden = false } return MyListDataTemp.shareInstance.favListingData?.audioData?.count ?? 0 case karaokeCV: if MyListDataTemp.shareInstance.favListingData?.singKaraokeData?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{ karaokeStack.isHidden = true }else{ karaokeStack.isHidden = false } return MyListDataTemp.shareInstance.favListingData?.singKaraokeData?.count ?? 0 case gamesCV: if MyListDataTemp.shareInstance.favListingData?.gameData?.count == 0 || MyListDataTemp.shareInstance.favListingData == nil{ gamesStack.isHidden = true }else{ gamesStack.isHidden = false } return MyListDataTemp.shareInstance.favListingData?.gameData?.count ?? 0 default: return 0 } } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: K.CellIdentifier.Home.favouriteCell, for: indexPath) as! FavouriteCell switch collectionView{ case webSeriesCV: if let data = MyListDataTemp.shareInstance.favListingData?.showData?.english?[indexPath.row]{ cell.setData(data: data) } case webSeriesHindiCV: if let data = MyListDataTemp.shareInstance.favListingData?.showData?.hindi?[indexPath.row]{ cell.setData(data: data) } case audioBooksCV: if let data = MyListDataTemp.shareInstance.favListingData?.audioData?[indexPath.row]{ cell.setAudioData(data: data) } case karaokeCV: if let data = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[indexPath.row]{ cell.setKaraokeData(data: data) } case gamesCV: if let data = MyListDataTemp.shareInstance.favListingData?.gameData?[indexPath.row]{ cell.setGameData(data: data) } default: break // if let data = MyListDataTemp.shareInstance.favListingData?.showData?[indexPath.row]{ // cell.setData(data: data) // } } // cell.btnTapped = { [self] (type) -> Void in // updateFavLikes(cv: collectionView, type: type, index: indexPath.row) // } return cell } // Updates from Cell Clicks // func updateFavLikes(cv : UICollectionView , type : FavCellCLick, index : Int){ // switch cv{ // case webSeriesCV: // guard let data = MyListDataTemp.shareInstance.favListingData?.showData?[index] else{return} // switch type { // case .favourite: // guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return} // if isFav{ // vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.showData?.remove(at: index) // webSeriesCV.reloadData() // vm.checkNil() // } // } // } // case .liked: // guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isLiked{ // vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1 // webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // // for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){ // if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{ // MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false // MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // } // } // }else{ // vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! += 1 // webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // // for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){ // if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{ // MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true // MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // } // } // } // } // case webSeriesHindiCV: // let data = MyListDataTemp.shareInstance.webSeriesHindi[index] // switch type { // case .favourite: // guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType,let categoryID = data.categoryMasterID else{return} // if isFav{ // vm.removeFavourite(postID: postID, postType: postType, categoryID: categoryID, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.webSeriesHindi.remove(at: index) // webSeriesHindiCV.reloadData() // vm.checkNil() // } // } // } // case .liked: // Hindi Data // guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isLiked{ // vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false // MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // // guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return} // // for (i,element) in showData.enumerated(){ // if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{ // MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false // MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1 // webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // // } // } // }else{ // vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true // MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // // guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return} // // for (i,element) in showData.enumerated(){ // if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{ // MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true // MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1 // webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // } // } // } // } // case audioBooksCV: // guard let data = MyListDataTemp.shareInstance.favListingData?.audioData?[index] else{return} // switch type { // case .favourite: // guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isFav{ // vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.audioData?.remove(at: index) // audioBooksCV.reloadData() // vm.checkNil() // } // } // } // case .liked: // guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isLiked{ // vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! -= 1 // audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // }else{ // vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.audioData?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.audioData?[index].likesCount! += 1 // audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // } // } // case karaokeCV: // guard let data = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index] else{return} // // switch type { // case .favourite: // guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isFav{ // vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.singKaraokeData?.remove(at: index) // karaokeCV.reloadData() // vm.checkNil() // } // } // } // case .liked: // guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isLiked{ // vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! -= 1 // karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // }else{ // vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[index].likesCount! += 1 // karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // } // } // case gamesCV: // guard let data = MyListDataTemp.shareInstance.favListingData?.gameData?[index] else{return} // // switch type { // case .favourite: // guard let isFav = data.markAsFavourite ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isFav{ // vm.removeFavourite(postID: postID, postType: postType, categoryID: "", index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.gameData?.remove(at: index) // gamesCV.reloadData() // vm.checkNil() // } // } // } // case .liked: // guard let isLiked = data.isLiked ,let postID = data.id,let postType = data.contentMoreDetails?.first?.postType else{return} // if isLiked{ // vm.unlikePost(postID: postID, postType: postType, index: index) { [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1 // gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // }else{ // vm.likePost(postID: postID, postType: postType, index: index){ [unowned self] isDone in // if isDone{ // MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1 // gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // } // } // } // } // default: // break // } // } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { switch collectionView{ case webSeriesCV: // 18- hindi , 1- english guard let showData = MyListDataTemp.shareInstance.favListingData?.showData?.english?[indexPath.row] else{return} // PersistentStorage.shared.addWebSeries(catID: 1, postID: showData.id ?? 0) if let showID = showData.id{ PersistentStorage.shared.addWebSeries(catID: 1, postID: showID, postType: .series) } let showDataModified = WebSeriesShowListDM.ShowDatum(id: showData.id, title: showData.title, description: showData.description, thumbnailPath: showData.thumbnailPath, showType: showData.showType, totalSeasons: showData.totalSeasons, totalEpisodes: showData.totalEpisodes, categoryMasterID: nil, ageRangeMasterID: nil, genderMasterID: showData.genderMasterID, contentMoreDetails: showData.contentMoreDetails, seasonData: nil, categoryData: nil, ageRangeData: nil, genderData: nil, markAsFavourite: showData.markAsFavourite, isLiked: showData.isLiked, likedCategoryIDS: nil, favouriteCategoryIDS: ValueWrapper.stringValue(showData.bookmarkCategoryIDS ?? "1") , likesCount: showData.likesCount, viewsCount: showData.viewsCount, bookmarkCount: showData.bookmarkCount) let sb = UIStoryboard(name: K.StoryBoard.webSeries, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.webSeriesSeasonVC) as! WebSeriesSeasonVC vcPush.vm.showData = showDataModified vcPush.vm.indexSelected = indexPath.row // vcPush.likeFavDelegate = self vcPush.vm.categoryID = 1 self.navigationController?.pushViewController(vcPush, animated: true) self.vm.selectedCollection = .webSeriesCV case webSeriesHindiCV: guard let showData = MyListDataTemp.shareInstance.favListingData?.showData?.hindi?[indexPath.row] else{return} if let showID = showData.id{ PersistentStorage.shared.addWebSeries(catID: 18, postID: showID, postType: .series) } let showDataModified = WebSeriesShowListDM.ShowDatum(id: showData.id, title: showData.title, description: showData.description, thumbnailPath: showData.thumbnailPath, showType: showData.showType, totalSeasons: showData.totalSeasons, totalEpisodes: showData.totalEpisodes, categoryMasterID: nil, ageRangeMasterID: nil, genderMasterID: showData.genderMasterID, contentMoreDetails: showData.contentMoreDetails, seasonData: nil, categoryData: nil, ageRangeData: nil, genderData: nil, markAsFavourite: showData.markAsFavourite, isLiked: showData.isLiked, likedCategoryIDS: nil, favouriteCategoryIDS: ValueWrapper.stringValue(showData.bookmarkCategoryIDS ?? "1") , likesCount: showData.likesCount, viewsCount: showData.viewsCount, bookmarkCount: showData.bookmarkCount) let sb = UIStoryboard(name: K.StoryBoard.webSeries, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.webSeriesSeasonVC) as! WebSeriesSeasonVC vcPush.vm.showData = showDataModified vcPush.vm.indexSelected = indexPath.row // vcPush.likeFavDelegate = self vcPush.vm.categoryID = 18 self.navigationController?.pushViewController(vcPush, animated: true) self.vm.selectedCollection = .webSeriesHindiCV case audioBooksCV: guard let audioData = MyListDataTemp.shareInstance.favListingData?.audioData?[indexPath.row] else{return} if let postID = audioData.id{ PersistentStorage.shared.addAudioCount(postID: postID) } let sb = UIStoryboard(name: K.StoryBoard.audioBooks, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.AudioBooks.audioBookDetailsVC) as! AudioBookDetailsVC vcPush.modalPresentationStyle = .overCurrentContext vcPush.modalTransitionStyle = .crossDissolve vcPush.audioData = audioData // vcPush.delegate = self vcPush.btnTapped = { (type) -> Void in MyListDataTemp.shareInstance.updateAudioBooks() { [weak self] isDone in guard let self else{return} if isDone{ self.audioBooksCV.reloadData() vm.checkNil() vm.checkViewAll() } } } self.vm.selectedCollection = .audioBooksCV self.present(vcPush, animated: true) case karaokeCV: guard let karaokeData = MyListDataTemp.shareInstance.favListingData?.singKaraokeData?[indexPath.row] else{return} if let postID = karaokeData.id{ PersistentStorage.shared.addKaraokeCount(postID: postID) } let sb = UIStoryboard(name: K.StoryBoard.Karaoke, bundle: nil) let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Karaoke.karaokeDetailsVC) as! KaraokeDetailsVC vcPush.modalPresentationStyle = .overCurrentContext vcPush.modalTransitionStyle = .crossDissolve vcPush.karaokeData = karaokeData vcPush.karaokeIndex = indexPath.row // vcPush.delegate = self vcPush.btnTapped = { (type) -> Void in MyListDataTemp.shareInstance.updateKaraoke() { [weak self] isDone in guard let self else{return} if isDone{ self.karaokeCV.reloadData() vm.checkNil() vm.checkViewAll() } } } self.vm.selectedCollection = .karaokeCV self.present(vcPush, animated: true) case gamesCV: guard let gameData = MyListDataTemp.shareInstance.favListingData?.gameData?[indexPath.row] else{return} if let postID = gameData.id{ PersistentStorage.shared.addGamesCount(postID: postID) } 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.gameData = gameData vcPush.gameIndex = indexPath.row // vcPush.delegate = self vcPush.btnTapped = { (type) -> Void in MyListDataTemp.shareInstance.updateGames() { [weak self] isDone in guard let self else{return} if isDone{ self.gamesCV.reloadData() vm.checkNil() vm.checkViewAll() } } } self.vm.selectedCollection = .gamesCV self.present(vcPush, animated: true) default: print(indexPath.row) } } } // MARK: - Delegate for reload //extension MyListVC : ReloadSeriesFavLike{ //Updates from details // func updateRows(index: Int, type: FavCellCLick, isFav: Bool?, isLike: Bool?, id: Int?) { // switch vm.selectedCollection { // case .webSeriesCV: // // if let isLike{ // switch isLike{ // case true: // MyListDataTemp.shareInstance.favListingData?.showData?.english?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.showData?.english?[index].likesCount! += 1 // webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // // for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){ // if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{ // MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = true // MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! += 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // case false: // MyListDataTemp.shareInstance.favListingData?.showData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.showData?[index].likesCount! -= 1 // webSeriesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // // for (i,element) in MyListDataTemp.shareInstance.webSeriesHindi.enumerated(){ // if element.id == MyListDataTemp.shareInstance.favListingData?.showData?[index].id{ // MyListDataTemp.shareInstance.webSeriesHindi[i].isLiked = false // MyListDataTemp.shareInstance.webSeriesHindi[i].likesCount! -= 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // } // } // case .webSeriesHindiCV: // if let isLike{ // switch isLike{ // case true: // MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = true // MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! += 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // // guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return} // // for (i,element) in showData.enumerated(){ // if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{ // MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = true // MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! += 1 // webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // case false: // MyListDataTemp.shareInstance.webSeriesHindi[index].isLiked = false // MyListDataTemp.shareInstance.webSeriesHindi[index].likesCount! -= 1 // webSeriesHindiCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // vm.checkNil() // // guard let showData = MyListDataTemp.shareInstance.favListingData?.showData else{return} // // for (i,element) in showData.enumerated(){ // if element.id == MyListDataTemp.shareInstance.webSeriesHindi[index].id{ // MyListDataTemp.shareInstance.favListingData?.showData?[i].isLiked = false // MyListDataTemp.shareInstance.favListingData?.showData?[i].likesCount! -= 1 // webSeriesCV.reloadItems(at: [IndexPath(row: i, section: 0)]) // } // } // // } // } // case .gamesCV: // if let isLike{ // switch isLike{ // case true: // MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = true // MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! += 1 // gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // case false: // MyListDataTemp.shareInstance.favListingData?.gameData?[index].isLiked = false // MyListDataTemp.shareInstance.favListingData?.gameData?[index].likesCount! -= 1 // gamesCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // } // } // // if let isFav{ // switch isFav{ // case true: // self.gamesCV.reloadData() // self.vm.checkNil() // case false: // self.gamesCV.reloadData() // self.vm.checkNil() // } // } // // case .karaokeCV: // if let isLike{ // switch isLike{ // case true: // karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // case false: // karaokeCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // } // } // // if let isFav{ // switch isFav{ // case true: // self.karaokeCV.reloadData() // self.vm.checkNil() // case false: // self.karaokeCV.reloadData() // self.vm.checkNil() // } // } // case .audioBooksCV: // if let isLike{ // switch isLike{ // case true: // audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // case false: // audioBooksCV.reloadItems(at: [IndexPath(row: index, section: 0)]) // } // } // // if let isFav{ // switch isFav{ // case true: // self.audioBooksCV.reloadData() // self.vm.checkNil() // case false: // self.audioBooksCV.reloadData() // self.vm.checkNil() // } // } // default: // break // // } // } //} // MARK: - Collection Flow Layout extension MyListVC : UICollectionViewDelegateFlowLayout{ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return 5 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { let inset: CGFloat = 10 return UIEdgeInsets(top: 0, left: inset, bottom: 0, right: inset) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return 0 // Space between cells } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let widthPerItem = collectionView.frame.width - 30 // Adjust to your desired width return CGSize(width: widthPerItem, height: 230) } } // MARK: - Google Ad Banner Delegate extension MyListVC : GADBannerViewDelegate{ func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { adView.alpha = 0 adView.isHidden = false adHeight.constant = 90 UIView.animate(withDuration: 0.2, animations: { [weak self] in self?.adView.alpha = 1 }) print("bannerViewDidReceiveAd") } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { UIView.animate(withDuration: 0.2, animations: { [weak self] in guard let self else{return} bannerView.alpha = 0 adHeight.constant = 0 }) print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)") } func bannerViewDidRecordImpression(_ bannerView: GADBannerView) { print("bannerViewDidRecordImpression") } func bannerViewWillPresentScreen(_ bannerView: GADBannerView) { print("bannerViewWillPresentScreen") } func bannerViewWillDismissScreen(_ bannerView: GADBannerView) { print("bannerViewWillDIsmissScreen") } func bannerViewDidDismissScreen(_ bannerView: GADBannerView) { print("bannerViewDidDismissScreen") } }