mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-11 13:59:13 +00:00
Small recently visited room tweaks following PR review
This commit is contained in:
parent
5221e9fb5d
commit
d996c69a66
@ -1010,11 +1010,11 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: userSession.clientProxy,
|
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: userSession.clientProxy,
|
||||||
|
selectedUsers: .init(selectedUsersSubject),
|
||||||
|
roomType: .room(roomProxy: roomProxy),
|
||||||
mediaProvider: userSession.mediaProvider,
|
mediaProvider: userSession.mediaProvider,
|
||||||
userDiscoveryService: UserDiscoveryService(clientProxy: userSession.clientProxy),
|
userDiscoveryService: UserDiscoveryService(clientProxy: userSession.clientProxy),
|
||||||
userIndicatorController: userIndicatorController,
|
userIndicatorController: userIndicatorController)
|
||||||
selectedUsers: .init(selectedUsersSubject),
|
|
||||||
roomType: .room(roomProxy: roomProxy))
|
|
||||||
|
|
||||||
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
||||||
stackCoordinator.setRootCoordinator(coordinator)
|
stackCoordinator.setRootCoordinator(coordinator)
|
||||||
|
@ -19,12 +19,11 @@ import SwiftUI
|
|||||||
|
|
||||||
struct InviteUsersScreenCoordinatorParameters {
|
struct InviteUsersScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let clientProxy: ClientProxyProtocol
|
||||||
|
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
|
||||||
|
let roomType: InviteUsersScreenRoomType
|
||||||
let mediaProvider: MediaProviderProtocol
|
let mediaProvider: MediaProviderProtocol
|
||||||
let userDiscoveryService: UserDiscoveryServiceProtocol
|
let userDiscoveryService: UserDiscoveryServiceProtocol
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
|
|
||||||
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
|
|
||||||
let roomType: InviteUsersScreenRoomType
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum InviteUsersScreenCoordinatorAction {
|
enum InviteUsersScreenCoordinatorAction {
|
||||||
@ -45,11 +44,11 @@ final class InviteUsersScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
init(parameters: InviteUsersScreenCoordinatorParameters) {
|
init(parameters: InviteUsersScreenCoordinatorParameters) {
|
||||||
viewModel = InviteUsersScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = InviteUsersScreenViewModel(clientProxy: parameters.clientProxy,
|
||||||
|
selectedUsers: parameters.selectedUsers,
|
||||||
|
roomType: parameters.roomType,
|
||||||
mediaProvider: parameters.mediaProvider,
|
mediaProvider: parameters.mediaProvider,
|
||||||
userDiscoveryService: parameters.userDiscoveryService,
|
userDiscoveryService: parameters.userDiscoveryService,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
selectedUsers: parameters.selectedUsers,
|
|
||||||
roomType: parameters.roomType)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
@ -34,17 +34,16 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(clientProxy: ClientProxyProtocol,
|
||||||
|
selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>,
|
||||||
|
roomType: InviteUsersScreenRoomType,
|
||||||
mediaProvider: MediaProviderProtocol,
|
mediaProvider: MediaProviderProtocol,
|
||||||
userDiscoveryService: UserDiscoveryServiceProtocol,
|
userDiscoveryService: UserDiscoveryServiceProtocol,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>,
|
|
||||||
roomType: InviteUsersScreenRoomType) {
|
|
||||||
self.clientProxy = clientProxy
|
self.clientProxy = clientProxy
|
||||||
|
self.roomType = roomType
|
||||||
self.userDiscoveryService = userDiscoveryService
|
self.userDiscoveryService = userDiscoveryService
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
self.roomType = roomType
|
|
||||||
|
|
||||||
super.init(initialViewState: InviteUsersScreenViewState(selectedUsers: selectedUsers.value, isCreatingRoom: roomType.isCreatingRoom), imageProvider: mediaProvider)
|
super.init(initialViewState: InviteUsersScreenViewState(selectedUsers: selectedUsers.value, isCreatingRoom: roomType.isCreatingRoom), imageProvider: mediaProvider)
|
||||||
|
|
||||||
setupSubscriptions(selectedUsers: selectedUsers)
|
setupSubscriptions(selectedUsers: selectedUsers)
|
||||||
|
@ -161,11 +161,11 @@ struct InviteUsersScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let userDiscoveryService = UserDiscoveryServiceMock()
|
let userDiscoveryService = UserDiscoveryServiceMock()
|
||||||
userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice])
|
userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice])
|
||||||
return InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
return InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
||||||
|
selectedUsers: .init([]),
|
||||||
|
roomType: .draft,
|
||||||
mediaProvider: MockMediaProvider(),
|
mediaProvider: MockMediaProvider(),
|
||||||
userDiscoveryService: userDiscoveryService,
|
userDiscoveryService: userDiscoveryService,
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
selectedUsers: .init([]),
|
|
||||||
roomType: .draft)
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
@ -85,11 +85,11 @@ final class StartChatScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
private func presentInviteUsersScreen() {
|
private func presentInviteUsersScreen() {
|
||||||
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: parameters.userSession.clientProxy,
|
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: parameters.userSession.clientProxy,
|
||||||
|
selectedUsers: selectedUsersPublisher,
|
||||||
|
roomType: .draft,
|
||||||
mediaProvider: parameters.userSession.mediaProvider,
|
mediaProvider: parameters.userSession.mediaProvider,
|
||||||
userDiscoveryService: parameters.userDiscoveryService,
|
userDiscoveryService: parameters.userDiscoveryService,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
selectedUsers: selectedUsersPublisher,
|
|
||||||
roomType: .draft)
|
|
||||||
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
||||||
coordinator.actions.sink { [weak self] action in
|
coordinator.actions.sink { [weak self] action in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
|
@ -16,8 +16,10 @@
|
|||||||
|
|
||||||
import Combine
|
import Combine
|
||||||
import CryptoKit
|
import CryptoKit
|
||||||
|
import Foundation
|
||||||
|
import OrderedCollections
|
||||||
|
|
||||||
import MatrixRustSDK
|
import MatrixRustSDK
|
||||||
import SwiftUI
|
|
||||||
|
|
||||||
class ClientProxy: ClientProxyProtocol {
|
class ClientProxy: ClientProxyProtocol {
|
||||||
private let client: ClientProtocol
|
private let client: ClientProtocol
|
||||||
@ -625,7 +627,7 @@ class ClientProxy: ClientProxyProtocol {
|
|||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
var users = [UserProfileProxy]()
|
var users: OrderedSet<UserProfileProxy> = []
|
||||||
|
|
||||||
for roomID in roomIdentifiers {
|
for roomID in roomIdentifiers {
|
||||||
guard let room = await roomForIdentifier(roomID),
|
guard let room = await roomForIdentifier(roomID),
|
||||||
@ -639,12 +641,12 @@ class ClientProxy: ClientProxyProtocol {
|
|||||||
|
|
||||||
// Return early to avoid unnecessary work
|
// Return early to avoid unnecessary work
|
||||||
if users.count >= maxResultsToReturn {
|
if users.count >= maxResultsToReturn {
|
||||||
return users
|
return users.elements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return users
|
return users.elements
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import MatrixRustSDK
|
import MatrixRustSDK
|
||||||
|
|
||||||
struct UserProfileProxy: Equatable {
|
struct UserProfileProxy: Equatable, Hashable {
|
||||||
let userID: String
|
let userID: String
|
||||||
let displayName: String?
|
let displayName: String?
|
||||||
let avatarURL: URL?
|
let avatarURL: URL?
|
||||||
|
@ -99,11 +99,11 @@ class InviteUsersScreenViewModelTests: XCTestCase {
|
|||||||
userDiscoveryService.searchProfilesWithReturnValue = .success([])
|
userDiscoveryService.searchProfilesWithReturnValue = .success([])
|
||||||
usersSubject.send([])
|
usersSubject.send([])
|
||||||
let viewModel = InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
let viewModel = InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
||||||
|
selectedUsers: usersSubject.asCurrentValuePublisher(),
|
||||||
|
roomType: roomType,
|
||||||
mediaProvider: MockMediaProvider(),
|
mediaProvider: MockMediaProvider(),
|
||||||
userDiscoveryService: userDiscoveryService,
|
userDiscoveryService: userDiscoveryService,
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
selectedUsers: usersSubject.asCurrentValuePublisher(),
|
|
||||||
roomType: roomType)
|
|
||||||
viewModel.state.usersSection = .init(type: .suggestions, users: [.mockAlice, .mockBob, .mockCharlie])
|
viewModel.state.usersSection = .init(type: .suggestions, users: [.mockAlice, .mockBob, .mockCharlie])
|
||||||
self.viewModel = viewModel
|
self.viewModel = viewModel
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user