- Made last data sync, will check in 1 hour if the last sync done time is past 1 hour, will give a sync in background - 3-3:30 meeting with WOKA for ads - Finalised the data sync when app goes in background. - Muted google ads from splash. - Completed Data sync from logout , it will now show first its syncing the data and then it will logout.
95 lines
3.4 KiB
Swift
95 lines
3.4 KiB
Swift
//
|
|
// HomeVC.swift
|
|
// WOKA
|
|
//
|
|
// Created by Bilal on 24/05/2024.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
protocol ChildViewControllerDelegate: AnyObject {
|
|
func didPressSwitchButton(from viewController: UIViewController)
|
|
}
|
|
|
|
class HomeVC: UIViewController ,ChildViewControllerDelegate{
|
|
|
|
@IBOutlet weak var containerView: UIView!
|
|
var currentChildViewController: UIViewController?
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
|
|
switch AuthFunc.shareInstance.selectedTheme {
|
|
case .theme1:
|
|
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
|
|
if let firstVC = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Theme.themeOneVC) as? ThemeOneVC {
|
|
add(asChildViewController: firstVC)
|
|
firstVC.delegate = self
|
|
}
|
|
case .theme2:
|
|
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
|
|
if let firstVC = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Theme.themeTwoVC) as? ThemeTwoVC {
|
|
add(asChildViewController: firstVC)
|
|
firstVC.delegate = self
|
|
}
|
|
}
|
|
}
|
|
|
|
func didPressSwitchButton(from viewController: UIViewController) {
|
|
if viewController is ThemeOneVC {
|
|
switchToViewController(withIdentifier: K.StoryBoardID.Theme.themeTwoVC)
|
|
} else if viewController is ThemeTwoVC {
|
|
switchToViewController(withIdentifier: K.StoryBoardID.Theme.themeOneVC)
|
|
}
|
|
}
|
|
|
|
|
|
private func switchToViewController(withIdentifier identifier: String) {
|
|
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
|
|
let newVC = sb.instantiateViewController(withIdentifier: identifier)
|
|
if let newVC = newVC as? ThemeOneVC {
|
|
newVC.delegate = self
|
|
} else if let newVC = newVC as? ThemeTwoVC {
|
|
newVC.delegate = self
|
|
}
|
|
|
|
print("Switching to view controller with identifier \(identifier)")
|
|
DispatchQueue.main.async { [weak self] in
|
|
guard let self else{return}
|
|
self.replaceCurrentChildViewController(with: newVC)
|
|
}
|
|
}
|
|
|
|
private func add(asChildViewController viewController: UIViewController) {
|
|
print("Adding child view controller: \(viewController)")
|
|
addChild(viewController)
|
|
viewController.view.frame = containerView.bounds
|
|
containerView.addSubview(viewController.view)
|
|
viewController.didMove(toParent: self)
|
|
currentChildViewController = viewController
|
|
}
|
|
|
|
private func remove(asChildViewController viewController: UIViewController, onCompletion : @escaping () -> Void) {
|
|
print("Removing child view controller: \(viewController)")
|
|
viewController.willMove(toParent: nil)
|
|
viewController.view.removeFromSuperview()
|
|
viewController.removeFromParent()
|
|
onCompletion()
|
|
}
|
|
|
|
private func replaceCurrentChildViewController(with newViewController: UIViewController) {
|
|
// Clear previous views
|
|
containerView.subviews.forEach { $0.removeFromSuperview() }
|
|
|
|
// Remove current child view controller if exists
|
|
if let currentVC = currentChildViewController {
|
|
remove(asChildViewController: currentVC) { [weak self] in
|
|
guard let self else{return}
|
|
// Add new child view controller
|
|
add(asChildViewController: newViewController)
|
|
}
|
|
}
|
|
}
|
|
}
|