You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
3.1 KiB

//
// MainWireframe.swift
//
//
// Created by shishir sapkota
//
import Foundation
import UIKit
import LGSideMenuController
class MainWireframe {
static var shared: MainWireframe? = MainWireframe()
weak var view: UIViewController!
var isUseSwipeGesture = true {
didSet {
let sideMenuVC = (MainWireframe.shared?.window?.rootViewController as? LGSideMenuController)
sideMenuVC?.isLeftViewSwipeGestureEnabled = isUseSwipeGesture
}
}
}
extension MainWireframe: MainWireframeInput {
var storyboardName: String {return "Main"}
func getMainView() -> UIViewController {
let viewController = MainViewController()
let viewControllers: [UIViewController] = self.getViewControllers()
viewController.setup(viewControllers: viewControllers)
self.view = viewController
self.show(index: 0) // temporary
return viewController
}
private func getViewControllers() -> [UIViewController] {
let homeViewController = HomeWireframe().getMainView()
let navHomeViewController = SwipeNavigationController(rootViewController: homeViewController)
navHomeViewController.hero.isEnabled = true
let sendMoneyViewController = RecipientsWireframe().getMainView()
sendMoneyViewController.setupTabItem()
let navSendMoneyViewController = SwipeNavigationController(rootViewController: sendMoneyViewController)
navSendMoneyViewController.hero.isEnabled = true
let contactsViewController = GmeContactsWireframe().getMainView()
contactsViewController.setupTabItem()
let navContactsViewController = SwipeNavigationController(rootViewController: contactsViewController)
guard let profileViewController = UIStoryboard(name: "Profile", bundle: nil)
.instantiateViewController(withIdentifier: "ProfileViewController") as? ProfileViewController else {
return [navHomeViewController, navSendMoneyViewController, navContactsViewController]
}
profileViewController.setupTabItem()
let navProfileViewController = SwipeNavigationController(rootViewController: profileViewController)
return [
navHomeViewController,
navSendMoneyViewController,
navContactsViewController,
navProfileViewController
]
}
func show(index: Int) {
if let view = self.view as? MainViewController {
view.selectedIndex = index
}
}
static func logoutWarningAlert(message: String) {
guard let window = MainWireframe.shared?.window else {return}
window.rootViewController?.hideProgressHud()
window.rootViewController?.alertWithOk(
type: .error,
message: message,
title: "Warning",
okTitle: "ok_text".localized()
) {
self.logout()
}
}
static func logout() {
guard let window = MainWireframe.shared?.window else {return}
GMEDB.shared.user.removeAllWithoutUserID()
GMEDB.shared.app.removeAll()
KeyChain.shared.save(data: "0", key: .login)
let splaseWireframe = SplashScreenWireframe()
let navigationVC = UINavigationController.init(rootViewController: splaseWireframe.getMainView())
window.rootViewController = navigationVC
window.makeKeyAndVisible()
}
}