71 lines
1.7 KiB
Swift
71 lines
1.7 KiB
Swift
import SwiftUI
|
|
|
|
@main
|
|
struct RocketChat_Watch_AppApp: App {
|
|
private let store: DependencyStore
|
|
|
|
@WKExtensionDelegateAdaptor private var delegate: ExtensionDelegate
|
|
|
|
@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(
|
|
client: store.client(for: server),
|
|
database: store.database(for: server),
|
|
messagesLoader: MessagesLoader(
|
|
client: store.client(for: server),
|
|
database: store.database(for: server),
|
|
serversDB: store.database
|
|
),
|
|
messageSender: MessageSender(
|
|
client: store.client(for: server),
|
|
database: store.database(for: server),
|
|
server: server
|
|
),
|
|
roomsLoader: RoomsLoader(
|
|
client: store.client(for: server),
|
|
database: store.database(for: server),
|
|
serversDB: store.database
|
|
),
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
|
|
WKNotificationScene(controller: NotificationController.self, category: "MESSAGE")
|
|
}
|
|
}
|