// // SideMenuViewController.swift // GMERemittance // // Created by Sujal on 2/22/18. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import SDWebImage import LGSideMenuController import Localize_Swift import RxSwift import RxCocoa protocol SideMenuDelegate: class { func didSelectMenu(_ viewController: UIViewController, didSelectMenu: SideMenuViewController.MenuType) } struct SideMenuNavigationNotifications { static let aboutGme = "aboutGme" static let support = "support" static let setting = "setting" static let availableBalance = "Available_Balance" static let withdraw = "withdraw" static let KftcAccountList = "KftcAccountList" static let transactionHistory = "transaction_History_from_sidemenu" } class SideMenuViewController: UIViewController { struct StringConstants { let logoutTitleText = "logout_text".localized() let logoutConfirmationText = "logout_confirmation_text".localized() let noText = "no_text".localized() let yesText = "yes_text".localized() let autoDebitMenuText = "auto_debit_account_text".localized() let inboundMenuText = "inbound_accounts_text".localized() let aboutGmeMenuText = "about_gme_text".localized() let settingMenuText = "settings_text".localized() let availableBalanceTitleLabelText = "available_balance_text".localized() let withdrawButtonText = "bank_deposit_text".localized() let gmeWalletNoTitleText = "gme_wallet_no_text".localized() } enum MenuType { case about case setting case notice } // @IBOutlets @IBOutlet weak var labelProfileName: UILabel! @IBOutlet weak var labelPhone: UILabel! @IBOutlet weak var labelEmail: UILabel! @IBOutlet weak var roundedBgView: UIView! @IBOutlet weak var settingButton: UIButton! @IBOutlet weak var aboutGmeButton: UIButton! @IBOutlet weak var logoutButton: UIButton! @IBOutlet weak var aboutIconImageView: UIImageView! @IBOutlet weak var settingIconImageView: UIImageView! @IBOutlet weak var logoutIconImageView: UIImageView! @IBOutlet weak var noticeButton: UIButton! weak var sideMenuDelegate: SideMenuDelegate? private let disposeBag = DisposeBag() var selectedMenu: MenuType? { didSet { guard let menu = selectedMenu else { return } sideMenuDelegate?.didSelectMenu(self, didSelectMenu: menu) } } // Life Cycle override func viewDidLoad() { super.viewDidLoad() setUpSettingsScreen() setup() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.setUpSettingsScreen() NotificationCenter.default.addObserver( self, selector: #selector(configureText), name: NSNotification.Name(LCLLanguageChangeNotification), object: nil ) } // Other Functions private func addShadow(view: UIView) { view.layer.shadowColor = UIColor.darkGray.cgColor view.layer.shadowOpacity = 0.5 view.layer.shadowRadius = 2 let offset = CGSize(width: 1, height: 1) view.layer.shadowOffset = offset } private func setup() { configureText() let shouldShowWithdrawButton = Utility.isVerifiedUser() // self.view.backgroundColor = .clear // self.roundedBgView.layer.cornerRadius = 20 labelProfileName.textColor = .themeBlack aboutGmeButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5) settingButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5) logoutButton.titleLabel?.adjustsFontSizeToFitWidth(true, scale: 0.5) } @objc private func configureText() { aboutGmeButton.setTitle(StringConstants().aboutGmeMenuText, for: UIControl.State.normal) settingButton.setTitle(StringConstants().settingMenuText, for: UIControl.State.normal) logoutButton.setTitle(StringConstants().logoutTitleText, for: UIControl.State.normal) } private func setupBlueBackGroundTheme() { self.roundedBgView.backgroundColor = .themeBlue [ labelPhone, labelEmail].forEach({ $0?.textColor = .themeWhite }) [aboutGmeButton, settingButton, logoutButton].forEach({ $0?.setTitleColor(.themeWhite, for: UIControl.State.normal) }) aboutIconImageView.tintColor = .themeWhite } @IBAction func aboutGme(_ sender: UIButton) { self.sideMenuController?.hideLeftView() sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .about) } @IBAction func setting(_ sender: UIButton) { self.sideMenuController?.hideLeftView() sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .setting) } @IBAction func touchNoticeButton(_ sender: UIButton) { self.sideMenuController?.hideLeftView() sideMenuDelegate?.didSelectMenu(self, didSelectMenu: .notice) } @IBAction func backButton(_ sender: UIButton) { self.sideMenuController?.hideLeftView(animated: true, completionHandler: nil) } @IBAction func logout(_ sender: Any) { alertWithOkCancel( type: .normal, message: StringConstants().logoutConfirmationText, title: StringConstants().logoutTitleText, okTitle: "yes_text".localized(), cancelTitle: "no_text".localized(), okAction: { MainWireframe.logout() } ) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func setUpSettingsScreen() { //PHONE GMEDB.shared.user.rx.string(key: .mobileNumber).bind(to: labelPhone.rx.text) .disposed(by: disposeBag) //EMAIL GMEDB.shared.user.rx.string(key: .email).bind(to: labelEmail.rx.text) .disposed(by: disposeBag) let test = GMEDB.shared.user.rx.string(key: .email) print("TEST IS POSSIBLE \(test)") //NAME GMEDB.shared.user.rx.string(key: .firstName).map {$0?.capitalized}.bind(to: labelProfileName.rx.text) .disposed(by: disposeBag) } // Notification Names func getAvailableBalanceNotificationName() -> Notification.Name { return Notification.Name.init(SideMenuNavigationNotifications.availableBalance) } func getWithdrawNotificationName() -> Notification.Name { return Notification.Name.init(SideMenuNavigationNotifications.withdraw) } }