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

54 lines
1.3 KiB
Swift

import SwiftUI
@main
struct RocketChat_Watch_AppApp: App {
private let store: DependencyStore
@StateObject var router: RocketChatAppRouter
init() {
let store = DependencyStore()
self.store = store
self._router = StateObject(wrappedValue: RocketChatAppRouter(database: store.database))
}
@ViewBuilder
private var serverListView: some View {
ServerListView(
dependencies: .init(
connection: store.connection,
database: store.database,
router: router
)
)
}
@ViewBuilder
private func roomListView(for server: Server) -> some View {
RoomListView(
dependencies: .init(
client: store.client(for: server),
database: store.database(for: server),
router: router,
server: server
)
)
}
var body: some Scene {
WindowGroup {
NavigationStack {
switch router.route {
case .roomList(let server):
roomListView(for: server)
.environment(\.managedObjectContext, store.database(for: server).viewContext)
case .serverList:
serverListView
.environment(\.managedObjectContext, store.database.viewContext)
}
}
}
}
}