146 lines
4.6 KiB
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()
|
|
}
|
|
}
|
|
}
|
|
|
|
|