Address comments, show unencrypted rooms,

retain viewModel and services in ScreenSates so you can interact with Previews after the first state.
This commit is contained in:
David Langley
2021-09-23 23:57:54 +01:00
parent bd4d9974a8
commit d560e513d4
16 changed files with 185 additions and 114 deletions
@@ -36,17 +36,17 @@ enum MockTemplateRoomChatScreenState: MockScreenState, CaseIterable {
}
/// Generate the view struct for the screen state.
var screenView: AnyView {
var screenView: ([Any], AnyView) {
let service: MockTemplateRoomChatService
switch self {
case .noMessages:
service = MockTemplateRoomChatService(messages: [])
service.simulateUpdate(initializationStatus: .initialized)
case .messages:
service = MockTemplateRoomChatService()
service.simulateUpdate(initializationStatus: .initialized)
service = MockTemplateRoomChatService()
service.simulateUpdate(initializationStatus: .initialized)
case .initializingRoom:
service = MockTemplateRoomChatService()
service = MockTemplateRoomChatService()
case .failedToInitializeRoom:
service = MockTemplateRoomChatService()
service.simulateUpdate(initializationStatus: .failedToInitialize)
@@ -54,8 +54,11 @@ enum MockTemplateRoomChatScreenState: MockScreenState, CaseIterable {
let viewModel = TemplateRoomChatViewModel(templateRoomChatService: service)
// can simulate service and viewModel actions here if needs be.
return AnyView(TemplateRoomChat(viewModel: viewModel.context)
.addDependency(MockAvatarService.example))
return (
[service, viewModel],
AnyView(TemplateRoomChat(viewModel: viewModel.context)
.addDependency(MockAvatarService.example))
)
}
}
@@ -46,7 +46,8 @@ class MockTemplateRoomChatService: TemplateRoomChatServiceProtocol {
func simulateUpdate(initializationStatus: TemplateRoomChatRoomInitializationStatus) {
self.roomInitializationStatus.value = initializationStatus
}
func simulateUpdate(messages: [TemplateRoomChatMessage]) {
self.chatMessagesSubject.send(messages)
self.chatMessagesSubject.value = messages
}
}