jsdw_ios/QuickLocation/Manager/App/RouterManager.swift

146 lines
4.6 KiB
Swift

//
// AppRouter.swift
// dinoGo
//
// Created by osell on 2023/2/8.
// Copyright © 2023 dino. All rights reserved.
//
// MARK: - Route
import URLNavigator
enum Route: String {
/// web
case web = "web"
///
case login = "login"
///
case inviteJoin = "inviteJoin"
///
case joinGroup = "joinGroup"
///
case createGroup = "createGroup"
///
case scan = "scan"
///
case groupIconList = "groupIconList"
///
case vipRecharge = "vipRecharge"
}
extension Route: RouterTarget {
var scheme: String { "jsdw://" }
var name: String { "" }
var path: String { rawValue }
}
// MARK: - AppRouter
extension AppRouter: AppRouterProtocol {
public func setupHandlerRouter() {
AppRouter.globalRouteHandler { route, userInfo in
guard let url = URL(string: route),
let scheme = url.scheme else {
DLToast.showError(text: "oapp_RouteError".localizedString)
return false
}
// https/http
if scheme == "https" || scheme == "http" {
var params = userInfo ?? [String: String]()
let query = url.queryParameters
params = params.merging(query ?? [:], uniquingKeysWith: { value1, _ in return value1 })
if params["browesr"].safeString == "2" {
//
UIApplication.shared.open(url)
} else {
//
params["url"] = url.absoluteString
AppRouter.push(Route.web, userInfo: params)
}
return false
}
//
if ["tel", "telprompt", "sms", "mailto"].contains(where: { $0 == scheme.lowercased() }) {
UIApplication.shared.open(url)
return false
}
guard let vc = AppRouter.viewController(route, userInfo: userInfo) else {
DLToast.showError(text: "请检查路由")
return false
}
if vc.isNeedLogin && !AppContextManager.shared.isGuest {
// AppRouter.push(Route.login)
return false
}
return true
}
}
public func setupRegisterRouter() {
// MARK: - web
// AppRouter.register(Route.web) { url, parameters in
// guard let urlStr = parameters["url"] as? String,
// let url = URL(string: urlStr)?.absoluteString else { return nil }
// let params = parameters.compactMap {
// guard $0.key != "url" else {
// return nil
// }
// return "\($0.key)=\(String(describing: $0.value))"
// }.joined(separator: "&")
// let separator = url.contains("?") ? "&" : "?"
// let tempUrl = url + separator + params
// let style = parameters["style"].safeString
// let isShare = parameters["isShare"].safeString == "1" ? true : false
// let fullscreen = parameters["fullscreen"].safeString == "1" ? true : false
// return WebViewController(url: tempUrl, isShare: isShare, fullscreen: fullscreen, style: style.isEmpty ? "default" : style)
// }
// MARK: -
AppRouter.register(Route.login) { url, parameters in
LoginViewController()
}
// MARK: -
AppRouter.register(Route.inviteJoin) { url, parameters in
let vc = InviteJoinVC(groupInfo: parameters["groupInfo"].safeDictionary as! [String : Any])
// vc.isNeedLogin = true
return vc
}
// MARK: -
AppRouter.register(Route.joinGroup) { url, parameters in
JoinGroupVC()
}
// MARK: -
AppRouter.register(Route.createGroup) { url, parameters in
CreateGroupVC()
}
// MARK: -
AppRouter.register(Route.scan) { url, parameters in
ScanVC()
}
// MARK: -
AppRouter.register(Route.groupIconList) { url, parameters in
let vc = GroupIconListVC(iconIndex: parameters["iconIndex"].safeString)
return vc
}
// MARK: -
AppRouter.register(Route.vipRecharge) { url, parameters in
VipRechargeVC()
}
}
}