dimensionhub/dimensionhub/Core/AppNavigation.swift

50 lines
1.2 KiB
Swift

//
// AppNavigation.swift
// dimensionhub
//
// Created by on 2025/4/9.
//
import Foundation
import SwiftUI
//
final class AppNavigation: ObservableObject {
static var shared = AppNavigation()
enum Destination: Hashable {
case detail(id: Int)
case followList
case search
}
@Published var path = NavigationPath()
@Published var targetDetailId: Int = 0
func append(dest: Destination) {
path.append(dest)
}
func handleNotification(_ userInfo: [AnyHashable: Any]) {
guard let customData = userInfo["custom_data"] as? [String: AnyObject],
let target = customData["target"] as? String,
let params = customData["params"] as? [String : AnyObject] else {
return
}
path = NavigationPath()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [self] in
switch target {
case "detail":
if let dramaId = params["drama_id"] as? Int {
self.targetDetailId = dramaId
}
default:
()
}
}
}
}