punchnet-macos/punchnet/Views/RootView.swift
2026-03-23 14:58:32 +08:00

61 lines
1.7 KiB
Swift

//
// RootView.swift
// punchnet
//
// Created by on 2026/1/19.
//
import SwiftUI
struct RootView: View {
@Environment(UserContext.self) var userContext
@State private var updateManager = AppUpdateManager.shared
var body: some View {
ZStack {
//
Group {
if userContext.isLogined {
NetworkView()
} else {
LoginView()
}
}
//
if updateManager.showUpdateOverlay, let info = updateManager.updateInfo {
//
Color.black.opacity(0.4)
.ignoresSafeArea()
.onTapGesture {
if !info.forceUpdate {
updateManager.showUpdateOverlay = false
}
}
//
AppUpdateView(info: info) {
updateManager.showUpdateOverlay = false
}
.clipShape(RoundedRectangle(cornerRadius: 16))
.shadow(color: .black.opacity(0.3), radius: 20)
.transition(.asymmetric(
insertion: .scale(scale: 0.9).combined(with: .opacity),
removal: .opacity
))
}
}
.animation(.spring(duration: 0.4), value: updateManager.showUpdateOverlay)
.task {
//
let checkUpdateResult = await updateManager.checkUpdate(isManual: false)
NSLog("[RootView] checkUpdateResult: \(checkUpdateResult)")
}
}
}
#Preview {
RootView()
}