Rocket.Chat.ReactNative/ios/RocketChat Watch App/Views/RoomListView.swift

39 lines
1.2 KiB
Swift

import SwiftUI
struct RoomListView: View {
@StateObject private var viewModel: RoomListViewModel
@FetchRequest<Room> private var rooms: FetchedResults<Room>
init(dependencies: RoomListViewModel.Dependencies) {
_viewModel = StateObject(wrappedValue: RoomListViewModel(dependencies: dependencies))
_rooms = FetchRequest(fetchRequest: dependencies.server.roomsRequest)
}
var body: some View {
List {
ForEach(rooms) { room in
NavigationLink(value: room) {
RoomView(viewModel: viewModel.roomViewModel(for: room))
}
}
}
.onAppear {
viewModel.loadRooms()
}
.navigationTitle("Rooms")
.navigationBarTitleDisplayMode(.inline)
.navigationDestination(for: Room.self) { room in
MessageListView(viewModel: viewModel.messageListViewModel(for: room))
.environment(\.managedObjectContext, viewModel.viewContext)
}
.toolbar {
ToolbarItem(placement: .automatic) {
Button("Servers") {
viewModel.logout()
}
}
}
}
}