
- 在Info.plist中新增API签名密钥配置。 - 将Splash视图替换为SplashV2,优化启动逻辑和用户体验。 - 更新API请求中的User-Agent逻辑,使用UserAgentProvider提供的动态值。 - 在APILogger中添加敏感信息脱敏处理,增强安全性。 - 新增CreateFeedPage视图,支持用户发布动态功能。 - 更新MainPage和Splash视图的导航逻辑,整合统一的AppRoute管理。 - 移除冗余的SplashFeature视图,提升代码整洁性和可维护性。
65 lines
1.5 KiB
Swift
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)
|
|
}
|
|
}
|
|
}
|