wake-ios/wake/Utils/Router.swift
2025-09-03 14:12:50 +08:00

78 lines
1.9 KiB
Swift

import SwiftUI
@MainActor
enum AppRoute: Hashable {
case login
case avatarBox
case feedbackView
case feedbackDetail(type: FeedbackView.FeedbackType)
case mediaUpload
case blindBox(mediaType: BlindBoxView.BlindBoxMediaType, ids: [String]? = nil)
case blindOutcome(media: MediaType, time: String? = nil, description: String? = nil)
case memories
case subscribe
case userInfo
case account
case about
case permissionManagement
case feedback
case blindList
@ViewBuilder
var view: some View {
switch self {
case .login:
LoginView()
case .avatarBox:
AvatarBoxView()
case .feedbackView:
FeedbackView()
case .feedbackDetail(let type):
FeedbackDetailView(feedbackType: type)
case .mediaUpload:
MediaUploadView()
case .blindBox(let mediaType, let ids):
BlindBoxView(mediaType: mediaType, ids: ids)
case .blindOutcome(let media, let time, let description):
BlindOutcomeView(media: media, time: time, description: description)
case .memories:
MemoriesView()
case .subscribe:
SubscribeView()
case .userInfo:
UserInfo()
case .account:
AccountView()
case .about:
AboutUsView()
case .permissionManagement:
PermissionManagementView()
case .feedback:
FeedbackView()
case .blindList:
BlindListView()
}
}
}
@MainActor
class Router: ObservableObject {
static let shared = Router()
@Published var path = NavigationPath()
private init() {}
func navigate(to destination: AppRoute) {
path.append(destination)
}
func pop() {
path.removeLast()
}
func popToRoot() {
path = NavigationPath()
}
}