Rocket.Chat.ReactNative/ios/RocketChat Watch App/AppView.swift

41 lines
1020 B
Swift

import SwiftUI
struct AppView: View {
@Dependency private var database: Database
@Dependency private var serversDB: ServersDatabase
@Storage(.currentServer) private var currentURL: URL?
@StateObject private var router: AppRouter
init(router: AppRouter) {
_router = StateObject(wrappedValue: router)
}
var body: some View {
NavigationStack {
switch router.route {
case .roomList(let server):
RoomListView(server: server)
.environment(\.managedObjectContext, database.viewContext)
case .serverList:
ServerListView(viewModel: ServerListViewModel())
.environment(\.managedObjectContext, serversDB.viewContext)
}
}
.onAppear {
loadRoute()
}
}
private func loadRoute() {
if let currentURL, let server = serversDB.server(url: currentURL) {
router.route(to: .roomList(server))
} else if serversDB.servers().count == 1, let server = serversDB.servers().first {
router.route(to: .roomList(server))
} else {
router.route(to: .serverList)
}
}
}