Files
e-party-iOS/yana/MVVM/SplashV2.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

64 lines
2.4 KiB
Swift

import SwiftUI
struct SplashV2: View {
@State private var showLogin = false
@State private var showMain = false
@State private var hasCheckedAuth = false
private let splashTransitionAnimation: Animation = .easeInOut(duration: 0.25)
var body: some View {
Group {
if showMain {
MainPage(onLogout: {
showMain = false
showLogin = true
})
} else if showLogin {
NavigationStack {
LoginPage(onLoginSuccess: {
showMain = true
})
}
} else {
ZStack {
LoginBackgroundView()
VStack(spacing: 32) {
Spacer().frame(height: 200)
Image("logo")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 100, height: 100)
Text(LocalizedString("splash.title", comment: "E-Parti"))
.font(.system(size: 40, weight: .regular))
.foregroundColor(.white)
Spacer()
}
}
.onAppear {
guard !hasCheckedAuth else { return }
hasCheckedAuth = true
Task { @MainActor in
debugInfoSync("🚀 SplashV2 启动,开始检查登录缓存")
let status = await UserInfoManager.checkAuthenticationStatus()
if status.canAutoLogin {
debugInfoSync("✅ 检测到可自动登录,尝试预取用户信息")
_ = await UserInfoManager.autoFetchUserInfoOnAppLaunch(apiService: LiveAPIService())
withAnimation(splashTransitionAnimation) {
showMain = true
}
} else {
debugInfoSync("🔑 未登录或缓存无效,进入登录页")
withAnimation(splashTransitionAnimation) {
showLogin = true
}
}
}
}
}
}
.ignoresSafeArea()
}
}