mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-08 05:47:11 +00:00
Bundle ClientProxy & MediaProvider injections together in UserSession.
This commit is contained in:
@@ -723,8 +723,7 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
// MARK: Room Directory Search
|
// MARK: Room Directory Search
|
||||||
|
|
||||||
private func presentRoomDirectorySearch() {
|
private func presentRoomDirectorySearch() {
|
||||||
let coordinator = RoomDirectorySearchScreenCoordinator(parameters: .init(clientProxy: userSession.clientProxy,
|
let coordinator = RoomDirectorySearchScreenCoordinator(parameters: .init(userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController))
|
userIndicatorController: flowParameters.userIndicatorController))
|
||||||
|
|
||||||
coordinator.actionsPublisher.sink { [weak self] action in
|
coordinator.actionsPublisher.sink { [weak self] action in
|
||||||
@@ -758,8 +757,7 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let parameters = UserProfileScreenCoordinatorParameters(userID: userID,
|
let parameters = UserProfileScreenCoordinatorParameters(userID: userID,
|
||||||
isPresentedModally: true,
|
isPresentedModally: true,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
analytics: flowParameters.analytics)
|
analytics: flowParameters.analytics)
|
||||||
let coordinator = UserProfileScreenCoordinator(parameters: parameters)
|
let coordinator = UserProfileScreenCoordinator(parameters: parameters)
|
||||||
@@ -791,9 +789,8 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let coordinator = RoomSelectionScreenCoordinator(parameters: .init(clientProxy: userSession.clientProxy,
|
let coordinator = RoomSelectionScreenCoordinator(parameters: .init(userSession: userSession,
|
||||||
roomSummaryProvider: roomSummaryProvider,
|
roomSummaryProvider: roomSummaryProvider))
|
||||||
mediaProvider: userSession.mediaProvider))
|
|
||||||
|
|
||||||
coordinator.actionsPublisher.sink { [weak self] action in
|
coordinator.actionsPublisher.sink { [weak self] action in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class MediaEventsTimelineFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let parameters = MediaEventsTimelineScreenCoordinatorParameters(roomProxy: roomProxy,
|
let parameters = MediaEventsTimelineScreenCoordinatorParameters(roomProxy: roomProxy,
|
||||||
mediaTimelineController: mediaTimelineController,
|
mediaTimelineController: mediaTimelineController,
|
||||||
filesTimelineController: filesTimelineController,
|
filesTimelineController: filesTimelineController,
|
||||||
mediaProvider: userSession.mediaProvider,
|
userSession: userSession,
|
||||||
mediaPlayerProvider: MediaPlayerProvider(),
|
mediaPlayerProvider: MediaPlayerProvider(),
|
||||||
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
||||||
appMediator: flowParameters.appMediator,
|
appMediator: flowParameters.appMediator,
|
||||||
@@ -85,8 +85,7 @@ class MediaEventsTimelineFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
analytics: flowParameters.analytics,
|
analytics: flowParameters.analytics,
|
||||||
emojiProvider: flowParameters.emojiProvider,
|
emojiProvider: flowParameters.emojiProvider,
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
timelineControllerFactory: flowParameters.timelineControllerFactory,
|
timelineControllerFactory: flowParameters.timelineControllerFactory)
|
||||||
clientProxy: userSession.clientProxy)
|
|
||||||
|
|
||||||
let coordinator = MediaEventsTimelineScreenCoordinator(parameters: parameters)
|
let coordinator = MediaEventsTimelineScreenCoordinator(parameters: parameters)
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class PinnedEventsTimelineFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
let coordinator = PinnedEventsTimelineScreenCoordinator(parameters: .init(roomProxy: roomProxy,
|
let coordinator = PinnedEventsTimelineScreenCoordinator(parameters: .init(roomProxy: roomProxy,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: userSession.mediaProvider,
|
userSession: userSession,
|
||||||
mediaPlayerProvider: MediaPlayerProvider(),
|
mediaPlayerProvider: MediaPlayerProvider(),
|
||||||
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
||||||
appMediator: flowParameters.appMediator,
|
appMediator: flowParameters.appMediator,
|
||||||
@@ -71,7 +71,6 @@ class PinnedEventsTimelineFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
analytics: flowParameters.analytics,
|
analytics: flowParameters.analytics,
|
||||||
emojiProvider: flowParameters.emojiProvider,
|
emojiProvider: flowParameters.emojiProvider,
|
||||||
timelineControllerFactory: flowParameters.timelineControllerFactory,
|
timelineControllerFactory: flowParameters.timelineControllerFactory,
|
||||||
clientProxy: userSession.clientProxy,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController))
|
userIndicatorController: flowParameters.userIndicatorController))
|
||||||
|
|
||||||
coordinator.actions
|
coordinator.actions
|
||||||
@@ -127,9 +126,8 @@ class PinnedEventsTimelineFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let parameters = MessageForwardingScreenCoordinatorParameters(forwardingItem: forwardingItem,
|
let parameters = MessageForwardingScreenCoordinatorParameters(forwardingItem: forwardingItem,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
roomSummaryProvider: roomSummaryProvider,
|
roomSummaryProvider: roomSummaryProvider,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController)
|
userIndicatorController: flowParameters.userIndicatorController)
|
||||||
let coordinator = MessageForwardingScreenCoordinator(parameters: parameters)
|
let coordinator = MessageForwardingScreenCoordinator(parameters: parameters)
|
||||||
|
|
||||||
|
|||||||
@@ -544,12 +544,11 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
timelineItemfactory: timelineItemFactory,
|
timelineItemfactory: timelineItemFactory,
|
||||||
threadRootEventID: nil)
|
threadRootEventID: nil)
|
||||||
|
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: userSession.clientProxy,
|
let parameters = RoomScreenCoordinatorParameters(userSession: userSession,
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
focussedEvent: presentationAction?.focusedEvent,
|
focussedEvent: presentationAction?.focusedEvent,
|
||||||
sharedText: presentationAction?.sharedText,
|
sharedText: presentationAction?.sharedText,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
mediaPlayerProvider: MediaPlayerProvider(),
|
mediaPlayerProvider: MediaPlayerProvider(),
|
||||||
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
||||||
emojiProvider: flowParameters.emojiProvider,
|
emojiProvider: flowParameters.emojiProvider,
|
||||||
@@ -644,10 +643,9 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
timelineItemfactory: timelineItemFactory,
|
timelineItemfactory: timelineItemFactory,
|
||||||
threadRootEventID: threadRootEventID)
|
threadRootEventID: threadRootEventID)
|
||||||
|
|
||||||
let coordinator = ThreadTimelineScreenCoordinator(parameters: .init(clientProxy: userSession.clientProxy,
|
let coordinator = ThreadTimelineScreenCoordinator(parameters: .init(userSession: userSession,
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
mediaPlayerProvider: MediaPlayerProvider(),
|
mediaPlayerProvider: MediaPlayerProvider(),
|
||||||
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
voiceMessageMediaManager: userSession.voiceMessageMediaManager,
|
||||||
emojiProvider: flowParameters.emojiProvider,
|
emojiProvider: flowParameters.emojiProvider,
|
||||||
@@ -703,8 +701,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
private func presentJoinRoomScreen(via: [String], animated: Bool) {
|
private func presentJoinRoomScreen(via: [String], animated: Bool) {
|
||||||
let coordinator = JoinRoomScreenCoordinator(parameters: .init(roomID: roomID,
|
let coordinator = JoinRoomScreenCoordinator(parameters: .init(roomID: roomID,
|
||||||
via: via,
|
via: via,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
appSettings: flowParameters.appSettings))
|
appSettings: flowParameters.appSettings))
|
||||||
|
|
||||||
@@ -777,8 +774,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
private func presentRoomDetails(isRoot: Bool, animated: Bool) async {
|
private func presentRoomDetails(isRoot: Bool, animated: Bool) async {
|
||||||
let params = RoomDetailsScreenCoordinatorParameters(roomProxy: roomProxy,
|
let params = RoomDetailsScreenCoordinatorParameters(roomProxy: roomProxy,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
analyticsService: flowParameters.analytics,
|
analyticsService: flowParameters.analytics,
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
notificationSettings: userSession.clientProxy.notificationSettings,
|
notificationSettings: userSession.clientProxy.notificationSettings,
|
||||||
@@ -842,9 +838,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func presentRoomMembersList() {
|
private func presentRoomMembersList() {
|
||||||
let parameters = RoomMembersListScreenCoordinatorParameters(clientProxy: userSession.clientProxy,
|
let parameters = RoomMembersListScreenCoordinatorParameters(userSession: userSession,
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
analytics: flowParameters.analytics)
|
analytics: flowParameters.analytics)
|
||||||
let coordinator = RoomMembersListScreenCoordinator(parameters: parameters)
|
let coordinator = RoomMembersListScreenCoordinator(parameters: parameters)
|
||||||
@@ -882,8 +877,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let roomDetailsEditParameters = RoomDetailsEditScreenCoordinatorParameters(roomProxy: roomProxy,
|
let roomDetailsEditParameters = RoomDetailsEditScreenCoordinatorParameters(roomProxy: roomProxy,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: flowParameters.appSettings),
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: flowParameters.appSettings),
|
||||||
navigationStackCoordinator: stackCoordinator,
|
navigationStackCoordinator: stackCoordinator,
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
@@ -1213,8 +1207,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
private func presentRoomMemberDetails(userID: String) {
|
private func presentRoomMemberDetails(userID: String) {
|
||||||
let params = RoomMemberDetailsScreenCoordinatorParameters(userID: userID,
|
let params = RoomMemberDetailsScreenCoordinatorParameters(userID: userID,
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
analytics: flowParameters.analytics)
|
analytics: flowParameters.analytics)
|
||||||
let coordinator = RoomMemberDetailsScreenCoordinator(parameters: params)
|
let coordinator = RoomMemberDetailsScreenCoordinator(parameters: params)
|
||||||
@@ -1242,8 +1235,7 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
private func replaceRoomMemberDetailsWithUserProfile(userID: String) {
|
private func replaceRoomMemberDetailsWithUserProfile(userID: String) {
|
||||||
let parameters = UserProfileScreenCoordinatorParameters(userID: userID,
|
let parameters = UserProfileScreenCoordinatorParameters(userID: userID,
|
||||||
isPresentedModally: false,
|
isPresentedModally: false,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
analytics: flowParameters.analytics)
|
analytics: flowParameters.analytics)
|
||||||
let coordinator = UserProfileScreenCoordinator(parameters: parameters)
|
let coordinator = UserProfileScreenCoordinator(parameters: parameters)
|
||||||
@@ -1277,9 +1269,8 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
|
|
||||||
let parameters = MessageForwardingScreenCoordinatorParameters(forwardingItem: forwardingItem,
|
let parameters = MessageForwardingScreenCoordinatorParameters(forwardingItem: forwardingItem,
|
||||||
clientProxy: userSession.clientProxy,
|
userSession: userSession,
|
||||||
roomSummaryProvider: roomSummaryProvider,
|
roomSummaryProvider: roomSummaryProvider,
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController)
|
userIndicatorController: flowParameters.userIndicatorController)
|
||||||
let coordinator = MessageForwardingScreenCoordinator(parameters: parameters)
|
let coordinator = MessageForwardingScreenCoordinator(parameters: parameters)
|
||||||
|
|
||||||
@@ -1349,10 +1340,9 @@ class RoomFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
let selectedUsersSubject: CurrentValueSubject<[UserProfileProxy], Never> = .init([])
|
let selectedUsersSubject: CurrentValueSubject<[UserProfileProxy], Never> = .init([])
|
||||||
|
|
||||||
let stackCoordinator = NavigationStackCoordinator()
|
let stackCoordinator = NavigationStackCoordinator()
|
||||||
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: userSession.clientProxy,
|
let inviteParameters = InviteUsersScreenCoordinatorParameters(userSession: userSession,
|
||||||
selectedUsers: .init(selectedUsersSubject),
|
selectedUsers: .init(selectedUsersSubject),
|
||||||
roomType: .room(roomProxy: roomProxy),
|
roomType: .room(roomProxy: roomProxy),
|
||||||
mediaProvider: userSession.mediaProvider,
|
|
||||||
userDiscoveryService: UserDiscoveryService(clientProxy: userSession.clientProxy),
|
userDiscoveryService: UserDiscoveryService(clientProxy: userSession.clientProxy),
|
||||||
userIndicatorController: flowParameters.userIndicatorController)
|
userIndicatorController: flowParameters.userIndicatorController)
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,7 @@ class SettingsFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
private func presentUserDetailsEditScreen() {
|
private func presentUserDetailsEditScreen() {
|
||||||
let coordinator = UserDetailsEditScreenCoordinator(parameters: .init(orientationManager: flowParameters.windowManager,
|
let coordinator = UserDetailsEditScreenCoordinator(parameters: .init(orientationManager: flowParameters.windowManager,
|
||||||
clientProxy: flowParameters.userSession.clientProxy,
|
userSession: flowParameters.userSession,
|
||||||
mediaProvider: flowParameters.userSession.mediaProvider,
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: flowParameters.appSettings),
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: flowParameters.appSettings),
|
||||||
navigationStackCoordinator: navigationStackCoordinator,
|
navigationStackCoordinator: navigationStackCoordinator,
|
||||||
userIndicatorController: flowParameters.userIndicatorController,
|
userIndicatorController: flowParameters.userIndicatorController,
|
||||||
@@ -175,8 +174,7 @@ class SettingsFlowCoordinator: FlowCoordinatorProtocol {
|
|||||||
|
|
||||||
private func presentBlockedUsersScreen() {
|
private func presentBlockedUsersScreen() {
|
||||||
let coordinator = BlockedUsersScreenCoordinator(parameters: .init(hideProfiles: flowParameters.appSettings.hideIgnoredUserProfiles,
|
let coordinator = BlockedUsersScreenCoordinator(parameters: .init(hideProfiles: flowParameters.appSettings.hideIgnoredUserProfiles,
|
||||||
clientProxy: flowParameters.userSession.clientProxy,
|
userSession: flowParameters.userSession,
|
||||||
mediaProvider: flowParameters.userSession.mediaProvider,
|
|
||||||
userIndicatorController: flowParameters.userIndicatorController))
|
userIndicatorController: flowParameters.userIndicatorController))
|
||||||
navigationStackCoordinator.push(coordinator)
|
navigationStackCoordinator.push(coordinator)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import Combine
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
struct UserSessionMockConfiguration {
|
struct UserSessionMockConfiguration {
|
||||||
let clientProxy: ClientProxyProtocol
|
var clientProxy: ClientProxyProtocol = ClientProxyMock(.init())
|
||||||
}
|
}
|
||||||
|
|
||||||
extension UserSessionMock {
|
extension UserSessionMock {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ extension UserSessionStoreMock {
|
|||||||
convenience init(configuration: Configuration) {
|
convenience init(configuration: Configuration) {
|
||||||
self.init()
|
self.init()
|
||||||
|
|
||||||
userSessionForSessionDirectoriesPassphraseReturnValue = .success(UserSessionMock(.init(clientProxy: ClientProxyMock(.init()))))
|
userSessionForSessionDirectoriesPassphraseReturnValue = .success(UserSessionMock(.init()))
|
||||||
clientSessionDelegate = KeychainControllerMock()
|
clientSessionDelegate = KeychainControllerMock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct BlockedUsersScreenCoordinatorParameters {
|
struct BlockedUsersScreenCoordinatorParameters {
|
||||||
let hideProfiles: Bool
|
let hideProfiles: Bool
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,8 +19,7 @@ final class BlockedUsersScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
init(parameters: BlockedUsersScreenCoordinatorParameters) {
|
init(parameters: BlockedUsersScreenCoordinatorParameters) {
|
||||||
viewModel = BlockedUsersScreenViewModel(hideProfiles: parameters.hideProfiles,
|
viewModel = BlockedUsersScreenViewModel(hideProfiles: parameters.hideProfiles,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,17 +16,16 @@ class BlockedUsersScreenViewModel: BlockedUsersScreenViewModelType, BlockedUsers
|
|||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
|
|
||||||
init(hideProfiles: Bool,
|
init(hideProfiles: Bool,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.hideProfiles = hideProfiles
|
self.hideProfiles = hideProfiles
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
let ignoredUsers = clientProxy.ignoredUsersPublisher.value?.map { UserProfileProxy(userID: $0) }
|
let ignoredUsers = clientProxy.ignoredUsersPublisher.value?.map { UserProfileProxy(userID: $0) }
|
||||||
|
|
||||||
super.init(initialViewState: BlockedUsersScreenViewState(blockedUsers: ignoredUsers ?? []),
|
super.init(initialViewState: BlockedUsersScreenViewState(blockedUsers: ignoredUsers ?? []),
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
showLoadingIndicator()
|
showLoadingIndicator()
|
||||||
|
|
||||||
|
|||||||
@@ -56,8 +56,7 @@ struct BlockedUsersScreen: View {
|
|||||||
|
|
||||||
struct BlockedUsersScreen_Previews: PreviewProvider, TestablePreview {
|
struct BlockedUsersScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = BlockedUsersScreenViewModel(hideProfiles: true,
|
static let viewModel = BlockedUsersScreenViewModel(hideProfiles: true,
|
||||||
clientProxy: ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID)),
|
userSession: UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID)))),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: UserIndicatorControllerMock())
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
|||||||
@@ -9,10 +9,9 @@ import Combine
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct InviteUsersScreenCoordinatorParameters {
|
struct InviteUsersScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
|
let selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>
|
||||||
let roomType: InviteUsersScreenRoomType
|
let roomType: InviteUsersScreenRoomType
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userDiscoveryService: UserDiscoveryServiceProtocol
|
let userDiscoveryService: UserDiscoveryServiceProtocol
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
}
|
}
|
||||||
@@ -34,10 +33,9 @@ final class InviteUsersScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: InviteUsersScreenCoordinatorParameters) {
|
init(parameters: InviteUsersScreenCoordinatorParameters) {
|
||||||
viewModel = InviteUsersScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = InviteUsersScreenViewModel(userSession: parameters.userSession,
|
||||||
selectedUsers: parameters.selectedUsers,
|
selectedUsers: parameters.selectedUsers,
|
||||||
roomType: parameters.roomType,
|
roomType: parameters.roomType,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userDiscoveryService: parameters.userDiscoveryService,
|
userDiscoveryService: parameters.userDiscoveryService,
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,23 +23,24 @@ class InviteUsersScreenViewModel: InviteUsersScreenViewModelType, InviteUsersScr
|
|||||||
actionsSubject.eraseToAnyPublisher()
|
actionsSubject.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>,
|
selectedUsers: CurrentValuePublisher<[UserProfileProxy], Never>,
|
||||||
roomType: InviteUsersScreenRoomType,
|
roomType: InviteUsersScreenRoomType,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userDiscoveryService: UserDiscoveryServiceProtocol,
|
userDiscoveryService: UserDiscoveryServiceProtocol,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.roomType = roomType
|
self.roomType = roomType
|
||||||
self.userDiscoveryService = userDiscoveryService
|
self.userDiscoveryService = userDiscoveryService
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
super.init(initialViewState: InviteUsersScreenViewState(selectedUsers: selectedUsers.value, isCreatingRoom: roomType.isCreatingRoom), mediaProvider: mediaProvider)
|
super.init(initialViewState: InviteUsersScreenViewState(selectedUsers: selectedUsers.value,
|
||||||
|
isCreatingRoom: roomType.isCreatingRoom),
|
||||||
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
setupSubscriptions(selectedUsers: selectedUsers)
|
setupSubscriptions(selectedUsers: selectedUsers)
|
||||||
fetchMembersIfNeeded()
|
fetchMembersIfNeeded()
|
||||||
|
|
||||||
Task {
|
Task {
|
||||||
suggestedUsers = await clientProxy.recentConversationCounterparts()
|
suggestedUsers = await userSession.clientProxy.recentConversationCounterparts()
|
||||||
|
|
||||||
if state.usersSection.type == .suggestions {
|
if state.usersSection.type == .suggestions {
|
||||||
state.usersSection = .init(type: .suggestions, users: suggestedUsers)
|
state.usersSection = .init(type: .suggestions, users: suggestedUsers)
|
||||||
|
|||||||
@@ -153,10 +153,9 @@ struct InviteUsersScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
static let viewModel = {
|
static let viewModel = {
|
||||||
let userDiscoveryService = UserDiscoveryServiceMock()
|
let userDiscoveryService = UserDiscoveryServiceMock()
|
||||||
userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice])
|
userDiscoveryService.searchProfilesWithReturnValue = .success([.mockAlice])
|
||||||
return InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
return InviteUsersScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
selectedUsers: .init([]),
|
selectedUsers: .init([]),
|
||||||
roomType: .draft,
|
roomType: .draft,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userDiscoveryService: userDiscoveryService,
|
userDiscoveryService: userDiscoveryService,
|
||||||
userIndicatorController: UserIndicatorControllerMock())
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ import SwiftUI
|
|||||||
struct JoinRoomScreenCoordinatorParameters {
|
struct JoinRoomScreenCoordinatorParameters {
|
||||||
let roomID: String
|
let roomID: String
|
||||||
let via: [String]
|
let via: [String]
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let appSettings: AppSettings
|
let appSettings: AppSettings
|
||||||
}
|
}
|
||||||
@@ -37,8 +36,7 @@ final class JoinRoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
viewModel = JoinRoomScreenViewModel(roomID: parameters.roomID,
|
viewModel = JoinRoomScreenViewModel(roomID: parameters.roomID,
|
||||||
via: parameters.via,
|
via: parameters.via,
|
||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,16 +30,15 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo
|
|||||||
init(roomID: String,
|
init(roomID: String,
|
||||||
via: [String],
|
via: [String],
|
||||||
appSettings: AppSettings,
|
appSettings: AppSettings,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.roomID = roomID
|
self.roomID = roomID
|
||||||
self.via = via
|
self.via = via
|
||||||
self.appSettings = appSettings
|
self.appSettings = appSettings
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
super.init(initialViewState: JoinRoomScreenViewState(roomID: roomID), mediaProvider: mediaProvider)
|
super.init(initialViewState: JoinRoomScreenViewState(roomID: roomID), mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
clientProxy.hideInviteAvatarsPublisher
|
clientProxy.hideInviteAvatarsPublisher
|
||||||
.removeDuplicates()
|
.removeDuplicates()
|
||||||
|
|||||||
@@ -416,8 +416,7 @@ struct JoinRoomScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
return JoinRoomScreenViewModel(roomID: "1",
|
return JoinRoomScreenViewModel(roomID: "1",
|
||||||
via: [],
|
via: [],
|
||||||
appSettings: appSettings,
|
appSettings: appSettings,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-9
@@ -12,7 +12,7 @@ struct MediaEventsTimelineScreenCoordinatorParameters {
|
|||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let mediaTimelineController: TimelineControllerProtocol
|
let mediaTimelineController: TimelineControllerProtocol
|
||||||
let filesTimelineController: TimelineControllerProtocol
|
let filesTimelineController: TimelineControllerProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
||||||
let appMediator: AppMediatorProtocol
|
let appMediator: AppMediatorProtocol
|
||||||
@@ -21,7 +21,6 @@ struct MediaEventsTimelineScreenCoordinatorParameters {
|
|||||||
let emojiProvider: EmojiProviderProtocol
|
let emojiProvider: EmojiProviderProtocol
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let timelineControllerFactory: TimelineControllerFactoryProtocol
|
let timelineControllerFactory: TimelineControllerFactoryProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum MediaEventsTimelineScreenCoordinatorAction {
|
enum MediaEventsTimelineScreenCoordinatorAction {
|
||||||
@@ -44,7 +43,7 @@ final class MediaEventsTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
let mediaTimelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
let mediaTimelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
timelineController: parameters.mediaTimelineController,
|
timelineController: parameters.mediaTimelineController,
|
||||||
mediaProvider: parameters.mediaProvider,
|
userSession: parameters.userSession,
|
||||||
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
@@ -52,12 +51,11 @@ final class MediaEventsTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
emojiProvider: parameters.emojiProvider,
|
emojiProvider: parameters.emojiProvider,
|
||||||
timelineControllerFactory: parameters.timelineControllerFactory,
|
timelineControllerFactory: parameters.timelineControllerFactory)
|
||||||
clientProxy: parameters.clientProxy)
|
|
||||||
|
|
||||||
let filesTimelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
let filesTimelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
timelineController: parameters.filesTimelineController,
|
timelineController: parameters.filesTimelineController,
|
||||||
mediaProvider: parameters.mediaProvider,
|
userSession: parameters.userSession,
|
||||||
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
@@ -65,12 +63,11 @@ final class MediaEventsTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
emojiProvider: parameters.emojiProvider,
|
emojiProvider: parameters.emojiProvider,
|
||||||
timelineControllerFactory: parameters.timelineControllerFactory,
|
timelineControllerFactory: parameters.timelineControllerFactory)
|
||||||
clientProxy: parameters.clientProxy)
|
|
||||||
|
|
||||||
viewModel = MediaEventsTimelineScreenViewModel(mediaTimelineViewModel: mediaTimelineViewModel,
|
viewModel = MediaEventsTimelineScreenViewModel(mediaTimelineViewModel: mediaTimelineViewModel,
|
||||||
filesTimelineViewModel: filesTimelineViewModel,
|
filesTimelineViewModel: filesTimelineViewModel,
|
||||||
mediaProvider: parameters.mediaProvider,
|
mediaProvider: parameters.userSession.mediaProvider,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
appMediator: parameters.appMediator)
|
appMediator: parameters.appMediator)
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -274,7 +274,7 @@ struct MediaEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
|
|
||||||
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
|
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock(),
|
||||||
@@ -282,7 +282,6 @@ struct MediaEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-5
@@ -10,9 +10,8 @@ import SwiftUI
|
|||||||
|
|
||||||
struct MessageForwardingScreenCoordinatorParameters {
|
struct MessageForwardingScreenCoordinatorParameters {
|
||||||
let forwardingItem: MessageForwardingItem
|
let forwardingItem: MessageForwardingItem
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let roomSummaryProvider: RoomSummaryProviderProtocol
|
let roomSummaryProvider: RoomSummaryProviderProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,10 +31,9 @@ final class MessageForwardingScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
init(parameters: MessageForwardingScreenCoordinatorParameters) {
|
init(parameters: MessageForwardingScreenCoordinatorParameters) {
|
||||||
viewModel = MessageForwardingScreenViewModel(forwardingItem: parameters.forwardingItem,
|
viewModel = MessageForwardingScreenViewModel(forwardingItem: parameters.forwardingItem,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
roomSummaryProvider: parameters.roomSummaryProvider,
|
roomSummaryProvider: parameters.roomSummaryProvider,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
mediaProvider: parameters.mediaProvider)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
|||||||
+4
-5
@@ -23,16 +23,15 @@ class MessageForwardingScreenViewModel: MessageForwardingScreenViewModelType, Me
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(forwardingItem: MessageForwardingItem,
|
init(forwardingItem: MessageForwardingItem,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
roomSummaryProvider: RoomSummaryProviderProtocol,
|
roomSummaryProvider: RoomSummaryProviderProtocol,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
mediaProvider: MediaProviderProtocol) {
|
|
||||||
self.forwardingItem = forwardingItem
|
self.forwardingItem = forwardingItem
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.roomSummaryProvider = roomSummaryProvider
|
self.roomSummaryProvider = roomSummaryProvider
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
super.init(initialViewState: MessageForwardingScreenViewState(), mediaProvider: mediaProvider)
|
super.init(initialViewState: MessageForwardingScreenViewState(), mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
roomSummaryProvider.roomListPublisher
|
roomSummaryProvider.roomListPublisher
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
|
|||||||
@@ -97,10 +97,9 @@ struct MessageForwardingScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let viewModel = MessageForwardingScreenViewModel(forwardingItem: .init(id: .randomEvent,
|
let viewModel = MessageForwardingScreenViewModel(forwardingItem: .init(id: .randomEvent,
|
||||||
roomID: "",
|
roomID: "",
|
||||||
content: .init(noPointer: .init())),
|
content: .init(noPointer: .init())),
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
roomSummaryProvider: summaryProvider,
|
roomSummaryProvider: summaryProvider,
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()))
|
|
||||||
|
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
MessageForwardingScreen(context: viewModel.context)
|
MessageForwardingScreen(context: viewModel.context)
|
||||||
|
|||||||
+3
-5
@@ -11,7 +11,7 @@ import SwiftUI
|
|||||||
struct PinnedEventsTimelineScreenCoordinatorParameters {
|
struct PinnedEventsTimelineScreenCoordinatorParameters {
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let timelineController: TimelineControllerProtocol
|
let timelineController: TimelineControllerProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
||||||
let appMediator: AppMediatorProtocol
|
let appMediator: AppMediatorProtocol
|
||||||
@@ -19,7 +19,6 @@ struct PinnedEventsTimelineScreenCoordinatorParameters {
|
|||||||
let analytics: AnalyticsService
|
let analytics: AnalyticsService
|
||||||
let emojiProvider: EmojiProviderProtocol
|
let emojiProvider: EmojiProviderProtocol
|
||||||
let timelineControllerFactory: TimelineControllerFactoryProtocol
|
let timelineControllerFactory: TimelineControllerFactoryProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +48,7 @@ final class PinnedEventsTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
viewModel = PinnedEventsTimelineScreenViewModel(analyticsService: parameters.analytics)
|
viewModel = PinnedEventsTimelineScreenViewModel(analyticsService: parameters.analytics)
|
||||||
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
timelineController: parameters.timelineController,
|
timelineController: parameters.timelineController,
|
||||||
mediaProvider: parameters.mediaProvider,
|
userSession: parameters.userSession,
|
||||||
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
@@ -57,8 +56,7 @@ final class PinnedEventsTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
emojiProvider: parameters.emojiProvider,
|
emojiProvider: parameters.emojiProvider,
|
||||||
timelineControllerFactory: parameters.timelineControllerFactory,
|
timelineControllerFactory: parameters.timelineControllerFactory)
|
||||||
clientProxy: parameters.clientProxy)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
|||||||
+2
-3
@@ -71,7 +71,7 @@ struct PinnedEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
timelineController.timelineItems = []
|
timelineController.timelineItems = []
|
||||||
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
|
return TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Preview room")),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock(),
|
||||||
@@ -79,8 +79,7 @@ struct PinnedEventsTimelineScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
|||||||
+2
-4
@@ -10,8 +10,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct RoomDetailsEditScreenCoordinatorParameters {
|
struct RoomDetailsEditScreenCoordinatorParameters {
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let mediaUploadingPreprocessor: MediaUploadingPreprocessor
|
let mediaUploadingPreprocessor: MediaUploadingPreprocessor
|
||||||
weak var navigationStackCoordinator: NavigationStackCoordinator?
|
weak var navigationStackCoordinator: NavigationStackCoordinator?
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
@@ -37,8 +36,7 @@ final class RoomDetailsEditScreenCoordinator: CoordinatorProtocol {
|
|||||||
self.parameters = parameters
|
self.parameters = parameters
|
||||||
|
|
||||||
viewModel = RoomDetailsEditScreenViewModel(roomProxy: parameters.roomProxy,
|
viewModel = RoomDetailsEditScreenViewModel(roomProxy: parameters.roomProxy,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
mediaUploadingPreprocessor: parameters.mediaUploadingPreprocessor,
|
mediaUploadingPreprocessor: parameters.mediaUploadingPreprocessor,
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,11 @@ class RoomDetailsEditScreenViewModel: RoomDetailsEditScreenViewModelType, RoomDe
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(roomProxy: JoinedRoomProxyProtocol,
|
init(roomProxy: JoinedRoomProxyProtocol,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor,
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.mediaUploadingPreprocessor = mediaUploadingPreprocessor
|
self.mediaUploadingPreprocessor = mediaUploadingPreprocessor
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
@@ -40,7 +39,8 @@ class RoomDetailsEditScreenViewModel: RoomDetailsEditScreenViewModelType, RoomDe
|
|||||||
initialName: roomName ?? "",
|
initialName: roomName ?? "",
|
||||||
initialTopic: roomTopic ?? "",
|
initialTopic: roomTopic ?? "",
|
||||||
avatarURL: roomAvatar,
|
avatarURL: roomAvatar,
|
||||||
bindings: .init(name: roomName ?? "", topic: roomTopic ?? "")), mediaProvider: mediaProvider)
|
bindings: .init(name: roomName ?? "", topic: roomTopic ?? "")),
|
||||||
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
roomProxy.infoPublisher
|
roomProxy.infoPublisher
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
|
|||||||
@@ -155,8 +155,7 @@ struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
members: [.mockMeAdmin]))
|
members: [.mockMeAdmin]))
|
||||||
|
|
||||||
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
|
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
||||||
userIndicatorController: UserIndicatorControllerMock.default)
|
userIndicatorController: UserIndicatorControllerMock.default)
|
||||||
}()
|
}()
|
||||||
@@ -167,8 +166,7 @@ struct RoomDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
members: [.mockAlice]))
|
members: [.mockAlice]))
|
||||||
|
|
||||||
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
|
return RoomDetailsEditScreenViewModel(roomProxy: roomProxy,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
||||||
userIndicatorController: UserIndicatorControllerMock.default)
|
userIndicatorController: UserIndicatorControllerMock.default)
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct RoomDetailsScreenCoordinatorParameters {
|
struct RoomDetailsScreenCoordinatorParameters {
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let analyticsService: AnalyticsService
|
let analyticsService: AnalyticsService
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let notificationSettings: NotificationSettingsProxyProtocol
|
let notificationSettings: NotificationSettingsProxyProtocol
|
||||||
@@ -50,8 +49,7 @@ final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
init(parameters: RoomDetailsScreenCoordinatorParameters) {
|
init(parameters: RoomDetailsScreenCoordinatorParameters) {
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: parameters.roomProxy,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: parameters.roomProxy,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
analyticsService: parameters.analyticsService,
|
analyticsService: parameters.analyticsService,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
notificationSettingsProxy: parameters.notificationSettings,
|
notificationSettingsProxy: parameters.notificationSettings,
|
||||||
|
|||||||
@@ -12,9 +12,8 @@ typealias RoomDetailsScreenViewModelType = StateStoreViewModelV2<RoomDetailsScre
|
|||||||
|
|
||||||
class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScreenViewModelProtocol {
|
class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScreenViewModelProtocol {
|
||||||
private let roomProxy: JoinedRoomProxyProtocol
|
private let roomProxy: JoinedRoomProxyProtocol
|
||||||
private let clientProxy: ClientProxyProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let analyticsService: AnalyticsService
|
private let analyticsService: AnalyticsService
|
||||||
private let mediaProvider: MediaProviderProtocol
|
|
||||||
private let userIndicatorController: UserIndicatorControllerProtocol
|
private let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
private let notificationSettingsProxy: NotificationSettingsProxyProtocol
|
private let notificationSettingsProxy: NotificationSettingsProxyProtocol
|
||||||
private let attributedStringBuilder: AttributedStringBuilderProtocol
|
private let attributedStringBuilder: AttributedStringBuilderProtocol
|
||||||
@@ -45,8 +44,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(roomProxy: JoinedRoomProxyProtocol,
|
init(roomProxy: JoinedRoomProxyProtocol,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
analyticsService: AnalyticsService,
|
analyticsService: AnalyticsService,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyProtocol,
|
notificationSettingsProxy: NotificationSettingsProxyProtocol,
|
||||||
@@ -54,8 +52,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
appMediator: AppMediatorProtocol,
|
appMediator: AppMediatorProtocol,
|
||||||
appSettings: AppSettings) {
|
appSettings: AppSettings) {
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.clientProxy = clientProxy
|
self.userSession = userSession
|
||||||
self.mediaProvider = mediaProvider
|
|
||||||
self.analyticsService = analyticsService
|
self.analyticsService = analyticsService
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
self.notificationSettingsProxy = notificationSettingsProxy
|
self.notificationSettingsProxy = notificationSettingsProxy
|
||||||
@@ -72,14 +69,14 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
||||||
notificationSettingsState: .loading,
|
notificationSettingsState: .loading,
|
||||||
bindings: .init()),
|
bindings: .init()),
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
appSettings.$knockingEnabled
|
appSettings.$knockingEnabled
|
||||||
.weakAssign(to: \.state.knockingEnabled, on: self)
|
.weakAssign(to: \.state.knockingEnabled, on: self)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
Task {
|
Task {
|
||||||
state.reportRoomEnabled = await clientProxy.isReportRoomSupported
|
state.reportRoomEnabled = await userSession.clientProxy.isReportRoomSupported
|
||||||
}
|
}
|
||||||
|
|
||||||
appMediator.networkMonitor.reachabilityPublisher
|
appMediator.networkMonitor.reachabilityPublisher
|
||||||
@@ -297,14 +294,14 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
|
|
||||||
if roomProxy.isDirectOneToOneRoom {
|
if roomProxy.isDirectOneToOneRoom {
|
||||||
if var dmRecipientInfo = state.dmRecipientInfo {
|
if var dmRecipientInfo = state.dmRecipientInfo {
|
||||||
if case let .success(userIdentity) = await clientProxy.userIdentity(for: dmRecipientInfo.member.id) {
|
if case let .success(userIdentity) = await userSession.clientProxy.userIdentity(for: dmRecipientInfo.member.id) {
|
||||||
dmRecipientInfo.verificationState = userIdentity?.verificationState
|
dmRecipientInfo.verificationState = userIdentity?.verificationState
|
||||||
state.dmRecipientInfo = dmRecipientInfo
|
state.dmRecipientInfo = dmRecipientInfo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for member in roomProxy.membersPublisher.value {
|
for member in roomProxy.membersPublisher.value {
|
||||||
if case let .success(userIdentity) = await clientProxy.userIdentity(for: member.userID) {
|
if case let .success(userIdentity) = await userSession.clientProxy.userIdentity(for: member.userID) {
|
||||||
if userIdentity?.verificationState == .verificationViolation {
|
if userIdentity?.verificationState == .verificationViolation {
|
||||||
state.hasMemberIdentityVerificationStateViolations = true
|
state.hasMemberIdentityVerificationStateViolations = true
|
||||||
return
|
return
|
||||||
@@ -407,7 +404,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.isProcessingIgnoreRequest = true
|
state.isProcessingIgnoreRequest = true
|
||||||
let result = await clientProxy.ignoreUser(dmUserID)
|
let result = await userSession.clientProxy.ignoreUser(dmUserID)
|
||||||
state.isProcessingIgnoreRequest = false
|
state.isProcessingIgnoreRequest = false
|
||||||
switch result {
|
switch result {
|
||||||
case .success:
|
case .success:
|
||||||
@@ -428,7 +425,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.isProcessingIgnoreRequest = true
|
state.isProcessingIgnoreRequest = true
|
||||||
let result = await clientProxy.unignoreUser(dmUserID)
|
let result = await userSession.clientProxy.unignoreUser(dmUserID)
|
||||||
state.isProcessingIgnoreRequest = false
|
state.isProcessingIgnoreRequest = false
|
||||||
switch result {
|
switch result {
|
||||||
case .success:
|
case .success:
|
||||||
@@ -452,7 +449,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
|
|||||||
|
|
||||||
// We don't actually know the mime type here, assume it's an image.
|
// We don't actually know the mime type here, assume it's an image.
|
||||||
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
||||||
case let .success(file) = await mediaProvider.loadFileFromSource(mediaSource) {
|
case let .success(file) = await userSession.mediaProvider.loadFileFromSource(mediaSource) {
|
||||||
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: roomProxy.infoPublisher.value.displayName)
|
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: roomProxy.infoPublisher.value.displayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -392,8 +392,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let notificationSettingsProxy = NotificationSettingsProxyMock(with: notificationSettingsProxyMockConfiguration)
|
let notificationSettingsProxy = NotificationSettingsProxyMock(with: notificationSettingsProxyMockConfiguration)
|
||||||
|
|
||||||
return .init(roomProxy: roomProxy,
|
return .init(roomProxy: roomProxy,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxy,
|
notificationSettingsProxy: notificationSettingsProxy,
|
||||||
@@ -423,8 +422,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
|
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
|
||||||
|
|
||||||
return .init(roomProxy: roomProxy,
|
return .init(roomProxy: roomProxy,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxy,
|
notificationSettingsProxy: notificationSettingsProxy,
|
||||||
@@ -463,8 +461,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
|
let notificationSettingsProxy = NotificationSettingsProxyMock(with: .init())
|
||||||
|
|
||||||
return .init(roomProxy: roomProxy,
|
return .init(roomProxy: roomProxy,
|
||||||
clientProxy: clientProxyMock,
|
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxy,
|
notificationSettingsProxy: notificationSettingsProxy,
|
||||||
|
|||||||
+3
-5
@@ -9,8 +9,7 @@ import Combine
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct RoomDirectorySearchScreenCoordinatorParameters {
|
struct RoomDirectorySearchScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,9 +30,8 @@ final class RoomDirectorySearchScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: RoomDirectorySearchScreenCoordinatorParameters) {
|
init(parameters: RoomDirectorySearchScreenCoordinatorParameters) {
|
||||||
viewModel = RoomDirectorySearchScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = RoomDirectorySearchScreenViewModel(userSession: parameters.userSession,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
mediaProvider: parameters.mediaProvider)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
|||||||
+4
-5
@@ -19,13 +19,12 @@ class RoomDirectorySearchScreenViewModel: RoomDirectorySearchScreenViewModelType
|
|||||||
actionsSubject.eraseToAnyPublisher()
|
actionsSubject.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
mediaProvider: MediaProviderProtocol) {
|
roomDirectorySearchProxy = userSession.clientProxy.roomDirectorySearchProxy()
|
||||||
roomDirectorySearchProxy = clientProxy.roomDirectorySearchProxy()
|
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
super.init(initialViewState: RoomDirectorySearchScreenViewState(), mediaProvider: mediaProvider)
|
super.init(initialViewState: RoomDirectorySearchScreenViewState(), mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
state.rooms = roomDirectorySearchProxy.resultsPublisher.value
|
state.rooms = roomDirectorySearchProxy.resultsPublisher.value
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -91,9 +91,8 @@ struct RoomDirectorySearchScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
|
|
||||||
let clientProxy = ClientProxyMock(.init(roomDirectorySearchProxy: roomDirectorySearchProxy))
|
let clientProxy = ClientProxyMock(.init(roomDirectorySearchProxy: roomDirectorySearchProxy))
|
||||||
|
|
||||||
return RoomDirectorySearchScreenViewModel(clientProxy: clientProxy,
|
return RoomDirectorySearchScreenViewModel(userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()))
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
|||||||
+2
-4
@@ -11,8 +11,7 @@ import SwiftUI
|
|||||||
struct RoomMemberDetailsScreenCoordinatorParameters {
|
struct RoomMemberDetailsScreenCoordinatorParameters {
|
||||||
let userID: String
|
let userID: String
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let analytics: AnalyticsService
|
let analytics: AnalyticsService
|
||||||
}
|
}
|
||||||
@@ -37,8 +36,7 @@ final class RoomMemberDetailsScreenCoordinator: CoordinatorProtocol {
|
|||||||
init(parameters: RoomMemberDetailsScreenCoordinatorParameters) {
|
init(parameters: RoomMemberDetailsScreenCoordinatorParameters) {
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: parameters.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: parameters.userID,
|
||||||
roomProxy: parameters.roomProxy,
|
roomProxy: parameters.roomProxy,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
analytics: parameters.analytics)
|
analytics: parameters.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-15
@@ -12,8 +12,7 @@ typealias RoomMemberDetailsScreenViewModelType = StateStoreViewModel<RoomMemberD
|
|||||||
|
|
||||||
class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, RoomMemberDetailsScreenViewModelProtocol {
|
class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, RoomMemberDetailsScreenViewModelProtocol {
|
||||||
private let roomProxy: JoinedRoomProxyProtocol
|
private let roomProxy: JoinedRoomProxyProtocol
|
||||||
private let clientProxy: ClientProxyProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let mediaProvider: MediaProviderProtocol
|
|
||||||
private let userIndicatorController: UserIndicatorControllerProtocol
|
private let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
private let analytics: AnalyticsService
|
private let analytics: AnalyticsService
|
||||||
|
|
||||||
@@ -27,19 +26,17 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
|
|
||||||
init(userID: String,
|
init(userID: String,
|
||||||
roomProxy: JoinedRoomProxyProtocol,
|
roomProxy: JoinedRoomProxyProtocol,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol,
|
||||||
analytics: AnalyticsService) {
|
analytics: AnalyticsService) {
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.clientProxy = clientProxy
|
self.userSession = userSession
|
||||||
self.mediaProvider = mediaProvider
|
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
self.analytics = analytics
|
self.analytics = analytics
|
||||||
|
|
||||||
let initialViewState = RoomMemberDetailsScreenViewState(userID: userID, bindings: .init())
|
let initialViewState = RoomMemberDetailsScreenViewState(userID: userID, bindings: .init())
|
||||||
|
|
||||||
super.init(initialViewState: initialViewState, mediaProvider: mediaProvider)
|
super.init(initialViewState: initialViewState, mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
showMemberLoadingIndicator()
|
showMemberLoadingIndicator()
|
||||||
|
|
||||||
@@ -88,7 +85,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
case .verifyUser:
|
case .verifyUser:
|
||||||
actionsSubject.send(.verifyUser(userID: state.userID))
|
actionsSubject.send(.verifyUser(userID: state.userID))
|
||||||
case .withdrawVerification:
|
case .withdrawVerification:
|
||||||
Task { await clientProxy.withdrawUserIdentityVerification(state.userID) }
|
Task { await userSession.clientProxy.withdrawUserIdentityVerification(state.userID) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +97,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
roomMemberProxy = member
|
roomMemberProxy = member
|
||||||
state.memberDetails = RoomMemberDetails(withProxy: member)
|
state.memberDetails = RoomMemberDetails(withProxy: member)
|
||||||
state.isOwnMemberDetails = member.userID == roomProxy.ownUserID
|
state.isOwnMemberDetails = member.userID == roomProxy.ownUserID
|
||||||
switch clientProxy.directRoomForUserID(member.userID) {
|
switch userSession.clientProxy.directRoomForUserID(member.userID) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
state.dmRoomID = roomID
|
state.dmRoomID = roomID
|
||||||
case .failure:
|
case .failure:
|
||||||
@@ -114,7 +111,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
actionsSubject.send(.openUserProfile)
|
actionsSubject.send(.openUserProfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
if case let .success(.some(identity)) = await clientProxy.userIdentity(for: state.userID) {
|
if case let .success(.some(identity)) = await userSession.clientProxy.userIdentity(for: state.userID) {
|
||||||
state.verificationState = identity.verificationState
|
state.verificationState = identity.verificationState
|
||||||
} else {
|
} else {
|
||||||
MXLog.error("Failed to find the member's identity.")
|
MXLog.error("Failed to find the member's identity.")
|
||||||
@@ -127,7 +124,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.isProcessingIgnoreRequest = true
|
state.isProcessingIgnoreRequest = true
|
||||||
let result = await clientProxy.ignoreUser(roomMemberProxy.userID)
|
let result = await userSession.clientProxy.ignoreUser(roomMemberProxy.userID)
|
||||||
state.isProcessingIgnoreRequest = false
|
state.isProcessingIgnoreRequest = false
|
||||||
switch result {
|
switch result {
|
||||||
case .success:
|
case .success:
|
||||||
@@ -148,7 +145,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.isProcessingIgnoreRequest = true
|
state.isProcessingIgnoreRequest = true
|
||||||
let result = await clientProxy.unignoreUser(roomMemberProxy.userID)
|
let result = await userSession.clientProxy.unignoreUser(roomMemberProxy.userID)
|
||||||
state.isProcessingIgnoreRequest = false
|
state.isProcessingIgnoreRequest = false
|
||||||
switch result {
|
switch result {
|
||||||
case .success:
|
case .success:
|
||||||
@@ -179,7 +176,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
|
|
||||||
// We don't actually know the mime type here, assume it's an image.
|
// We don't actually know the mime type here, assume it's an image.
|
||||||
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
||||||
case let .success(file) = await mediaProvider.loadFileFromSource(mediaSource) {
|
case let .success(file) = await userSession.mediaProvider.loadFileFromSource(mediaSource) {
|
||||||
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: roomMemberProxy.displayName)
|
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: roomMemberProxy.displayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -195,7 +192,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
delay: .milliseconds(200))
|
delay: .milliseconds(200))
|
||||||
defer { userIndicatorController.retractIndicatorWithId(loadingIndicatorIdentifier) }
|
defer { userIndicatorController.retractIndicatorWithId(loadingIndicatorIdentifier) }
|
||||||
|
|
||||||
switch clientProxy.directRoomForUserID(roomMemberProxy.userID) {
|
switch userSession.clientProxy.directRoomForUserID(roomMemberProxy.userID) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
if let roomID {
|
if let roomID {
|
||||||
actionsSubject.send(.openDirectChat(roomID: roomID))
|
actionsSubject.send(.openDirectChat(roomID: roomID))
|
||||||
@@ -218,7 +215,7 @@ class RoomMemberDetailsScreenViewModel: RoomMemberDetailsScreenViewModelType, Ro
|
|||||||
delay: .milliseconds(200))
|
delay: .milliseconds(200))
|
||||||
defer { userIndicatorController.retractIndicatorWithId(loadingIndicatorIdentifier) }
|
defer { userIndicatorController.retractIndicatorWithId(loadingIndicatorIdentifier) }
|
||||||
|
|
||||||
switch await clientProxy.createDirectRoom(with: roomMemberProxy.userID, expectedRoomName: roomMemberProxy.displayName) {
|
switch await userSession.clientProxy.createDirectRoom(with: roomMemberProxy.userID, expectedRoomName: roomMemberProxy.displayName) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
analytics.trackCreatedRoom(isDM: true)
|
analytics.trackCreatedRoom(isDM: true)
|
||||||
actionsSubject.send(.openDirectChat(roomID: roomID))
|
actionsSubject.send(.openDirectChat(roomID: roomID))
|
||||||
|
|||||||
@@ -228,8 +228,7 @@ struct RoomMemberDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
|
|
||||||
return RoomMemberDetailsScreenViewModel(userID: member.userID,
|
return RoomMemberDetailsScreenViewModel(userID: member.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: clientProxyMock,
|
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -9,9 +9,8 @@ import Combine
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct RoomMembersListScreenCoordinatorParameters {
|
struct RoomMembersListScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let analytics: AnalyticsService
|
let analytics: AnalyticsService
|
||||||
}
|
}
|
||||||
@@ -32,9 +31,8 @@ final class RoomMembersListScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: RoomMembersListScreenCoordinatorParameters) {
|
init(parameters: RoomMembersListScreenCoordinatorParameters) {
|
||||||
viewModel = RoomMembersListScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = RoomMembersListScreenViewModel(userSession: parameters.userSession,
|
||||||
roomProxy: parameters.roomProxy,
|
roomProxy: parameters.roomProxy,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
analytics: parameters.analytics)
|
analytics: parameters.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-19
@@ -11,11 +11,10 @@ import SwiftUI
|
|||||||
typealias RoomMembersListScreenViewModelType = StateStoreViewModel<RoomMembersListScreenViewState, RoomMembersListScreenViewAction>
|
typealias RoomMembersListScreenViewModelType = StateStoreViewModel<RoomMembersListScreenViewState, RoomMembersListScreenViewAction>
|
||||||
|
|
||||||
class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMembersListScreenViewModelProtocol {
|
class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMembersListScreenViewModelProtocol {
|
||||||
private let clientProxy: ClientProxyProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let roomProxy: JoinedRoomProxyProtocol
|
private let roomProxy: JoinedRoomProxyProtocol
|
||||||
private let userIndicatorController: UserIndicatorControllerProtocol
|
private let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
private let analytics: AnalyticsService
|
private let analytics: AnalyticsService
|
||||||
private let mediaProvider: MediaProviderProtocol
|
|
||||||
|
|
||||||
private var members: [RoomMemberProxyProtocol] = []
|
private var members: [RoomMemberProxyProtocol] = []
|
||||||
private var currentUserProxy: RoomMemberProxyProtocol?
|
private var currentUserProxy: RoomMemberProxyProtocol?
|
||||||
@@ -27,20 +26,18 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(initialMode: RoomMembersListScreenMode = .members,
|
init(initialMode: RoomMembersListScreenMode = .members,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
roomProxy: JoinedRoomProxyProtocol,
|
roomProxy: JoinedRoomProxyProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol,
|
||||||
analytics: AnalyticsService) {
|
analytics: AnalyticsService) {
|
||||||
self.clientProxy = clientProxy
|
self.userSession = userSession
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
self.analytics = analytics
|
self.analytics = analytics
|
||||||
self.mediaProvider = mediaProvider
|
|
||||||
|
|
||||||
super.init(initialViewState: .init(joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
super.init(initialViewState: .init(joinedMembersCount: roomProxy.infoPublisher.value.joinedMembersCount,
|
||||||
bindings: .init(mode: initialMode)),
|
bindings: .init(mode: initialMode)),
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
setupMembers()
|
setupMembers()
|
||||||
}
|
}
|
||||||
@@ -112,7 +109,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func buildMembersDetails(members: [RoomMemberProxyProtocol]) async -> RoomMembersDetails {
|
private func buildMembersDetails(members: [RoomMemberProxyProtocol]) async -> RoomMembersDetails {
|
||||||
await Task.detached { [clientProxy, roomProxy] in
|
await Task.detached { [userSession, roomProxy] in
|
||||||
// accessing RoomMember's properties is very slow. We need to do it in a background thread.
|
// accessing RoomMember's properties is very slow. We need to do it in a background thread.
|
||||||
var invitedMembers: [RoomMemberListScreenEntry] = .init()
|
var invitedMembers: [RoomMemberListScreenEntry] = .init()
|
||||||
var joinedMembers: [RoomMemberListScreenEntry] = .init()
|
var joinedMembers: [RoomMemberListScreenEntry] = .init()
|
||||||
@@ -121,7 +118,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
for member in members {
|
for member in members {
|
||||||
var verificationState: UserIdentityVerificationState = .notVerified
|
var verificationState: UserIdentityVerificationState = .notVerified
|
||||||
if roomProxy.infoPublisher.value.isEncrypted, // We don't care about identity statuses on non-encrypted rooms
|
if roomProxy.infoPublisher.value.isEncrypted, // We don't care about identity statuses on non-encrypted rooms
|
||||||
case let .success(userIdentity) = await clientProxy.userIdentity(for: member.userID),
|
case let .success(userIdentity) = await userSession.clientProxy.userIdentity(for: member.userID),
|
||||||
let userIdentity {
|
let userIdentity {
|
||||||
verificationState = userIdentity.verificationState
|
verificationState = userIdentity.verificationState
|
||||||
}
|
}
|
||||||
@@ -151,15 +148,15 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let manageMemeberViewModel = ManageRoomMemberSheetViewModel(memberDetails: .memberDetails(roomMember: member),
|
let manageMemberViewModel = ManageRoomMemberSheetViewModel(memberDetails: .memberDetails(roomMember: member),
|
||||||
permissions: .init(canKick: state.canKickUsers,
|
permissions: .init(canKick: state.canKickUsers,
|
||||||
canBan: state.canBanUsers,
|
canBan: state.canBanUsers,
|
||||||
ownPowerLevel: currentUserProxy?.powerLevel ?? .init(value: 0)),
|
ownPowerLevel: currentUserProxy?.powerLevel ?? .init(value: 0)),
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
userIndicatorController: userIndicatorController,
|
userIndicatorController: userIndicatorController,
|
||||||
analyticsService: analytics,
|
analyticsService: analytics,
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
manageMemeberViewModel.actions.sink { [weak self] action in
|
manageMemberViewModel.actions.sink { [weak self] action in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
switch action {
|
switch action {
|
||||||
case .dismiss(let shouldShowDetails):
|
case .dismiss(let shouldShowDetails):
|
||||||
@@ -170,7 +167,7 @@ class RoomMembersListScreenViewModel: RoomMembersListScreenViewModelType, RoomMe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
state.bindings.manageMemeberViewModel = manageMemeberViewModel
|
state.bindings.manageMemeberViewModel = manageMemberViewModel
|
||||||
}
|
}
|
||||||
|
|
||||||
private func showMemberDetails(_ member: RoomMemberDetails) {
|
private func showMemberDetails(_ member: RoomMemberDetails) {
|
||||||
|
|||||||
@@ -196,12 +196,11 @@ struct RoomMembersListScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return RoomMembersListScreenViewModel(initialMode: initialMode,
|
return RoomMembersListScreenViewModel(initialMode: initialMode,
|
||||||
clientProxy: clientProxyMock,
|
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Some room",
|
roomProxy: JoinedRoomProxyMock(.init(name: "Some room",
|
||||||
members: members,
|
members: members,
|
||||||
ownUserID: ownUserID,
|
ownUserID: ownUserID,
|
||||||
powerLevelsConfiguration: .init(canUserInvite: false))),
|
powerLevelsConfiguration: .init(canUserInvite: false))),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -118,9 +118,8 @@ struct RoomMembersListMemberCell_Previews: PreviewProvider, TestablePreview {
|
|||||||
verificationState: .verificationViolation)
|
verificationState: .verificationViolation)
|
||||||
]
|
]
|
||||||
|
|
||||||
static let viewModel = RoomMembersListScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
static let viewModel = RoomMembersListScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Some room", members: [])),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Some room", members: [])),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
|||||||
@@ -12,12 +12,11 @@ import SwiftUI
|
|||||||
import WysiwygComposer
|
import WysiwygComposer
|
||||||
|
|
||||||
struct RoomScreenCoordinatorParameters {
|
struct RoomScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
var focussedEvent: FocusEvent?
|
var focussedEvent: FocusEvent?
|
||||||
var sharedText: String?
|
var sharedText: String?
|
||||||
let timelineController: TimelineControllerProtocol
|
let timelineController: TimelineControllerProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
||||||
let emojiProvider: EmojiProviderProtocol
|
let emojiProvider: EmojiProviderProtocol
|
||||||
@@ -69,10 +68,9 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
selectedPinnedEventID = focussedEvent.shouldSetPin ? focussedEvent.eventID : nil
|
selectedPinnedEventID = focussedEvent.shouldSetPin ? focussedEvent.eventID : nil
|
||||||
}
|
}
|
||||||
|
|
||||||
roomViewModel = RoomScreenViewModel(clientProxy: parameters.clientProxy,
|
roomViewModel = RoomScreenViewModel(userSession: parameters.userSession,
|
||||||
roomProxy: parameters.roomProxy,
|
roomProxy: parameters.roomProxy,
|
||||||
initialSelectedPinnedEventID: selectedPinnedEventID,
|
initialSelectedPinnedEventID: selectedPinnedEventID,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
ongoingCallRoomIDPublisher: parameters.ongoingCallRoomIDPublisher,
|
ongoingCallRoomIDPublisher: parameters.ongoingCallRoomIDPublisher,
|
||||||
appMediator: parameters.appMediator,
|
appMediator: parameters.appMediator,
|
||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
@@ -83,7 +81,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
focussedEventID: parameters.focussedEvent?.eventID,
|
focussedEventID: parameters.focussedEvent?.eventID,
|
||||||
timelineController: parameters.timelineController,
|
timelineController: parameters.timelineController,
|
||||||
mediaProvider: parameters.mediaProvider,
|
userSession: parameters.userSession,
|
||||||
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
@@ -91,8 +89,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
emojiProvider: parameters.emojiProvider,
|
emojiProvider: parameters.emojiProvider,
|
||||||
timelineControllerFactory: parameters.timelineControllerFactory,
|
timelineControllerFactory: parameters.timelineControllerFactory)
|
||||||
clientProxy: parameters.clientProxy)
|
|
||||||
|
|
||||||
let wysiwygViewModel = WysiwygComposerViewModel(minHeight: ComposerConstant.minHeight,
|
let wysiwygViewModel = WysiwygComposerViewModel(minHeight: ComposerConstant.minHeight,
|
||||||
maxCompressedHeight: ComposerConstant.maxHeight,
|
maxCompressedHeight: ComposerConstant.maxHeight,
|
||||||
@@ -102,7 +99,7 @@ final class RoomScreenCoordinator: CoordinatorProtocol {
|
|||||||
roomProxy: parameters.roomProxy,
|
roomProxy: parameters.roomProxy,
|
||||||
wysiwygViewModel: wysiwygViewModel,
|
wysiwygViewModel: wysiwygViewModel,
|
||||||
completionSuggestionService: parameters.completionSuggestionService,
|
completionSuggestionService: parameters.completionSuggestionService,
|
||||||
mediaProvider: parameters.mediaProvider,
|
mediaProvider: parameters.userSession.mediaProvider,
|
||||||
mentionDisplayHelper: ComposerMentionDisplayHelper(timelineContext: timelineViewModel.context),
|
mentionDisplayHelper: ComposerMentionDisplayHelper(timelineContext: timelineViewModel.context),
|
||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
|
|||||||
@@ -50,17 +50,16 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
roomProxy: JoinedRoomProxyProtocol,
|
roomProxy: JoinedRoomProxyProtocol,
|
||||||
initialSelectedPinnedEventID: String?,
|
initialSelectedPinnedEventID: String?,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
ongoingCallRoomIDPublisher: CurrentValuePublisher<String?, Never>,
|
ongoingCallRoomIDPublisher: CurrentValuePublisher<String?, Never>,
|
||||||
appMediator: AppMediatorProtocol,
|
appMediator: AppMediatorProtocol,
|
||||||
appSettings: AppSettings,
|
appSettings: AppSettings,
|
||||||
appHooks: AppHooks,
|
appHooks: AppHooks,
|
||||||
analyticsService: AnalyticsService,
|
analyticsService: AnalyticsService,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.appMediator = appMediator
|
self.appMediator = appMediator
|
||||||
self.appSettings = appSettings
|
self.appSettings = appSettings
|
||||||
@@ -75,7 +74,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
|
|||||||
hasOngoingCall: roomProxy.infoPublisher.value.hasRoomCall,
|
hasOngoingCall: roomProxy.infoPublisher.value.hasRoomCall,
|
||||||
hasSuccessor: roomProxy.infoPublisher.value.successor != nil)
|
hasSuccessor: roomProxy.infoPublisher.value.successor != nil)
|
||||||
super.init(initialViewState: appHooks.roomScreenHook.update(viewState),
|
super.init(initialViewState: appHooks.roomScreenHook.update(viewState),
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
updateRoomInfo(roomProxy.infoPublisher.value)
|
updateRoomInfo(roomProxy.infoPublisher.value)
|
||||||
setupSubscriptions(ongoingCallRoomIDPublisher: ongoingCallRoomIDPublisher)
|
setupSubscriptions(ongoingCallRoomIDPublisher: ongoingCallRoomIDPublisher)
|
||||||
@@ -416,10 +415,9 @@ extension RoomScreenViewModel {
|
|||||||
static func mock(roomProxyMock: JoinedRoomProxyMock,
|
static func mock(roomProxyMock: JoinedRoomProxyMock,
|
||||||
clientProxyMock: ClientProxyMock = ClientProxyMock(),
|
clientProxyMock: ClientProxyMock = ClientProxyMock(),
|
||||||
appHooks: AppHooks = AppHooks()) -> RoomScreenViewModel {
|
appHooks: AppHooks = AppHooks()) -> RoomScreenViewModel {
|
||||||
RoomScreenViewModel(clientProxy: clientProxyMock,
|
RoomScreenViewModel(userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
||||||
let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -265,8 +265,7 @@ struct RoomScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
return .init(room: roomViewModel, timeline: timelineViewModel)
|
return .init(room: roomViewModel, timeline: timelineViewModel)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,9 +9,8 @@ import Combine
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct RoomSelectionScreenCoordinatorParameters {
|
struct RoomSelectionScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let roomSummaryProvider: RoomSummaryProviderProtocol
|
let roomSummaryProvider: RoomSummaryProviderProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum RoomSelectionScreenCoordinatorAction {
|
enum RoomSelectionScreenCoordinatorAction {
|
||||||
@@ -29,9 +28,8 @@ final class RoomSelectionScreenCoordinator: CoordinatorProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
init(parameters: RoomSelectionScreenCoordinatorParameters) {
|
init(parameters: RoomSelectionScreenCoordinatorParameters) {
|
||||||
viewModel = RoomSelectionScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = RoomSelectionScreenViewModel(userSession: parameters.userSession,
|
||||||
roomSummaryProvider: parameters.roomSummaryProvider,
|
roomSummaryProvider: parameters.roomSummaryProvider)
|
||||||
mediaProvider: parameters.mediaProvider)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
|||||||
@@ -20,13 +20,12 @@ class RoomSelectionScreenViewModel: RoomSelectionScreenViewModelType, RoomSelect
|
|||||||
actionsSubject.eraseToAnyPublisher()
|
actionsSubject.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
roomSummaryProvider: RoomSummaryProviderProtocol,
|
roomSummaryProvider: RoomSummaryProviderProtocol) {
|
||||||
mediaProvider: MediaProviderProtocol) {
|
clientProxy = userSession.clientProxy
|
||||||
self.clientProxy = clientProxy
|
|
||||||
self.roomSummaryProvider = roomSummaryProvider
|
self.roomSummaryProvider = roomSummaryProvider
|
||||||
|
|
||||||
super.init(initialViewState: RoomSelectionScreenViewState(), mediaProvider: mediaProvider)
|
super.init(initialViewState: RoomSelectionScreenViewState(), mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
roomSummaryProvider.roomListPublisher
|
roomSummaryProvider.roomListPublisher
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
|
|||||||
@@ -94,9 +94,8 @@ private struct RoomSelectionListRow: View {
|
|||||||
struct RoomSelectionScreen_Previews: PreviewProvider, TestablePreview {
|
struct RoomSelectionScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
|
let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
|
||||||
let viewModel = RoomSelectionScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
let viewModel = RoomSelectionScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomSummaryProvider: summaryProvider,
|
roomSummaryProvider: summaryProvider)
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()))
|
|
||||||
|
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
RoomSelectionScreen(context: viewModel.context)
|
RoomSelectionScreen(context: viewModel.context)
|
||||||
|
|||||||
+2
-4
@@ -10,8 +10,7 @@ import SwiftUI
|
|||||||
|
|
||||||
struct UserDetailsEditScreenCoordinatorParameters {
|
struct UserDetailsEditScreenCoordinatorParameters {
|
||||||
let orientationManager: OrientationManagerProtocol
|
let orientationManager: OrientationManagerProtocol
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let mediaUploadingPreprocessor: MediaUploadingPreprocessor
|
let mediaUploadingPreprocessor: MediaUploadingPreprocessor
|
||||||
weak var navigationStackCoordinator: NavigationStackCoordinator?
|
weak var navigationStackCoordinator: NavigationStackCoordinator?
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
@@ -26,8 +25,7 @@ final class UserDetailsEditScreenCoordinator: CoordinatorProtocol {
|
|||||||
init(parameters: UserDetailsEditScreenCoordinatorParameters) {
|
init(parameters: UserDetailsEditScreenCoordinatorParameters) {
|
||||||
self.parameters = parameters
|
self.parameters = parameters
|
||||||
|
|
||||||
viewModel = UserDetailsEditScreenViewModel(clientProxy: parameters.clientProxy,
|
viewModel = UserDetailsEditScreenViewModel(userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
mediaUploadingPreprocessor: parameters.mediaUploadingPreprocessor,
|
mediaUploadingPreprocessor: parameters.mediaUploadingPreprocessor,
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -20,16 +20,15 @@ class UserDetailsEditScreenViewModel: UserDetailsEditScreenViewModelType, UserDe
|
|||||||
actionsSubject.eraseToAnyPublisher()
|
actionsSubject.eraseToAnyPublisher()
|
||||||
}
|
}
|
||||||
|
|
||||||
init(clientProxy: ClientProxyProtocol,
|
init(userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor,
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol) {
|
userIndicatorController: UserIndicatorControllerProtocol) {
|
||||||
self.clientProxy = clientProxy
|
clientProxy = userSession.clientProxy
|
||||||
self.mediaUploadingPreprocessor = mediaUploadingPreprocessor
|
self.mediaUploadingPreprocessor = mediaUploadingPreprocessor
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
|
|
||||||
super.init(initialViewState: UserDetailsEditScreenViewState(userID: clientProxy.userID,
|
super.init(initialViewState: UserDetailsEditScreenViewState(userID: clientProxy.userID,
|
||||||
bindings: .init()), mediaProvider: mediaProvider)
|
bindings: .init()), mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
clientProxy.userAvatarURLPublisher
|
clientProxy.userAvatarURLPublisher
|
||||||
.receive(on: DispatchQueue.main)
|
.receive(on: DispatchQueue.main)
|
||||||
|
|||||||
+1
-2
@@ -115,8 +115,7 @@ struct UserDetailsEditScreen: View {
|
|||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
struct UserDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
|
struct UserDetailsEditScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = UserDetailsEditScreenViewModel(clientProxy: ClientProxyMock(.init(userID: "@stefan:matrix.org")),
|
static let viewModel = UserDetailsEditScreenViewModel(userSession: UserSessionMock(.init(clientProxy: ClientProxyMock(.init(userID: "@stefan:matrix.org")))),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaUploadingPreprocessor: .init(appSettings: ServiceLocator.shared.settings),
|
mediaUploadingPreprocessor: .init(appSettings: ServiceLocator.shared.settings),
|
||||||
userIndicatorController: UserIndicatorControllerMock.default)
|
userIndicatorController: UserIndicatorControllerMock.default)
|
||||||
|
|
||||||
|
|||||||
@@ -82,10 +82,9 @@ final class StartChatScreenCoordinator: CoordinatorProtocol {
|
|||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func presentInviteUsersScreen() {
|
private func presentInviteUsersScreen() {
|
||||||
let inviteParameters = InviteUsersScreenCoordinatorParameters(clientProxy: parameters.userSession.clientProxy,
|
let inviteParameters = InviteUsersScreenCoordinatorParameters(userSession: parameters.userSession,
|
||||||
selectedUsers: selectedUsersPublisher,
|
selectedUsers: selectedUsersPublisher,
|
||||||
roomType: .draft,
|
roomType: .draft,
|
||||||
mediaProvider: parameters.userSession.mediaProvider,
|
|
||||||
userDiscoveryService: parameters.userDiscoveryService,
|
userDiscoveryService: parameters.userDiscoveryService,
|
||||||
userIndicatorController: parameters.userIndicatorController)
|
userIndicatorController: parameters.userIndicatorController)
|
||||||
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
let coordinator = InviteUsersScreenCoordinator(parameters: inviteParameters)
|
||||||
|
|||||||
@@ -11,10 +11,9 @@ import SwiftUI
|
|||||||
import WysiwygComposer
|
import WysiwygComposer
|
||||||
|
|
||||||
struct ThreadTimelineScreenCoordinatorParameters {
|
struct ThreadTimelineScreenCoordinatorParameters {
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let roomProxy: JoinedRoomProxyProtocol
|
let roomProxy: JoinedRoomProxyProtocol
|
||||||
let timelineController: TimelineControllerProtocol
|
let timelineController: TimelineControllerProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
||||||
let emojiProvider: EmojiProviderProtocol
|
let emojiProvider: EmojiProviderProtocol
|
||||||
@@ -60,7 +59,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
|
|
||||||
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
|
||||||
timelineController: parameters.timelineController,
|
timelineController: parameters.timelineController,
|
||||||
mediaProvider: parameters.mediaProvider,
|
userSession: parameters.userSession,
|
||||||
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
mediaPlayerProvider: parameters.mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
@@ -68,8 +67,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
emojiProvider: parameters.emojiProvider,
|
emojiProvider: parameters.emojiProvider,
|
||||||
timelineControllerFactory: parameters.timelineControllerFactory,
|
timelineControllerFactory: parameters.timelineControllerFactory)
|
||||||
clientProxy: parameters.clientProxy)
|
|
||||||
|
|
||||||
let wysiwygViewModel = WysiwygComposerViewModel(minHeight: ComposerConstant.minHeight,
|
let wysiwygViewModel = WysiwygComposerViewModel(minHeight: ComposerConstant.minHeight,
|
||||||
maxCompressedHeight: ComposerConstant.maxHeight,
|
maxCompressedHeight: ComposerConstant.maxHeight,
|
||||||
@@ -80,7 +78,7 @@ final class ThreadTimelineScreenCoordinator: CoordinatorProtocol {
|
|||||||
roomProxy: parameters.roomProxy,
|
roomProxy: parameters.roomProxy,
|
||||||
wysiwygViewModel: wysiwygViewModel,
|
wysiwygViewModel: wysiwygViewModel,
|
||||||
completionSuggestionService: parameters.completionSuggestionService,
|
completionSuggestionService: parameters.completionSuggestionService,
|
||||||
mediaProvider: parameters.mediaProvider,
|
mediaProvider: parameters.userSession.mediaProvider,
|
||||||
mentionDisplayHelper: ComposerMentionDisplayHelper(timelineContext: timelineViewModel.context),
|
mentionDisplayHelper: ComposerMentionDisplayHelper(timelineContext: timelineViewModel.context),
|
||||||
appSettings: parameters.appSettings,
|
appSettings: parameters.appSettings,
|
||||||
analyticsService: parameters.analytics,
|
analyticsService: parameters.analytics,
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ enum TimelineInteractionHandlerAction {
|
|||||||
class TimelineInteractionHandler {
|
class TimelineInteractionHandler {
|
||||||
private let roomProxy: JoinedRoomProxyProtocol
|
private let roomProxy: JoinedRoomProxyProtocol
|
||||||
private let timelineController: TimelineControllerProtocol
|
private let timelineController: TimelineControllerProtocol
|
||||||
private let mediaProvider: MediaProviderProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let mediaPlayerProvider: MediaPlayerProviderProtocol
|
private let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
private let voiceMessageRecorder: VoiceMessageRecorderProtocol
|
private let voiceMessageRecorder: VoiceMessageRecorderProtocol
|
||||||
private let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
private let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
|
||||||
@@ -44,7 +44,6 @@ class TimelineInteractionHandler {
|
|||||||
private let emojiProvider: EmojiProviderProtocol
|
private let emojiProvider: EmojiProviderProtocol
|
||||||
private let timelineControllerFactory: TimelineControllerFactoryProtocol
|
private let timelineControllerFactory: TimelineControllerFactoryProtocol
|
||||||
private let pollInteractionHandler: PollInteractionHandlerProtocol
|
private let pollInteractionHandler: PollInteractionHandlerProtocol
|
||||||
private let clientProxy: ClientProxyProtocol
|
|
||||||
|
|
||||||
private let actionsSubject: PassthroughSubject<TimelineInteractionHandlerAction, Never> = .init()
|
private let actionsSubject: PassthroughSubject<TimelineInteractionHandlerAction, Never> = .init()
|
||||||
var actions: AnyPublisher<TimelineInteractionHandlerAction, Never> {
|
var actions: AnyPublisher<TimelineInteractionHandlerAction, Never> {
|
||||||
@@ -61,7 +60,7 @@ class TimelineInteractionHandler {
|
|||||||
|
|
||||||
init(roomProxy: JoinedRoomProxyProtocol,
|
init(roomProxy: JoinedRoomProxyProtocol,
|
||||||
timelineController: TimelineControllerProtocol,
|
timelineController: TimelineControllerProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaPlayerProvider: MediaPlayerProviderProtocol,
|
mediaPlayerProvider: MediaPlayerProviderProtocol,
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerProtocol,
|
voiceMessageMediaManager: VoiceMessageMediaManagerProtocol,
|
||||||
voiceMessageRecorder: VoiceMessageRecorderProtocol,
|
voiceMessageRecorder: VoiceMessageRecorderProtocol,
|
||||||
@@ -70,11 +69,10 @@ class TimelineInteractionHandler {
|
|||||||
appSettings: AppSettings,
|
appSettings: AppSettings,
|
||||||
analyticsService: AnalyticsService,
|
analyticsService: AnalyticsService,
|
||||||
emojiProvider: EmojiProviderProtocol,
|
emojiProvider: EmojiProviderProtocol,
|
||||||
timelineControllerFactory: TimelineControllerFactoryProtocol,
|
timelineControllerFactory: TimelineControllerFactoryProtocol) {
|
||||||
clientProxy: ClientProxyProtocol) {
|
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
self.timelineController = timelineController
|
self.timelineController = timelineController
|
||||||
self.mediaProvider = mediaProvider
|
self.userSession = userSession
|
||||||
self.mediaPlayerProvider = mediaPlayerProvider
|
self.mediaPlayerProvider = mediaPlayerProvider
|
||||||
self.voiceMessageMediaManager = voiceMessageMediaManager
|
self.voiceMessageMediaManager = voiceMessageMediaManager
|
||||||
self.voiceMessageRecorder = voiceMessageRecorder
|
self.voiceMessageRecorder = voiceMessageRecorder
|
||||||
@@ -84,7 +82,6 @@ class TimelineInteractionHandler {
|
|||||||
self.analyticsService = analyticsService
|
self.analyticsService = analyticsService
|
||||||
self.emojiProvider = emojiProvider
|
self.emojiProvider = emojiProvider
|
||||||
self.timelineControllerFactory = timelineControllerFactory
|
self.timelineControllerFactory = timelineControllerFactory
|
||||||
self.clientProxy = clientProxy
|
|
||||||
|
|
||||||
pollInteractionHandler = PollInteractionHandler(analyticsService: analyticsService,
|
pollInteractionHandler = PollInteractionHandler(analyticsService: analyticsService,
|
||||||
timelineController: timelineController)
|
timelineController: timelineController)
|
||||||
@@ -582,14 +579,14 @@ class TimelineInteractionHandler {
|
|||||||
presentation: newTimelinePresentation,
|
presentation: newTimelinePresentation,
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
timelineItemFactory: timelineItemFactory,
|
timelineItemFactory: timelineItemFactory,
|
||||||
mediaProvider: mediaProvider) else {
|
mediaProvider: userSession.mediaProvider) else {
|
||||||
MXLog.error("Failed presenting media timeline")
|
MXLog.error("Failed presenting media timeline")
|
||||||
return .none
|
return .none
|
||||||
}
|
}
|
||||||
|
|
||||||
let timelineViewModel = TimelineViewModel(roomProxy: roomProxy,
|
let timelineViewModel = TimelineViewModel(roomProxy: roomProxy,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: mediaProvider,
|
userSession: userSession,
|
||||||
mediaPlayerProvider: mediaPlayerProvider,
|
mediaPlayerProvider: mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: voiceMessageMediaManager,
|
voiceMessageMediaManager: voiceMessageMediaManager,
|
||||||
userIndicatorController: userIndicatorController,
|
userIndicatorController: userIndicatorController,
|
||||||
@@ -597,8 +594,7 @@ class TimelineInteractionHandler {
|
|||||||
appSettings: appSettings,
|
appSettings: appSettings,
|
||||||
analyticsService: analyticsService,
|
analyticsService: analyticsService,
|
||||||
emojiProvider: emojiProvider,
|
emojiProvider: emojiProvider,
|
||||||
timelineControllerFactory: timelineControllerFactory,
|
timelineControllerFactory: timelineControllerFactory)
|
||||||
clientProxy: clientProxy)
|
|
||||||
|
|
||||||
return .displayMediaPreview(item: item, timelineViewModel: .new(timelineViewModel))
|
return .displayMediaPreview(item: item, timelineViewModel: .new(timelineViewModel))
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
|
|
||||||
private let roomProxy: JoinedRoomProxyProtocol
|
private let roomProxy: JoinedRoomProxyProtocol
|
||||||
private let timelineController: TimelineControllerProtocol
|
private let timelineController: TimelineControllerProtocol
|
||||||
private let mediaProvider: MediaProviderProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let mediaPlayerProvider: MediaPlayerProviderProtocol
|
private let mediaPlayerProvider: MediaPlayerProviderProtocol
|
||||||
private let userIndicatorController: UserIndicatorControllerProtocol
|
private let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
private let appMediator: AppMediatorProtocol
|
private let appMediator: AppMediatorProtocol
|
||||||
@@ -31,7 +31,6 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
private let analyticsService: AnalyticsService
|
private let analyticsService: AnalyticsService
|
||||||
private let emojiProvider: EmojiProviderProtocol
|
private let emojiProvider: EmojiProviderProtocol
|
||||||
private let timelineControllerFactory: TimelineControllerFactoryProtocol
|
private let timelineControllerFactory: TimelineControllerFactoryProtocol
|
||||||
private let clientProxy: ClientProxyProtocol
|
|
||||||
|
|
||||||
private let timelineInteractionHandler: TimelineInteractionHandler
|
private let timelineInteractionHandler: TimelineInteractionHandler
|
||||||
|
|
||||||
@@ -50,7 +49,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
init(roomProxy: JoinedRoomProxyProtocol,
|
init(roomProxy: JoinedRoomProxyProtocol,
|
||||||
focussedEventID: String? = nil,
|
focussedEventID: String? = nil,
|
||||||
timelineController: TimelineControllerProtocol,
|
timelineController: TimelineControllerProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaPlayerProvider: MediaPlayerProviderProtocol,
|
mediaPlayerProvider: MediaPlayerProviderProtocol,
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerProtocol,
|
voiceMessageMediaManager: VoiceMessageMediaManagerProtocol,
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol,
|
||||||
@@ -58,25 +57,23 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
appSettings: AppSettings,
|
appSettings: AppSettings,
|
||||||
analyticsService: AnalyticsService,
|
analyticsService: AnalyticsService,
|
||||||
emojiProvider: EmojiProviderProtocol,
|
emojiProvider: EmojiProviderProtocol,
|
||||||
timelineControllerFactory: TimelineControllerFactoryProtocol,
|
timelineControllerFactory: TimelineControllerFactoryProtocol) {
|
||||||
clientProxy: ClientProxyProtocol) {
|
|
||||||
self.timelineController = timelineController
|
|
||||||
self.mediaProvider = mediaProvider
|
|
||||||
self.mediaPlayerProvider = mediaPlayerProvider
|
|
||||||
self.roomProxy = roomProxy
|
self.roomProxy = roomProxy
|
||||||
|
self.timelineController = timelineController
|
||||||
|
self.userSession = userSession
|
||||||
|
self.mediaPlayerProvider = mediaPlayerProvider
|
||||||
self.appSettings = appSettings
|
self.appSettings = appSettings
|
||||||
self.analyticsService = analyticsService
|
self.analyticsService = analyticsService
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
self.appMediator = appMediator
|
self.appMediator = appMediator
|
||||||
self.emojiProvider = emojiProvider
|
self.emojiProvider = emojiProvider
|
||||||
self.timelineControllerFactory = timelineControllerFactory
|
self.timelineControllerFactory = timelineControllerFactory
|
||||||
self.clientProxy = clientProxy
|
|
||||||
|
|
||||||
let voiceMessageRecorder = VoiceMessageRecorder(audioRecorder: AudioRecorder(), mediaPlayerProvider: mediaPlayerProvider)
|
let voiceMessageRecorder = VoiceMessageRecorder(audioRecorder: AudioRecorder(), mediaPlayerProvider: mediaPlayerProvider)
|
||||||
|
|
||||||
timelineInteractionHandler = TimelineInteractionHandler(roomProxy: roomProxy,
|
timelineInteractionHandler = TimelineInteractionHandler(roomProxy: roomProxy,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: mediaProvider,
|
userSession: userSession,
|
||||||
mediaPlayerProvider: mediaPlayerProvider,
|
mediaPlayerProvider: mediaPlayerProvider,
|
||||||
voiceMessageMediaManager: voiceMessageMediaManager,
|
voiceMessageMediaManager: voiceMessageMediaManager,
|
||||||
voiceMessageRecorder: voiceMessageRecorder,
|
voiceMessageRecorder: voiceMessageRecorder,
|
||||||
@@ -85,10 +82,9 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
appSettings: appSettings,
|
appSettings: appSettings,
|
||||||
analyticsService: analyticsService,
|
analyticsService: analyticsService,
|
||||||
emojiProvider: emojiProvider,
|
emojiProvider: emojiProvider,
|
||||||
timelineControllerFactory: timelineControllerFactory,
|
timelineControllerFactory: timelineControllerFactory)
|
||||||
clientProxy: clientProxy)
|
|
||||||
|
|
||||||
let hideTimelineMedia = switch clientProxy.timelineMediaVisibilityPublisher.value {
|
let hideTimelineMedia = switch userSession.clientProxy.timelineMediaVisibilityPublisher.value {
|
||||||
case .always:
|
case .always:
|
||||||
false
|
false
|
||||||
case .privateOnly:
|
case .privateOnly:
|
||||||
@@ -109,7 +105,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
emojiProvider: emojiProvider,
|
emojiProvider: emojiProvider,
|
||||||
mapTilerConfiguration: appSettings.mapTilerConfiguration,
|
mapTilerConfiguration: appSettings.mapTilerConfiguration,
|
||||||
bindings: .init(reactionsCollapsed: [:])),
|
bindings: .init(reactionsCollapsed: [:])),
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
if focussedEventID != nil {
|
if focussedEventID != nil {
|
||||||
// The timeline controller will start loading a detached timeline.
|
// The timeline controller will start loading a detached timeline.
|
||||||
@@ -132,11 +128,11 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
state.roomNameForIDResolver = { [weak self] roomID in
|
state.roomNameForIDResolver = { [weak self] roomID in
|
||||||
self?.clientProxy.roomSummaryForIdentifier(roomID)?.name
|
self?.userSession.clientProxy.roomSummaryForIdentifier(roomID)?.name
|
||||||
}
|
}
|
||||||
|
|
||||||
state.roomNameForAliasResolver = { [weak self] alias in
|
state.roomNameForAliasResolver = { [weak self] alias in
|
||||||
self?.clientProxy.roomSummaryForAlias(alias)?.name
|
self?.userSession.clientProxy.roomSummaryForAlias(alias)?.name
|
||||||
}
|
}
|
||||||
|
|
||||||
state.timelineState.paginationState = timelineController.paginationState
|
state.timelineState.paginationState = timelineController.paginationState
|
||||||
@@ -290,7 +286,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
userIndicatorController: userIndicatorController,
|
userIndicatorController: userIndicatorController,
|
||||||
analyticsService: analyticsService,
|
analyticsService: analyticsService,
|
||||||
mediaProvider: mediaProvider)
|
mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
viewModel.actions.sink { [weak self] action in
|
viewModel.actions.sink { [weak self] action in
|
||||||
guard let self else { return }
|
guard let self else { return }
|
||||||
@@ -509,7 +505,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
.weakAssign(to: \.state.areThreadsEnabled, on: self)
|
.weakAssign(to: \.state.areThreadsEnabled, on: self)
|
||||||
.store(in: &cancellables)
|
.store(in: &cancellables)
|
||||||
|
|
||||||
clientProxy.timelineMediaVisibilityPublisher
|
userSession.clientProxy.timelineMediaVisibilityPublisher
|
||||||
.removeDuplicates()
|
.removeDuplicates()
|
||||||
.flatMap { [weak self] timelineMediaVisibility -> AnyPublisher<Bool, Never> in
|
.flatMap { [weak self] timelineMediaVisibility -> AnyPublisher<Bool, Never> in
|
||||||
switch timelineMediaVisibility {
|
switch timelineMediaVisibility {
|
||||||
@@ -738,7 +734,7 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
|
|
||||||
return TimelineMediaPreviewViewModel(initialItem: item,
|
return TimelineMediaPreviewViewModel(initialItem: item,
|
||||||
timelineViewModel: timelineViewModel,
|
timelineViewModel: timelineViewModel,
|
||||||
mediaProvider: mediaProvider,
|
mediaProvider: userSession.mediaProvider,
|
||||||
photoLibraryManager: PhotoLibraryManager(),
|
photoLibraryManager: PhotoLibraryManager(),
|
||||||
userIndicatorController: userIndicatorController,
|
userIndicatorController: userIndicatorController,
|
||||||
appMediator: appMediator)
|
appMediator: appMediator)
|
||||||
@@ -928,18 +924,18 @@ class TimelineViewModel: TimelineViewModelType, TimelineViewModelProtocol {
|
|||||||
let pillViewState: PillViewState
|
let pillViewState: PillViewState
|
||||||
switch room {
|
switch room {
|
||||||
case .roomAlias(let alias):
|
case .roomAlias(let alias):
|
||||||
let roomSummary = clientProxy.roomSummaryForAlias(alias)
|
let roomSummary = userSession.clientProxy.roomSummaryForAlias(alias)
|
||||||
pillViewState = .reference(displayText: PillUtilities.eventPillDisplayText(roomName: roomSummary?.name, rawRoomText: alias))
|
pillViewState = .reference(displayText: PillUtilities.eventPillDisplayText(roomName: roomSummary?.name, rawRoomText: alias))
|
||||||
case .roomID(let id):
|
case .roomID(let id):
|
||||||
let roomSummary = clientProxy.roomSummaryForIdentifier(id)
|
let roomSummary = userSession.clientProxy.roomSummaryForIdentifier(id)
|
||||||
pillViewState = .reference(displayText: PillUtilities.eventPillDisplayText(roomName: roomSummary?.name, rawRoomText: id))
|
pillViewState = .reference(displayText: PillUtilities.eventPillDisplayText(roomName: roomSummary?.name, rawRoomText: id))
|
||||||
}
|
}
|
||||||
pillContext.viewState = pillViewState
|
pillContext.viewState = pillViewState
|
||||||
case .roomAlias(let alias):
|
case .roomAlias(let alias):
|
||||||
let roomSummary = clientProxy.roomSummaryForAlias(alias)
|
let roomSummary = userSession.clientProxy.roomSummaryForAlias(alias)
|
||||||
pillContext.viewState = .reference(displayText: PillUtilities.roomPillDisplayText(roomName: roomSummary?.name, rawRoomText: alias))
|
pillContext.viewState = .reference(displayText: PillUtilities.roomPillDisplayText(roomName: roomSummary?.name, rawRoomText: alias))
|
||||||
case .roomID(let id):
|
case .roomID(let id):
|
||||||
let roomSummary = clientProxy.roomSummaryForIdentifier(id)
|
let roomSummary = userSession.clientProxy.roomSummaryForIdentifier(id)
|
||||||
pillContext.viewState = .reference(displayText: PillUtilities.roomPillDisplayText(roomName: roomSummary?.name, rawRoomText: id))
|
pillContext.viewState = .reference(displayText: PillUtilities.roomPillDisplayText(roomName: roomSummary?.name, rawRoomText: id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1003,7 +999,7 @@ extension TimelineViewModel {
|
|||||||
return TimelineViewModel(roomProxy: roomProxy,
|
return TimelineViewModel(roomProxy: roomProxy,
|
||||||
focussedEventID: nil,
|
focussedEventID: nil,
|
||||||
timelineController: timelineController ?? MockTimelineController(timelineKind: timelineKind),
|
timelineController: timelineController ?? MockTimelineController(timelineKind: timelineKind),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -1011,8 +1007,7 @@ extension TimelineViewModel {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: clientProxyMock)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ struct ReadReceiptsSummaryView_Previews: PreviewProvider, TestablePreview {
|
|||||||
let roomProxyMock = JoinedRoomProxyMock(.init(name: "Room", members: members))
|
let roomProxyMock = JoinedRoomProxyMock(.init(name: "Room", members: members))
|
||||||
let mock = TimelineViewModel(roomProxy: roomProxyMock,
|
let mock = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock(),
|
||||||
@@ -53,8 +53,7 @@ struct ReadReceiptsSummaryView_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
return mock
|
return mock
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview
|
|||||||
return TimelineViewModel(roomProxy: roomProxy,
|
return TimelineViewModel(roomProxy: roomProxy,
|
||||||
focussedEventID: nil,
|
focussedEventID: nil,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -342,8 +342,7 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
}()
|
}()
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ struct TimelineReadReceiptsView_Previews: PreviewProvider, TestablePreview {
|
|||||||
|
|
||||||
static let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Test", members: members)),
|
static let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "Test", members: members)),
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -88,8 +88,7 @@ struct TimelineReadReceiptsView_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
static let singleReceipt = [ReadReceipt(userID: RoomMemberProxyMock.mockAlice.userID, formattedTimestamp: "Now")]
|
static let singleReceipt = [ReadReceipt(userID: RoomMemberProxyMock.mockAlice.userID, formattedTimestamp: "Now")]
|
||||||
static let doubleReceipt = [ReadReceipt(userID: RoomMemberProxyMock.mockAlice.userID, formattedTimestamp: "Now"),
|
static let doubleReceipt = [ReadReceipt(userID: RoomMemberProxyMock.mockAlice.userID, formattedTimestamp: "Now"),
|
||||||
|
|||||||
+2
-3
@@ -90,7 +90,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
|
|||||||
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
focussedEventID: focussedEventID,
|
focussedEventID: focussedEventID,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -98,8 +98,7 @@ struct HighlightedTimelineItemTimeline_Previews: PreviewProvider {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ struct TimelineView_Previews: PreviewProvider, TestablePreview {
|
|||||||
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
static let roomViewModel = RoomScreenViewModel.mock(roomProxyMock: roomProxyMock)
|
||||||
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
static let timelineViewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -150,8 +150,7 @@ struct TimelineView_Previews: PreviewProvider, TestablePreview {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ import SwiftUI
|
|||||||
struct UserProfileScreenCoordinatorParameters {
|
struct UserProfileScreenCoordinatorParameters {
|
||||||
let userID: String
|
let userID: String
|
||||||
let isPresentedModally: Bool
|
let isPresentedModally: Bool
|
||||||
let clientProxy: ClientProxyProtocol
|
let userSession: UserSessionProtocol
|
||||||
let mediaProvider: MediaProviderProtocol
|
|
||||||
let userIndicatorController: UserIndicatorControllerProtocol
|
let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
let analytics: AnalyticsService
|
let analytics: AnalyticsService
|
||||||
}
|
}
|
||||||
@@ -36,8 +35,7 @@ final class UserProfileScreenCoordinator: CoordinatorProtocol {
|
|||||||
init(parameters: UserProfileScreenCoordinatorParameters) {
|
init(parameters: UserProfileScreenCoordinatorParameters) {
|
||||||
viewModel = UserProfileScreenViewModel(userID: parameters.userID,
|
viewModel = UserProfileScreenViewModel(userID: parameters.userID,
|
||||||
isPresentedModally: parameters.isPresentedModally,
|
isPresentedModally: parameters.isPresentedModally,
|
||||||
clientProxy: parameters.clientProxy,
|
userSession: parameters.userSession,
|
||||||
mediaProvider: parameters.mediaProvider,
|
|
||||||
userIndicatorController: parameters.userIndicatorController,
|
userIndicatorController: parameters.userIndicatorController,
|
||||||
analytics: parameters.analytics)
|
analytics: parameters.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import SwiftUI
|
|||||||
typealias UserProfileScreenViewModelType = StateStoreViewModelV2<UserProfileScreenViewState, UserProfileScreenViewAction>
|
typealias UserProfileScreenViewModelType = StateStoreViewModelV2<UserProfileScreenViewState, UserProfileScreenViewAction>
|
||||||
|
|
||||||
class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScreenViewModelProtocol {
|
class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScreenViewModelProtocol {
|
||||||
private let clientProxy: ClientProxyProtocol
|
private let userSession: UserSessionProtocol
|
||||||
private let mediaProvider: MediaProviderProtocol
|
|
||||||
private let userIndicatorController: UserIndicatorControllerProtocol
|
private let userIndicatorController: UserIndicatorControllerProtocol
|
||||||
private let analytics: AnalyticsService
|
private let analytics: AnalyticsService
|
||||||
|
|
||||||
@@ -24,21 +23,19 @@ class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScr
|
|||||||
|
|
||||||
init(userID: String,
|
init(userID: String,
|
||||||
isPresentedModally: Bool,
|
isPresentedModally: Bool,
|
||||||
clientProxy: ClientProxyProtocol,
|
userSession: UserSessionProtocol,
|
||||||
mediaProvider: MediaProviderProtocol,
|
|
||||||
userIndicatorController: UserIndicatorControllerProtocol,
|
userIndicatorController: UserIndicatorControllerProtocol,
|
||||||
analytics: AnalyticsService) {
|
analytics: AnalyticsService) {
|
||||||
self.clientProxy = clientProxy
|
self.userSession = userSession
|
||||||
self.mediaProvider = mediaProvider
|
|
||||||
self.userIndicatorController = userIndicatorController
|
self.userIndicatorController = userIndicatorController
|
||||||
self.analytics = analytics
|
self.analytics = analytics
|
||||||
|
|
||||||
let initialViewState = UserProfileScreenViewState(userID: userID,
|
let initialViewState = UserProfileScreenViewState(userID: userID,
|
||||||
isOwnUser: userID == clientProxy.userID,
|
isOwnUser: userID == userSession.clientProxy.userID,
|
||||||
isPresentedModally: isPresentedModally,
|
isPresentedModally: isPresentedModally,
|
||||||
bindings: .init())
|
bindings: .init())
|
||||||
|
|
||||||
super.init(initialViewState: initialViewState, mediaProvider: mediaProvider)
|
super.init(initialViewState: initialViewState, mediaProvider: userSession.mediaProvider)
|
||||||
|
|
||||||
showLoadingIndicator(allowsInteraction: true)
|
showLoadingIndicator(allowsInteraction: true)
|
||||||
Task {
|
Task {
|
||||||
@@ -74,15 +71,15 @@ class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScr
|
|||||||
// MARK: - Private
|
// MARK: - Private
|
||||||
|
|
||||||
private func loadProfile() async {
|
private func loadProfile() async {
|
||||||
async let profileResult = clientProxy.profile(for: state.userID)
|
async let profileResult = userSession.clientProxy.profile(for: state.userID)
|
||||||
async let identityResult = clientProxy.userIdentity(for: state.userID)
|
async let identityResult = userSession.clientProxy.userIdentity(for: state.userID)
|
||||||
|
|
||||||
switch await profileResult {
|
switch await profileResult {
|
||||||
case .success(let userProfile):
|
case .success(let userProfile):
|
||||||
state.userProfile = userProfile
|
state.userProfile = userProfile
|
||||||
state.permalink = (try? matrixToUserPermalink(userId: state.userID)).flatMap(URL.init(string:))
|
state.permalink = (try? matrixToUserPermalink(userId: state.userID)).flatMap(URL.init(string:))
|
||||||
|
|
||||||
switch clientProxy.directRoomForUserID(userProfile.userID) {
|
switch userSession.clientProxy.directRoomForUserID(userProfile.userID) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
state.dmRoomID = roomID
|
state.dmRoomID = roomID
|
||||||
case .failure:
|
case .failure:
|
||||||
@@ -108,7 +105,7 @@ class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScr
|
|||||||
|
|
||||||
// We don't actually know the mime type here, assume it's an image.
|
// We don't actually know the mime type here, assume it's an image.
|
||||||
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
if let mediaSource = try? MediaSourceProxy(url: url, mimeType: "image/jpeg"),
|
||||||
case let .success(file) = await mediaProvider.loadFileFromSource(mediaSource) {
|
case let .success(file) = await userSession.mediaProvider.loadFileFromSource(mediaSource) {
|
||||||
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: userProfile.displayName)
|
state.bindings.mediaPreviewItem = MediaPreviewItem(file: file, title: userProfile.displayName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +116,7 @@ class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScr
|
|||||||
showLoadingIndicator(allowsInteraction: false)
|
showLoadingIndicator(allowsInteraction: false)
|
||||||
defer { hideLoadingIndicator() }
|
defer { hideLoadingIndicator() }
|
||||||
|
|
||||||
switch clientProxy.directRoomForUserID(userProfile.userID) {
|
switch userSession.clientProxy.directRoomForUserID(userProfile.userID) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
if let roomID {
|
if let roomID {
|
||||||
actionsSubject.send(.openDirectChat(roomID: roomID))
|
actionsSubject.send(.openDirectChat(roomID: roomID))
|
||||||
@@ -137,7 +134,7 @@ class UserProfileScreenViewModel: UserProfileScreenViewModelType, UserProfileScr
|
|||||||
showLoadingIndicator(allowsInteraction: false)
|
showLoadingIndicator(allowsInteraction: false)
|
||||||
defer { hideLoadingIndicator() }
|
defer { hideLoadingIndicator() }
|
||||||
|
|
||||||
switch await clientProxy.createDirectRoom(with: userProfile.userID, expectedRoomName: userProfile.displayName) {
|
switch await userSession.clientProxy.createDirectRoom(with: userProfile.userID, expectedRoomName: userProfile.displayName) {
|
||||||
case .success(let roomID):
|
case .success(let roomID):
|
||||||
analytics.trackCreatedRoom(isDM: true)
|
analytics.trackCreatedRoom(isDM: true)
|
||||||
actionsSubject.send(.openDirectChat(roomID: roomID))
|
actionsSubject.send(.openDirectChat(roomID: roomID))
|
||||||
|
|||||||
@@ -135,8 +135,7 @@ struct UserProfileScreen_Previews: PreviewProvider, TestablePreview {
|
|||||||
|
|
||||||
return UserProfileScreenViewModel(userID: userID,
|
return UserProfileScreenViewModel(userID: userID,
|
||||||
isPresentedModally: false,
|
isPresentedModally: false,
|
||||||
clientProxy: clientProxyMock,
|
userSession: UserSessionMock(.init(clientProxy: clientProxyMock)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,10 +259,9 @@ class MockScreen: Identifiable {
|
|||||||
return navigationStackCoordinator
|
return navigationStackCoordinator
|
||||||
case .roomPlainNoAvatar:
|
case .roomPlainNoAvatar:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Some room name", avatarURL: nil)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Some room name", avatarURL: nil)),
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -282,10 +281,9 @@ class MockScreen: Identifiable {
|
|||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -305,10 +303,9 @@ class MockScreen: Identifiable {
|
|||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.default
|
timelineController.timelineItems = RoomTimelineItemFixtures.default
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -327,10 +324,9 @@ class MockScreen: Identifiable {
|
|||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunkWithReadReceipts
|
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunkWithReadReceipts
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "New room", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -352,10 +348,9 @@ class MockScreen: Identifiable {
|
|||||||
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
||||||
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunk]
|
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.singleMessageChunk]
|
||||||
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -377,10 +372,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController(listenForSignals: true)
|
let timelineController = MockTimelineController(listenForSignals: true)
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.smallChunk
|
||||||
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Small timeline, paginating", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -401,10 +395,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController(listenForSignals: true)
|
let timelineController = MockTimelineController(listenForSignals: true)
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
||||||
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -427,10 +420,9 @@ class MockScreen: Identifiable {
|
|||||||
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
||||||
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
timelineController.backPaginationResponses = [RoomTimelineItemFixtures.largeChunk]
|
||||||
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -452,10 +444,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController(listenForSignals: true)
|
let timelineController = MockTimelineController(listenForSignals: true)
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.largeChunk
|
||||||
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
timelineController.incomingItems = [RoomTimelineItemFixtures.incomingMessage]
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Large timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -476,10 +467,9 @@ class MockScreen: Identifiable {
|
|||||||
|
|
||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.permalinkChunk
|
timelineController.timelineItems = RoomTimelineItemFixtures.permalinkChunk
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Timeline highlight", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Timeline highlight", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -514,10 +504,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.disclosedPolls
|
timelineController.timelineItems = RoomTimelineItemFixtures.disclosedPolls
|
||||||
timelineController.incomingItems = []
|
timelineController.incomingItems = []
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -539,10 +528,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.undisclosedPolls
|
timelineController.timelineItems = RoomTimelineItemFixtures.undisclosedPolls
|
||||||
timelineController.incomingItems = []
|
timelineController.incomingItems = []
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -564,10 +552,9 @@ class MockScreen: Identifiable {
|
|||||||
let timelineController = MockTimelineController()
|
let timelineController = MockTimelineController()
|
||||||
timelineController.timelineItems = RoomTimelineItemFixtures.outgoingPolls
|
timelineController.timelineItems = RoomTimelineItemFixtures.outgoingPolls
|
||||||
timelineController.incomingItems = []
|
timelineController.incomingItems = []
|
||||||
let parameters = RoomScreenCoordinatorParameters(clientProxy: ClientProxyMock(.init()),
|
let parameters = RoomScreenCoordinatorParameters(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "Polls timeline", avatarURL: .mockMXCAvatar)),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
@@ -631,9 +618,8 @@ class MockScreen: Identifiable {
|
|||||||
case .roomMembersListScreenPendingInvites:
|
case .roomMembersListScreenPendingInvites:
|
||||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||||
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
|
let members: [RoomMemberProxyMock] = [.mockInvitedAlice, .mockBob, .mockCharlie]
|
||||||
let coordinator = RoomMembersListScreenCoordinator(parameters: .init(clientProxy: ClientProxyMock(.init()),
|
let coordinator = RoomMembersListScreenCoordinator(parameters: .init(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: JoinedRoomProxyMock(.init(name: "test", members: members)),
|
roomProxy: JoinedRoomProxyMock(.init(name: "test", members: members)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics))
|
analytics: ServiceLocator.shared.analytics))
|
||||||
navigationStackCoordinator.setRootCoordinator(coordinator)
|
navigationStackCoordinator.setRootCoordinator(coordinator)
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ class BlockedUsersScreenViewModelTests: XCTestCase {
|
|||||||
let clientProxy = ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID))
|
let clientProxy = ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID))
|
||||||
|
|
||||||
let viewModel = BlockedUsersScreenViewModel(hideProfiles: true,
|
let viewModel = BlockedUsersScreenViewModel(hideProfiles: true,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||||
|
|
||||||
let deferred = deferFailure(viewModel.context.observe(\.viewState.blockedUsers), timeout: 1) { $0.contains { $0.displayName != nil } }
|
let deferred = deferFailure(viewModel.context.observe(\.viewState.blockedUsers), timeout: 1) { $0.contains { $0.displayName != nil } }
|
||||||
@@ -31,8 +30,7 @@ class BlockedUsersScreenViewModelTests: XCTestCase {
|
|||||||
let clientProxy = ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID))
|
let clientProxy = ClientProxyMock(.init(userID: RoomMemberProxyMock.mockMe.userID))
|
||||||
|
|
||||||
let viewModel = BlockedUsersScreenViewModel(hideProfiles: false,
|
let viewModel = BlockedUsersScreenViewModel(hideProfiles: false,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||||
|
|
||||||
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.blockedUsers)) { $0.contains { $0.displayName != nil } }
|
let deferred = deferFulfillment(viewModel.context.observe(\.viewState.blockedUsers)) { $0.contains { $0.displayName != nil } }
|
||||||
|
|||||||
@@ -89,10 +89,9 @@ class InviteUsersScreenViewModelTests: XCTestCase {
|
|||||||
userDiscoveryService = UserDiscoveryServiceMock()
|
userDiscoveryService = UserDiscoveryServiceMock()
|
||||||
userDiscoveryService.searchProfilesWithReturnValue = .success([])
|
userDiscoveryService.searchProfilesWithReturnValue = .success([])
|
||||||
usersSubject.send([])
|
usersSubject.send([])
|
||||||
let viewModel = InviteUsersScreenViewModel(clientProxy: ClientProxyMock(.init()),
|
let viewModel = InviteUsersScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
selectedUsers: usersSubject.asCurrentValuePublisher(),
|
selectedUsers: usersSubject.asCurrentValuePublisher(),
|
||||||
roomType: roomType,
|
roomType: roomType,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userDiscoveryService: userDiscoveryService,
|
userDiscoveryService: userDiscoveryService,
|
||||||
userIndicatorController: UserIndicatorControllerMock())
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
viewModel.state.usersSection = .init(type: .suggestions, users: [.mockAlice, .mockBob, .mockCharlie])
|
viewModel.state.usersSection = .init(type: .suggestions, users: [.mockAlice, .mockBob, .mockCharlie])
|
||||||
|
|||||||
@@ -195,8 +195,7 @@ class JoinRoomScreenViewModelTests: XCTestCase {
|
|||||||
viewModel = JoinRoomScreenViewModel(roomID: "1",
|
viewModel = JoinRoomScreenViewModel(roomID: "1",
|
||||||
via: [],
|
via: [],
|
||||||
appSettings: appSettings,
|
appSettings: appSettings,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
userIndicatorController: ServiceLocator.shared.userIndicatorController)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,9 @@ class MessageForwardingScreenViewModelTests: XCTestCase {
|
|||||||
clientProxy.roomForIdentifierClosure = { .joined(JoinedRoomProxyMock(.init(id: $0))) }
|
clientProxy.roomForIdentifierClosure = { .joined(JoinedRoomProxyMock(.init(id: $0))) }
|
||||||
|
|
||||||
viewModel = MessageForwardingScreenViewModel(forwardingItem: forwardingItem,
|
viewModel = MessageForwardingScreenViewModel(forwardingItem: forwardingItem,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
roomSummaryProvider: RoomSummaryProviderMock(.init(state: .loaded(.mockRooms))),
|
||||||
userIndicatorController: UserIndicatorControllerMock(),
|
userIndicatorController: UserIndicatorControllerMock())
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()))
|
|
||||||
context = viewModel.context
|
context = viewModel.context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ final class NotificationManagerTests: XCTestCase {
|
|||||||
notificationCenter.authorizationStatusReturnValue = .authorized
|
notificationCenter.authorizationStatusReturnValue = .authorized
|
||||||
notificationManager.delegate = self
|
notificationManager.delegate = self
|
||||||
|
|
||||||
notificationManager.setUserSession(UserSessionMock(.init(clientProxy: ClientProxyMock(.init()))))
|
notificationManager.setUserSession(UserSessionMock(.init()))
|
||||||
try await Task.sleep(for: .seconds(1))
|
try await Task.sleep(for: .seconds(1))
|
||||||
|
|
||||||
XCTAssertFalse(authorizationStatusWasGranted)
|
XCTAssertFalse(authorizationStatusWasGranted)
|
||||||
@@ -177,7 +177,7 @@ final class NotificationManagerTests: XCTestCase {
|
|||||||
expectation.fulfill()
|
expectation.fulfill()
|
||||||
}
|
}
|
||||||
|
|
||||||
notificationManager.setUserSession(UserSessionMock(.init(clientProxy: ClientProxyMock(.init()))))
|
notificationManager.setUserSession(UserSessionMock(.init()))
|
||||||
await fulfillment(of: [expectation])
|
await fulfillment(of: [expectation])
|
||||||
|
|
||||||
XCTAssertTrue(authorizationStatusWasGranted)
|
XCTAssertTrue(authorizationStatusWasGranted)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class PillContextTests: XCTestCase {
|
|||||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -27,8 +27,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -50,7 +49,7 @@ class PillContextTests: XCTestCase {
|
|||||||
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
proxyMock.membersPublisher = subject.asCurrentValuePublisher()
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -58,8 +57,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .user(userID: id), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertTrue(context.viewState.isOwnMention)
|
XCTAssertTrue(context.viewState.isOwnMention)
|
||||||
@@ -74,7 +72,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -82,8 +80,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .allUsers, font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .allUsers, font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertTrue(context.viewState.isOwnMention)
|
XCTAssertTrue(context.viewState.isOwnMention)
|
||||||
@@ -98,7 +95,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init(clientProxy: clientMock)),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -106,8 +103,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: clientMock)
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -121,7 +117,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -129,8 +125,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomID("1"), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -148,7 +143,7 @@ class PillContextTests: XCTestCase {
|
|||||||
canonicalAlias: "#foundation-and-empire:matrix.org")
|
canonicalAlias: "#foundation-and-empire:matrix.org")
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init(clientProxy: clientMock)),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -156,8 +151,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: clientMock)
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -171,7 +165,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -179,8 +173,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .roomAlias("#foundation-and-empire:matrix.org"), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -196,7 +189,7 @@ class PillContextTests: XCTestCase {
|
|||||||
clientMock.roomSummaryForIdentifierReturnValue = .mock(id: "1", name: "Foundation 🔭🪐🌌")
|
clientMock.roomSummaryForIdentifierReturnValue = .mock(id: "1", name: "Foundation 🔭🪐🌌")
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init(clientProxy: clientMock)),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -204,8 +197,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: clientMock)
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -219,7 +211,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -227,8 +219,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomID("1")), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -246,7 +237,7 @@ class PillContextTests: XCTestCase {
|
|||||||
canonicalAlias: "#foundation-and-empire:matrix.org")
|
canonicalAlias: "#foundation-and-empire:matrix.org")
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init(clientProxy: clientMock)),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -254,8 +245,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: clientMock)
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
@@ -269,7 +259,7 @@ class PillContextTests: XCTestCase {
|
|||||||
mockController.roomProxy = proxyMock
|
mockController.roomProxy = proxyMock
|
||||||
let mock = TimelineViewModel(roomProxy: proxyMock,
|
let mock = TimelineViewModel(roomProxy: proxyMock,
|
||||||
timelineController: mockController,
|
timelineController: mockController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
@@ -277,8 +267,7 @@ class PillContextTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
let context = PillContext(timelineContext: mock.context, data: PillTextAttachmentData(type: .event(room: .roomAlias("#foundation-and-empire:matrix.org")), font: .preferredFont(forTextStyle: .body)))
|
||||||
|
|
||||||
XCTAssertFalse(context.viewState.isOwnMention)
|
XCTAssertFalse(context.viewState.isOwnMention)
|
||||||
|
|||||||
@@ -111,8 +111,7 @@ class RoomDetailsEditScreenViewModelTests: XCTestCase {
|
|||||||
private func setupViewModel(roomProxyConfiguration: JoinedRoomProxyMockConfiguration) {
|
private func setupViewModel(roomProxyConfiguration: JoinedRoomProxyMockConfiguration) {
|
||||||
userIndicatorController = UserIndicatorControllerMock.default
|
userIndicatorController = UserIndicatorControllerMock.default
|
||||||
viewModel = .init(roomProxy: JoinedRoomProxyMock(roomProxyConfiguration),
|
viewModel = .init(roomProxy: JoinedRoomProxyMock(roomProxyConfiguration),
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
mediaUploadingPreprocessor: MediaUploadingPreprocessor(appSettings: ServiceLocator.shared.settings),
|
||||||
userIndicatorController: userIndicatorController)
|
userIndicatorController: userIndicatorController)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test"))
|
||||||
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
notificationSettingsProxyMock = NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration())
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
@@ -41,8 +40,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -62,8 +60,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -84,8 +81,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -138,8 +134,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -160,8 +155,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -192,8 +186,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -223,8 +216,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, recipient]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -255,8 +247,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isEncrypted: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -288,8 +279,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
joinRule: .public,
|
joinRule: .public,
|
||||||
powerLevelsConfiguration: .init(canUserInvite: false)))
|
powerLevelsConfiguration: .init(canUserInvite: false)))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -306,8 +296,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -359,8 +348,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
||||||
|
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -399,8 +387,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
||||||
|
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -439,8 +426,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
roomProxyMock.infoPublisher = CurrentValueSubject(roomInfoProxyMock).asCurrentValuePublisher()
|
||||||
|
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -460,8 +446,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -481,8 +466,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
notificationSettingsProxy: NotificationSettingsProxyMock(with: NotificationSettingsProxyMockConfiguration()),
|
||||||
@@ -500,8 +484,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
func testNotificationLoadingSettingsFailure() async throws {
|
func testNotificationLoadingSettingsFailure() async throws {
|
||||||
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneThrowableError = NotificationSettingsError.Generic(msg: "error")
|
notificationSettingsProxyMock.getNotificationSettingsRoomIdIsEncryptedIsOneToOneThrowableError = NotificationSettingsError.Generic(msg: "error")
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
@@ -694,8 +677,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedRequests: [KnockRequestProxyMock] = [.init(), .init()]
|
let mockedRequests: [KnockRequestProxyMock] = [.init(), .init()]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
@@ -717,8 +699,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
ServiceLocator.shared.settings.knockingEnabled = true
|
ServiceLocator.shared.settings.knockingEnabled = true
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loading, joinRule: .knock))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loading, joinRule: .knock))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
@@ -742,8 +723,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
joinRule: .knock,
|
joinRule: .knock,
|
||||||
powerLevelsConfiguration: .init(canUserInvite: false)))
|
powerLevelsConfiguration: .init(canUserInvite: false)))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
@@ -767,8 +747,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase {
|
|||||||
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice]
|
let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice]
|
||||||
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers, knockRequestsState: .loaded(mockedRequests), joinRule: .knock))
|
roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers, knockRequestsState: .loaded(mockedRequests), joinRule: .knock))
|
||||||
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
notificationSettingsProxy: notificationSettingsProxyMock,
|
notificationSettingsProxy: notificationSettingsProxyMock,
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -45,8 +44,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
roomMemberProxyMock = RoomMemberProxyMock.mockAlice
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -83,8 +81,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
clientProxy.ignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -120,8 +117,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -156,8 +152,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
clientProxy.unignoreUserReturnValue = .failure(.sdkError(ClientProxyMockError.generic))
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -192,8 +187,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
roomMemberProxyMock = RoomMemberProxyMock.mockMe
|
roomMemberProxyMock = RoomMemberProxyMock.mockMe
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -209,8 +203,7 @@ class RoomMemberDetailsViewModelTests: XCTestCase {
|
|||||||
roomMemberProxyMock = RoomMemberProxyMock.mockIgnored
|
roomMemberProxyMock = RoomMemberProxyMock.mockIgnored
|
||||||
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
viewModel = RoomMemberDetailsScreenViewModel(userID: roomMemberProxyMock.userID,
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
clientProxy: ClientProxyMock(.init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
|
|||||||
@@ -274,9 +274,8 @@ class RoomMembersListScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
private func setup(with members: [RoomMemberProxyMock]) {
|
private func setup(with members: [RoomMemberProxyMock]) {
|
||||||
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
|
roomProxy = JoinedRoomProxyMock(.init(name: "test", members: members))
|
||||||
viewModel = .init(clientProxy: ClientProxyMock(.init()),
|
viewModel = .init(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxy,
|
roomProxy: roomProxy,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
}
|
}
|
||||||
// setup the room proxy actions publisher
|
// setup the room proxy actions publisher
|
||||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -119,10 +118,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
.event(.init(item: EventTimelineItem(configuration: .init(eventID: "test2")), uniqueID: .init("2"))),
|
.event(.init(item: EventTimelineItem(configuration: .init(eventID: "test2")), uniqueID: .init("2"))),
|
||||||
.event(.init(item: EventTimelineItem(configuration: .init(eventID: "test3")), uniqueID: .init("3")))]
|
.event(.init(item: EventTimelineItem(configuration: .init(eventID: "test3")), uniqueID: .init("3")))]
|
||||||
roomProxyMock.pinnedEventsTimelineReturnValue = .success(pinnedTimelineMock)
|
roomProxyMock.pinnedEventsTimelineReturnValue = .success(pinnedTimelineMock)
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: "test1",
|
initialSelectedPinnedEventID: "test1",
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -178,10 +176,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
let infoSubject = CurrentValueSubject<RoomInfoProxyProtocol, Never>(roomInfoProxyMock)
|
let infoSubject = CurrentValueSubject<RoomInfoProxyProtocol, Never>(roomInfoProxyMock)
|
||||||
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
roomProxyMock.underlyingInfoPublisher = infoSubject.asCurrentValuePublisher()
|
||||||
|
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -216,10 +213,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
// Given a room screen with no ongoing call.
|
// Given a room screen with no ongoing call.
|
||||||
let ongoingCallRoomIDSubject = CurrentValueSubject<String?, Never>(nil)
|
let ongoingCallRoomIDSubject = CurrentValueSubject<String?, Never>(nil)
|
||||||
let roomProxyMock = JoinedRoomProxyMock(.init(id: "MyRoomID"))
|
let roomProxyMock = JoinedRoomProxyMock(.init(id: "MyRoomID"))
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: ongoingCallRoomIDSubject.asCurrentValuePublisher(),
|
ongoingCallRoomIDPublisher: ongoingCallRoomIDSubject.asCurrentValuePublisher(),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -262,10 +258,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
expectation.fulfill()
|
expectation.fulfill()
|
||||||
return .success(())
|
return .success(())
|
||||||
}
|
}
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -285,10 +280,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
// This one should be filtered
|
// This one should be filtered
|
||||||
KnockRequestProxyMock(.init(eventID: "2", userID: "@bob:matrix.org", isSeen: true))]),
|
KnockRequestProxyMock(.init(eventID: "2", userID: "@bob:matrix.org", isSeen: true))]),
|
||||||
joinRule: .knock))
|
joinRule: .knock))
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -321,10 +315,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
// This one should be filtered
|
// This one should be filtered
|
||||||
KnockRequestProxyMock(.init(eventID: "2", userID: "@bob:matrix.org"))]),
|
KnockRequestProxyMock(.init(eventID: "2", userID: "@bob:matrix.org"))]),
|
||||||
joinRule: .knock))
|
joinRule: .knock))
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -352,10 +345,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
ServiceLocator.shared.settings.knockingEnabled = true
|
ServiceLocator.shared.settings.knockingEnabled = true
|
||||||
let roomProxyMock = JoinedRoomProxyMock(.init(knockRequestsState: .loading,
|
let roomProxyMock = JoinedRoomProxyMock(.init(knockRequestsState: .loading,
|
||||||
joinRule: .knock))
|
joinRule: .knock))
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
@@ -374,10 +366,9 @@ class RoomScreenViewModelTests: XCTestCase {
|
|||||||
let roomProxyMock = JoinedRoomProxyMock(.init(knockRequestsState: .loaded([KnockRequestProxyMock(.init(eventID: "1", userID: "@alice:matrix.org", displayName: "Alice", reason: "Hello World!"))]),
|
let roomProxyMock = JoinedRoomProxyMock(.init(knockRequestsState: .loaded([KnockRequestProxyMock(.init(eventID: "1", userID: "@alice:matrix.org", displayName: "Alice", reason: "Hello World!"))]),
|
||||||
joinRule: .knock,
|
joinRule: .knock,
|
||||||
powerLevelsConfiguration: .init(canUserInvite: false)))
|
powerLevelsConfiguration: .init(canUserInvite: false)))
|
||||||
let viewModel = RoomScreenViewModel(clientProxy: ClientProxyMock(),
|
let viewModel = RoomScreenViewModel(userSession: UserSessionMock(.init()),
|
||||||
roomProxy: roomProxyMock,
|
roomProxy: roomProxyMock,
|
||||||
initialSelectedPinnedEventID: nil,
|
initialSelectedPinnedEventID: nil,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
ongoingCallRoomIDPublisher: .init(.init(nil)),
|
||||||
appMediator: AppMediatorMock.default,
|
appMediator: AppMediatorMock.default,
|
||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
let viewModel = TimelineViewModel(roomProxy: roomProxy,
|
let viewModel = TimelineViewModel(roomProxy: roomProxy,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -312,8 +312,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
return (viewModel, roomProxy, timelineProxy, timelineController)
|
return (viewModel, roomProxy, timelineProxy, timelineController)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,7 +330,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
timelineController.timelineItems = [message]
|
timelineController.timelineItems = [message]
|
||||||
let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
let viewModel = TimelineViewModel(roomProxy: JoinedRoomProxyMock(.init(name: "", members: [RoomMemberProxyMock.mockAlice, RoomMemberProxyMock.mockCharlie])),
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -339,8 +338,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
let deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
let deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
||||||
value.bindings.readReceiptsSummaryInfo?.orderedReceipts == receipts
|
value.bindings.readReceiptsSummaryInfo?.orderedReceipts == receipts
|
||||||
@@ -356,7 +354,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
RoomMemberProxyMock.mockAlice],
|
RoomMemberProxyMock.mockAlice],
|
||||||
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -364,8 +362,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
var deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
var deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
||||||
value.canCurrentUserKick && value.canCurrentUserBan
|
value.canCurrentUserKick && value.canCurrentUserBan
|
||||||
@@ -393,7 +390,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
RoomMemberProxyMock.mockAlice],
|
RoomMemberProxyMock.mockAlice],
|
||||||
ownUserID: RoomMemberProxyMock.mockAlice.userID)),
|
ownUserID: RoomMemberProxyMock.mockAlice.userID)),
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -401,8 +398,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
var deferredState = deferFulfillment(viewModel.context.$viewState) { value in
|
var deferredState = deferFulfillment(viewModel.context.$viewState) { value in
|
||||||
!value.canCurrentUserKick && !value.canCurrentUserBan
|
!value.canCurrentUserKick && !value.canCurrentUserBan
|
||||||
@@ -430,7 +426,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
RoomMemberProxyMock.mockBanned[0]],
|
RoomMemberProxyMock.mockBanned[0]],
|
||||||
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
ownUserID: RoomMemberProxyMock.mockAdmin.userID)),
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -438,8 +434,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
var deferredState = deferFulfillment(viewModel.context.$viewState) { value in
|
var deferredState = deferFulfillment(viewModel.context.$viewState) { value in
|
||||||
value.canCurrentUserKick && value.canCurrentUserBan
|
value.canCurrentUserKick && value.canCurrentUserBan
|
||||||
@@ -473,7 +468,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -481,8 +476,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
XCTAssertEqual(configuration.pinnedEventIDs, viewModel.context.viewState.pinnedEventIDs)
|
XCTAssertEqual(configuration.pinnedEventIDs, viewModel.context.viewState.pinnedEventIDs)
|
||||||
|
|
||||||
configuration.pinnedEventIDs = ["test1", "test2"]
|
configuration.pinnedEventIDs = ["test1", "test2"]
|
||||||
@@ -502,7 +496,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
let viewModel = TimelineViewModel(roomProxy: roomProxyMock,
|
||||||
timelineController: MockTimelineController(),
|
timelineController: MockTimelineController(),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -510,8 +504,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
|
|
||||||
var deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
var deferred = deferFulfillment(viewModel.context.$viewState) { value in
|
||||||
value.canCurrentUserPin
|
value.canCurrentUserPin
|
||||||
@@ -541,7 +534,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
TimelineViewModel(roomProxy: roomProxy ?? JoinedRoomProxyMock(.init(name: "")),
|
TimelineViewModel(roomProxy: roomProxy ?? JoinedRoomProxyMock(.init(name: "")),
|
||||||
focussedEventID: focussedEventID,
|
focussedEventID: focussedEventID,
|
||||||
timelineController: timelineController,
|
timelineController: timelineController,
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
userSession: UserSessionMock(.init()),
|
||||||
mediaPlayerProvider: MediaPlayerProviderMock(),
|
mediaPlayerProvider: MediaPlayerProviderMock(),
|
||||||
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
voiceMessageMediaManager: VoiceMessageMediaManagerMock(),
|
||||||
userIndicatorController: userIndicatorControllerMock,
|
userIndicatorController: userIndicatorControllerMock,
|
||||||
@@ -549,8 +542,7 @@ class TimelineViewModelTests: XCTestCase {
|
|||||||
appSettings: ServiceLocator.shared.settings,
|
appSettings: ServiceLocator.shared.settings,
|
||||||
analyticsService: ServiceLocator.shared.analytics,
|
analyticsService: ServiceLocator.shared.analytics,
|
||||||
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
emojiProvider: EmojiProvider(appSettings: ServiceLocator.shared.settings),
|
||||||
timelineControllerFactory: TimelineControllerFactoryMock(.init()),
|
timelineControllerFactory: TimelineControllerFactoryMock(.init()))
|
||||||
clientProxy: ClientProxyMock(.init()))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ class UserProfileScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
viewModel = UserProfileScreenViewModel(userID: profile.userID,
|
viewModel = UserProfileScreenViewModel(userID: profile.userID,
|
||||||
isPresentedModally: false,
|
isPresentedModally: false,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
@@ -41,8 +40,7 @@ class UserProfileScreenViewModelTests: XCTestCase {
|
|||||||
|
|
||||||
viewModel = UserProfileScreenViewModel(userID: profile.userID,
|
viewModel = UserProfileScreenViewModel(userID: profile.userID,
|
||||||
isPresentedModally: false,
|
isPresentedModally: false,
|
||||||
clientProxy: clientProxy,
|
userSession: UserSessionMock(.init(clientProxy: clientProxy)),
|
||||||
mediaProvider: MediaProviderMock(configuration: .init()),
|
|
||||||
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
userIndicatorController: ServiceLocator.shared.userIndicatorController,
|
||||||
analytics: ServiceLocator.shared.analytics)
|
analytics: ServiceLocator.shared.analytics)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user