Files
e-party-iOS/yana/MVVM/ViewModel/MainViewModel.swift
edwinQQQ 8b4eb9cb7e feat: 更新API相关逻辑及视图结构
- 在Info.plist中新增API签名密钥配置。
- 将Splash视图替换为SplashV2,优化启动逻辑和用户体验。
- 更新API请求中的User-Agent逻辑,使用UserAgentProvider提供的动态值。
- 在APILogger中添加敏感信息脱敏处理,增强安全性。
- 新增CreateFeedPage视图,支持用户发布动态功能。
- 更新MainPage和Splash视图的导航逻辑,整合统一的AppRoute管理。
- 移除冗余的SplashFeature视图,提升代码整洁性和可维护性。
2025-09-17 16:37:21 +08:00

65 lines
1.5 KiB
Swift

import SwiftUI
// MARK: - Main ViewModel
@MainActor
class MainViewModel: ObservableObject {
// MARK: - Published Properties
@Published var selectedTab: Tab = .feed
@Published var isLoggedOut: Bool = false
@Published var navigationPath = NavigationPath()
// MARK: - Callbacks
var onLogout: (() -> Void)?
var onAddButtonTapped: (() -> Void)?
// MARK: - Enums
enum Tab: String, CaseIterable {
case feed = "feed"
case me = "me"
var title: String {
switch self {
case .feed:
return "Feed"
case .me:
return "Me"
}
}
var iconName: String {
switch self {
case .feed:
return "list.bullet"
case .me:
return "person.circle"
}
}
}
// MARK: - Public Methods
func onAppear() {
debugInfoSync("🚀 MainView onAppear")
debugInfoSync(" 当前selectedTab: \(selectedTab)")
}
func onTabChanged(_ newTab: Tab) {
selectedTab = newTab
debugInfoSync("🔄 MainView selectedTab changed: \(newTab)")
}
func onLogoutTapped() {
isLoggedOut = true
onLogout?()
}
func onTopRightButtonTapped() {
switch selectedTab {
case .feed:
navigationPath.append(AppRoute.publish)
case .me:
navigationPath.append(AppRoute.setting)
}
}
}