Files
OrderScheduling/OrderScheduling/Main/Initial.swift
DDIsFriend 1a0943017a update
2023-08-24 16:46:39 +08:00

136 lines
4.3 KiB
Swift

//
// Initial.swift
// OrderScheduling
//
// Created by on 2023/8/4.
//
import Foundation
import DDMAMapKit_Private
import IQKeyboardManagerSwift
import DDAutoUIKit_Private
import DDNetworkingOfAlamofireKit_Private
import Alamofire
import DDToastKit_Private
import DDCategoryKit_Private
import DDControlsKit_Private
import CocoaDebug
class Initial : NSObject {
static let shareInstance = Initial.init()
// MARK: <Third>
func initThirdLib() {
//
initIQKeyboard()
// mamap
initMaMapKey()
// autoUI
initAutoUI()
// af
initAF()
// cocoadebug
initCocoaDebug()
}
func initIQKeyboard(){
IQKeyboardManager.shared.enable = true
}
func initMaMapKey(){
DDMAMapView.start(withAppKey: MAAppKey)
DDMAMapView.agreePrivacy()
}
func initAutoUI() {
let _ = AutoUI.default.getScale(size: 375)
}
func initAF() {
DDAF.delegate = self
}
func initCocoaDebug() {
CocoaDebug.hideBubble()
}
func initAppUpdate() {
APPUPDATE.requestAppUpdateRelay.accept(.auto)
}
// MARK: <RootViewController>
func initRootViewController(){
if USER.isLogin == true {
NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil)
}else{
NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_toLoginController), object: nil)
}
}
func changeRootViewController(window:UIWindow?) {
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_toLoginController), object: nil, queue: .main) { note in
let nav = DDNavigationController(rootViewController: LoginController.init())
window?.rootViewController = nav
}
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_logoutSuccessToLoginController), object: nil, queue: .main) { note in
let nav = DDNavigationController(rootViewController: LoginController.init())
window?.rootViewController = nav
}
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_reLoginToLoginController), object: nil, queue: .main) { note in
let nav = DDNavigationController(rootViewController: LoginController.init())
window?.rootViewController = nav
}
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Notification_loginSuccessToRescueController), object: nil, queue: .main) {[weak self] note in
window?.rootViewController = MainTabBarController.init()
self?.initAppUpdate()
}
}
}
extension Initial : DDAlamofireDelegate {
func networkErrorHandler<T>(response: AFDataResponse<T>) -> AFDataResponse<T> where T : Decodable {
DispatchQueue.main.async {
UIApplication.shared.dd_keyWindow.dd_makeToast(networkFailed)
}
return response
}
func errorCodeHandler<T>(response: AFDataResponse<T>) -> AFDataResponse<T> where T : Decodable {
if response.response?.statusCode == 401 && (USER.isLogin == true) {
NotificationCenter.default.post(name: NSNotification.Name(rawValue: Notification_logoutSuccessToLoginController), object: nil)
}
if let error = response.error {
DispatchQueue.main.async {
UIApplication.shared.dd_keyWindow.dd_makeToast(error.errorDescription)
}
}
if let data = response.data {
let json = try? JSONSerialization.jsonObject(with: data, options: .mutableContainers)
let dic = json as? Dictionary<String, Any>
let msg = dic?["msg"] as? String
if let msg {
DispatchQueue.main.async {
UIApplication.shared.dd_keyWindow.dd_makeToast(msg)
}
}
}
return response
}
func completionHandler<T>(response: AFDataResponse<T>) -> AFDataResponse<T> where T : Decodable {
return response
}
}