Initial commit: suixinkan_ios UIKit rewrite project.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
181
suixinkan_ios/App/Navigation/AppRouteViewControllerFactory.swift
Normal file
181
suixinkan_ios/App/Navigation/AppRouteViewControllerFactory.swift
Normal file
@ -0,0 +1,181 @@
|
||||
//
|
||||
// AppRouteViewControllerFactory.swift
|
||||
// suixinkan
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@MainActor
|
||||
/// 应用路由 ViewController 工厂,将 `AppRoute` 及各模块路由映射为 UIKit 页面。
|
||||
enum AppRouteViewControllerFactory {
|
||||
|
||||
/// 根据路由创建目标 ViewController;未迁移页面使用占位页。
|
||||
static func makeViewController(for route: AppRoute, services: AppServices) -> UIViewController {
|
||||
switch route {
|
||||
case .placeholder(let title):
|
||||
return PlaceholderViewController(title: title)
|
||||
case .home(let homeRoute):
|
||||
return makeViewController(for: homeRoute, services: services)
|
||||
case .profile(let profileRoute):
|
||||
return makeViewController(for: profileRoute, services: services)
|
||||
case .orders(let ordersRoute):
|
||||
return makeViewController(for: ordersRoute, services: services)
|
||||
}
|
||||
}
|
||||
|
||||
/// 根据首页二级路由创建 ViewController。
|
||||
static func makeViewController(for route: HomeRoute, services: AppServices) -> UIViewController {
|
||||
switch route {
|
||||
case .profileSpace:
|
||||
return ProfileViewController()
|
||||
case .scenicSelection:
|
||||
return ScenicSelectionViewController()
|
||||
case .permissionApply:
|
||||
return PermissionApplyViewController()
|
||||
case .permissionApplyStatus:
|
||||
return PermissionApplyStatusViewController()
|
||||
case .scenicApplication:
|
||||
return ScenicApplicationViewController()
|
||||
case .moreFunctions:
|
||||
return HomeMoreFunctionsViewController()
|
||||
case .settings:
|
||||
return SettingsViewController()
|
||||
case .paymentCollection:
|
||||
return PaymentCollectionViewController()
|
||||
case .wallet:
|
||||
return WalletViewController()
|
||||
case .taskManagement:
|
||||
return TaskManagementViewController()
|
||||
case .taskCreate:
|
||||
return TaskCreateViewController()
|
||||
case .taskDetail(let id, let summary):
|
||||
return TaskDetailViewController(taskId: id, summary: summary)
|
||||
case .projectManagement:
|
||||
return ProjectManagementViewController()
|
||||
case .pmProjectManagement:
|
||||
return StoreProjectManagementViewController()
|
||||
case .projectDetail(let id, let storeMode):
|
||||
return ProjectDetailViewController(projectId: id, storeMode: storeMode)
|
||||
case .projectEditor(let id, let storeMode):
|
||||
if storeMode {
|
||||
return StoreProjectEditorViewController(projectId: id)
|
||||
}
|
||||
return ProjectEditorViewController(projectId: id)
|
||||
case .scheduleManagement:
|
||||
return ScheduleManagementViewController()
|
||||
case .scheduleAdd:
|
||||
return ScheduleAddViewController()
|
||||
case .photographerInvite:
|
||||
return PhotographerInviteViewController()
|
||||
case .inviteRecord:
|
||||
return InviteRecordViewController()
|
||||
case .cloudStorage:
|
||||
return CloudStorageViewController()
|
||||
case .cloudStorageTransit:
|
||||
return CloudStorageTransitViewController()
|
||||
case .materialLibrary:
|
||||
return MediaLibraryViewController(kind: .material)
|
||||
case .materialUpload:
|
||||
return MediaLibraryUploadViewController(kind: .material)
|
||||
case .sampleLibrary:
|
||||
return MediaLibraryViewController(kind: .sample)
|
||||
case .sampleUpload:
|
||||
return MediaLibraryUploadViewController(kind: .sample)
|
||||
case .albumList:
|
||||
return AlbumListViewController()
|
||||
case .albumTrailer:
|
||||
return AlbumTrailerViewController()
|
||||
case .punchPointList:
|
||||
return PunchPointListViewController()
|
||||
case .punchPointDetail(let id, let summary):
|
||||
return PunchPointDetailViewController(punchPointId: id, summary: summary)
|
||||
case .punchPointEditor(let id):
|
||||
return PunchPointEditorViewController(punchPointId: id)
|
||||
case .punchPointQR(_, let title, let qrURL):
|
||||
return PunchPointQRViewController(title: title, qrURL: qrURL)
|
||||
case .locationReport:
|
||||
return LocationReportViewController()
|
||||
case .locationReportHistory:
|
||||
return LocationReportHistoryViewController()
|
||||
case .depositOrders:
|
||||
return DepositOrderListViewController()
|
||||
case .withdrawalAudit:
|
||||
return WithdrawalAuditViewController()
|
||||
case .scenicSettlement:
|
||||
return ScenicSettlementViewController()
|
||||
case .scenicSettlementReview:
|
||||
return ScenicSettlementReviewViewController()
|
||||
case .messageCenter:
|
||||
return MessageCenterViewController()
|
||||
case .queueManagement:
|
||||
return QueueManagementViewController()
|
||||
case .liveManagement:
|
||||
return LiveManagementViewController()
|
||||
case .liveAlbum:
|
||||
return LiveAlbumViewController()
|
||||
case .operatingArea:
|
||||
return OperatingAreaViewController()
|
||||
case .pilotCertification:
|
||||
return PilotCertificationViewController()
|
||||
case .modulePlaceholder(_, let title):
|
||||
return FeaturePlaceholderViewController(title: title, uri: homeRouteURI(route))
|
||||
}
|
||||
}
|
||||
|
||||
/// 根据个人中心二级路由创建 ViewController。
|
||||
static func makeViewController(for route: ProfileRoute, services: AppServices) -> UIViewController {
|
||||
switch route {
|
||||
case .accountSwitch:
|
||||
return AccountSwitchViewController()
|
||||
case .realNameAuth:
|
||||
return RealNameAuthViewController()
|
||||
case .settings:
|
||||
return SettingsViewController()
|
||||
case .agreement(let page):
|
||||
return AgreementViewController(page: page)
|
||||
#if DEBUG
|
||||
case .debugHomeMenus:
|
||||
return HomeMoreFunctionsViewController()
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/// 根据订单模块二级路由创建 ViewController。
|
||||
static func makeViewController(for route: OrdersRoute, services: AppServices) -> UIViewController {
|
||||
switch route {
|
||||
case .storeDetail(let item):
|
||||
return StoreOrderDetailViewController(item: item)
|
||||
case .writeOffDetail(let item):
|
||||
return WriteOffOrderDetailViewController(item: item)
|
||||
case .depositDetail(let orderNumber):
|
||||
return DepositOrderDetailViewController(orderNumber: orderNumber)
|
||||
case .depositShootingInfo(let orderNumber, let scenicSpotId, let photogUid):
|
||||
return DepositOrderShootingInfoViewController(
|
||||
orderNumber: orderNumber,
|
||||
scenicSpotId: scenicSpotId,
|
||||
photogUid: photogUid
|
||||
)
|
||||
case .historicalShooting(let orderNumber):
|
||||
return HistoricalShootingInfoViewController(orderNumber: orderNumber)
|
||||
case .multiTravelTaskUpload(let orderNumber):
|
||||
return MultiTravelTaskUploadViewController(initialOrderNumber: orderNumber)
|
||||
case .orderTrailer(let orderNumber, let title):
|
||||
return FeaturePlaceholderViewController(title: title, uri: "order_trailer:\(orderNumber)")
|
||||
}
|
||||
}
|
||||
|
||||
private static func homeRouteURI(_ route: HomeRoute) -> String {
|
||||
if case let .modulePlaceholder(uri, _) = route {
|
||||
return uri
|
||||
}
|
||||
return String(describing: route)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
/// 首页路由 ViewController 工厂,供 `UIKitAppNavigation` 复用。
|
||||
enum HomeRouteViewControllerFactory {
|
||||
static func make(for route: HomeRoute) -> UIViewController {
|
||||
AppRouteViewControllerFactory.makeViewController(for: route, services: AppServices.shared)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user