// // SplashVC.swift // WOKA // // Created by MacBook Pro on 25/04/24. // import UIKit import Lottie import OneSignalFramework import GoogleMobileAds class SplashVC: UIViewController { @IBOutlet weak var wokaLogo: UIImageView! @IBOutlet weak var hindiBtn: UIButton! @IBOutlet weak var englishBtn: UIButton! @IBOutlet weak var languageBtnStack: UIStackView! @IBOutlet weak var wokaOriginY: NSLayoutConstraint! @IBOutlet weak var retryBtn: UIButton! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! @IBOutlet weak var adBanner1: UIView! @IBOutlet weak var adBanner2: UIView! var vm = SplashVM() // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() /* Show google ads with dispatch queue. */ DispatchQueue.main.asyncAfter(deadline: .now(), execute: { [weak self] in guard let self else{return} // AdReusable.sharedInstance.setupBannerAd(bannerView: vm.banner1, in: adBanner1, adUnitID: K.GoogleAdIDs.splashBanner1, viewController: self) // AdReusable.sharedInstance.setupBannerAd(bannerView: vm.banner2, in: adBanner2, adUnitID: K.GoogleAdIDs.splashBanner2, viewController: self) vm.initView() }) self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil) vm.vc = self print("OneSignalID:- ", OneSignal.User.pushSubscription.id ?? "NIL") if K.GVar.skippedUpdate == true{ K.GVar.skippedUpdate = nil self.languageBtnStack.isHidden = false self.wokaLogo.transform = CGAffineTransform(scaleX: 1.8, y: 1.8) return } vm.playSplashSound() animateImageScale() } @IBAction func languageBtnTapped(_ sender: UIButton) { PersistentStorage.shared.addOthersCount() switch sender{ case hindiBtn: UserDefaults.standard.setValue(LocalizedEnum.hindi.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage) AuthFunc.shareInstance.languageSelected = .hindi case englishBtn: UserDefaults.standard.setValue(LocalizedEnum.english.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage) AuthFunc.shareInstance.languageSelected = .english default: UserDefaults.standard.setValue(LocalizedEnum.english.rawValue, forKey: K.UserDefaultsStruct.defaultLanguage) AuthFunc.shareInstance.languageSelected = .english } //flow is updated, now on language click call the guest login api vm.guestLogin() } @IBAction func retryBtnTapped(_ sender: UIButton) { if AuthFunc.shareInstance.getUserType() == 3{ vm.startStopIndicator(start: true) vm.getVersionHistory() // if AuthFunc.shareInstance.staticURLs == nil{ // AuthFunc.shareInstance.getStaticURLs { [weak self] isDone in // guard let self else{return} // vm.startStopIndicator(start: false) // if isDone == true{ // UIApplication.setRootView(SideMenuController.instantiate(from: .Home)) // }else{ // self.retryBtn.isHidden = false // } // } // }else{ // vm.startStopIndicator(start: false) // UIApplication.setRootView(SideMenuController.instantiate(from: .Home)) // } }else{ vm.startStopIndicator(start: true) vm.getVersionHistory() } } func animateImageScale() { UIView.animate(withDuration: 3.0, delay: 0, options: [], animations: { self.wokaLogo.transform = CGAffineTransform(scaleX: 1.8, y: 1.8) }, completion: nil) // let newConstant = wokaOriginY.constant - 50 Timer.scheduledTimer(withTimeInterval: 6, repeats: false) { [weak self] _ in guard let self else{return} /* If user is loggined no need to shift the woka logo upside to new constant. Directly Navigate user to home */ // vm.getVersionHistory() /* Check version history here */ vm.startStopIndicator(start: true) vm.getVersionHistory() // animateForward() } } func animateForward(){ if AuthFunc.shareInstance.checkLogin(){ vm.getUserData() return }else{ //check if the static url data is fetched if AuthFunc.shareInstance.staticURLs == nil{ AuthFunc.shareInstance.getStaticURLs() } } UIView.animate(withDuration: 0.5, animations: { [weak self] in guard let self else{return} // Update the constant value of the top constraint self.wokaOriginY.constant = wokaOriginY.constant - 50 // Inform the layout system to update self.view.layoutIfNeeded() }) { _ in if !AuthFunc.shareInstance.checkLogin(){ self.vm.startStopIndicator(start: false,hide: true) UIView.animate(withDuration: 0.3, delay: 0,options : [.transitionCrossDissolve],animations: { // Set the isHidden property of the view self.languageBtnStack.isHidden = false }) {_ in // Inform the stack view to update its layout self.languageBtnStack.layoutIfNeeded() } } } } override func viewDidLayoutSubviews() { } } // MARK: - Google Ad Banner Delegate extension SplashVC : GADBannerViewDelegate{ func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { print("bannerViewDidReceiveAd") bannerView.alpha = 0 bannerView.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) UIView.animate(withDuration: 0.5, animations: { bannerView.alpha = 1 }) } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { 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") } }