Bundle ClientProxy & MediaProvider injections together in UserSession.

This commit is contained in:
Doug
2025-08-27 17:25:28 +01:00
committed by Doug
parent b34816e159
commit f67f826bb7
74 changed files with 315 additions and 499 deletions
@@ -9,9 +9,8 @@ import Combine
import SwiftUI
struct RoomSelectionScreenCoordinatorParameters {
let clientProxy: ClientProxyProtocol
let userSession: UserSessionProtocol
let roomSummaryProvider: RoomSummaryProviderProtocol
let mediaProvider: MediaProviderProtocol
}
enum RoomSelectionScreenCoordinatorAction {
@@ -29,9 +28,8 @@ final class RoomSelectionScreenCoordinator: CoordinatorProtocol {
}
init(parameters: RoomSelectionScreenCoordinatorParameters) {
viewModel = RoomSelectionScreenViewModel(clientProxy: parameters.clientProxy,
roomSummaryProvider: parameters.roomSummaryProvider,
mediaProvider: parameters.mediaProvider)
viewModel = RoomSelectionScreenViewModel(userSession: parameters.userSession,
roomSummaryProvider: parameters.roomSummaryProvider)
}
func start() {
@@ -20,13 +20,12 @@ class RoomSelectionScreenViewModel: RoomSelectionScreenViewModelType, RoomSelect
actionsSubject.eraseToAnyPublisher()
}
init(clientProxy: ClientProxyProtocol,
roomSummaryProvider: RoomSummaryProviderProtocol,
mediaProvider: MediaProviderProtocol) {
self.clientProxy = clientProxy
init(userSession: UserSessionProtocol,
roomSummaryProvider: RoomSummaryProviderProtocol) {
clientProxy = userSession.clientProxy
self.roomSummaryProvider = roomSummaryProvider
super.init(initialViewState: RoomSelectionScreenViewState(), mediaProvider: mediaProvider)
super.init(initialViewState: RoomSelectionScreenViewState(), mediaProvider: userSession.mediaProvider)
roomSummaryProvider.roomListPublisher
.receive(on: DispatchQueue.main)
@@ -94,9 +94,8 @@ private struct RoomSelectionListRow: View {
struct RoomSelectionScreen_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
let viewModel = RoomSelectionScreenViewModel(clientProxy: ClientProxyMock(.init()),
roomSummaryProvider: summaryProvider,
mediaProvider: MediaProviderMock(configuration: .init()))
let viewModel = RoomSelectionScreenViewModel(userSession: UserSessionMock(.init()),
roomSummaryProvider: summaryProvider)
NavigationStack {
RoomSelectionScreen(context: viewModel.context)