- 添加API客户端、加密存储和provision/token激活逻辑 - WebSocket改用Bearer令牌认证,移除REGISTER请求 - 设备ID改为服务端下发,支持令牌刷新和强制下线处理 - 新增deviceSecret加密存储和accessToken自动刷新 - 更新设备ID获取方式为出厂SN,添加安全存储依赖
31 lines
1.0 KiB
Swift
31 lines
1.0 KiB
Swift
import SwiftUI
|
||
|
||
/// 主界面:未连接时显示设置面板,连接成功后显示远程控制面板。
|
||
struct ContentView: View {
|
||
@StateObject private var viewModel = ControllerViewModel()
|
||
|
||
var body: some View {
|
||
ZStack {
|
||
if !viewModel.isLoggedIn {
|
||
LoginView(viewModel: viewModel)
|
||
} else if viewModel.isControlling {
|
||
ControlPanelView(viewModel: viewModel)
|
||
} else {
|
||
SetupPanelView(viewModel: viewModel)
|
||
}
|
||
}
|
||
.sheet(isPresented: $viewModel.showAuthSheet) {
|
||
AuthSheetView { authType, authValue in
|
||
viewModel.connect(authType: authType, authValue: authValue)
|
||
}
|
||
}
|
||
.alert("提示", isPresented: Binding(
|
||
get: { viewModel.alertMessage != nil },
|
||
set: { if !$0 { viewModel.alertMessage = nil } })) {
|
||
Button("确定", role: .cancel) { viewModel.alertMessage = nil }
|
||
} message: {
|
||
Text(viewModel.alertMessage ?? "")
|
||
}
|
||
}
|
||
}
|