54 lines
1.3 KiB
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|