Remove the CommonSettingsProtocol and use UserSession to carry multiple dependencies. (#6302)

* Remove the CommonSettingsProtocol.

* Replace multiple dependencies with the UserSession when it carries them.
This commit is contained in:
Doug
2026-10-09 10:20:00 +01:00
committed by GitHub
parent a3d170534c
commit 65bab49f39
75 changed files with 212 additions and 369 deletions
@@ -10,10 +10,8 @@ import SwiftUI
struct SearchScreenCoordinatorParameters {
let roomSummaryProvider: RoomSummaryProviderProtocol
let clientProxy: ClientProxyProtocol
let mediaProvider: MediaProviderProtocol
let userSession: UserSessionProtocol
let userIndicatorController: UserIndicatorControllerProtocol
let userSettings: UserSettings
}
enum SearchScreenCoordinatorAction {
@@ -33,10 +31,8 @@ final class SearchScreenCoordinator: CoordinatorProtocol {
init(parameters: SearchScreenCoordinatorParameters) {
viewModel = SearchScreenViewModel(roomSummaryProvider: parameters.roomSummaryProvider,
clientProxy: parameters.clientProxy,
mediaProvider: parameters.mediaProvider,
userIndicatorController: parameters.userIndicatorController,
userSettings: parameters.userSettings)
userSession: parameters.userSession,
userIndicatorController: parameters.userIndicatorController)
}
func start() {
@@ -33,20 +33,18 @@ class SearchScreenViewModel: SearchScreenViewModelType, SearchScreenViewModelPro
}
init(roomSummaryProvider: RoomSummaryProviderProtocol,
clientProxy: ClientProxyProtocol,
mediaProvider: MediaProviderProtocol,
userSession: UserSessionProtocol,
userIndicatorController: UserIndicatorControllerProtocol,
userSettings: UserSettings,
initialSearchQuery: String = "",
initialSearchMode: SearchScreenMode = .rooms) {
self.roomSummaryProvider = roomSummaryProvider
self.clientProxy = clientProxy
searchService = clientProxy.searchService
clientProxy = userSession.clientProxy
searchService = userSession.clientProxy.searchService
self.userIndicatorController = userIndicatorController
self.userSettings = userSettings
userSettings = userSession.userSettings
super.init(initialViewState: SearchScreenViewState(bindings: .init(searchQuery: initialSearchQuery, searchMode: initialSearchMode)),
mediaProvider: mediaProvider)
mediaProvider: userSession.mediaProvider)
roomSummaryProvider.roomListPublisher
.receive(on: DispatchQueue.main)
@@ -626,46 +626,35 @@ private final class KeyNavigatingSearchTextField: UISearchTextField {
struct SearchScreen_Previews: PreviewProvider, TestablePreview {
static let emptyViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))),
clientProxy: makeClientProxy(),
mediaProvider: MediaProviderMock(.init()),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: UserSettings.mock())
userSession: UserSessionMock(.init(clientProxy: makeClientProxy())),
userIndicatorController: UserIndicatorControllerMock())
static let noResultsViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))),
clientProxy: makeClientProxy(),
mediaProvider: MediaProviderMock(.init()),
userSession: UserSessionMock(.init(clientProxy: makeClientProxy())),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: UserSettings.mock(),
initialSearchQuery: "John Doe")
static let roomsViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
clientProxy: makeClientProxy(),
mediaProvider: MediaProviderMock(.init()),
userSession: UserSessionMock(.init(clientProxy: makeClientProxy())),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: UserSettings.mock(),
initialSearchQuery: "Foundation")
static let messagesViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))),
clientProxy: makeClientProxy(searchService: makeSearchService(results: .mockResults)),
mediaProvider: MediaProviderMock(.init()),
userSession: UserSessionMock(.init(clientProxy: makeClientProxy(searchService: makeSearchService(results: .mockResults)))),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: UserSettings.mock(),
initialSearchQuery: "Foundation",
initialSearchMode: .messages)
static let loadingMessagesViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))),
clientProxy: makeClientProxy(searchService: makeSearchService(paginationState: .loading)),
mediaProvider: MediaProviderMock(.init()),
userSession: UserSessionMock(.init(clientProxy: makeClientProxy(searchService: makeSearchService(paginationState: .loading)))),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: UserSettings.mock(),
initialSearchQuery: "Foundation",
initialSearchMode: .messages)
static let breadcrumbsViewModel = SearchScreenViewModel(roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded([]))),
clientProxy: makeClientProxy(),
mediaProvider: MediaProviderMock(.init()),
userIndicatorController: UserIndicatorControllerMock(),
userSettings: makeUserSettings(breadcrumbs: [.room(roomID: "!room1:matrix.org"),
.query("Bob"),
.room(roomID: "!room5:matrix.org"),
.query("Element HR"),
.query("Alice")]))
userSession: UserSessionMock(.init(clientProxy: makeClientProxy(),
userSettings: makeUserSettings(breadcrumbs: [.room(roomID: "!room1:matrix.org"),
.query("Bob"),
.room(roomID: "!room5:matrix.org"),
.query("Element HR"),
.query("Alice")]))),
userIndicatorController: UserIndicatorControllerMock())
static var previews: some View {
ElementNavigationStack {