diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 1214d976ef..be814bcb32 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -142,9 +142,9 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol case .showRoomDetails(roomIdentifier: let roomIdentifier): actionsSubject.send(.presentRoomDetails(roomIdentifier: roomIdentifier)) case .leaveRoom(roomIdentifier: let roomIdentifier): - startLeaveRoomProcess(roomId: roomIdentifier) + startLeaveRoomProcess(roomID: roomIdentifier) case .confirmLeaveRoom(roomIdentifier: let roomIdentifier): - leaveRoom(roomId: roomIdentifier) + leaveRoom(roomID: roomIdentifier) case .showSettings: actionsSubject.send(.presentSettingsScreen) case .confirmRecoveryKey: @@ -382,38 +382,38 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol private static let leaveRoomLoadingID = "LeaveRoomLoading" - private func startLeaveRoomProcess(roomId: String) { + private func startLeaveRoomProcess(roomID: String) { Task { defer { userIndicatorController.retractIndicatorWithId(Self.leaveRoomLoadingID) } userIndicatorController.submitIndicator(UserIndicator(id: Self.leaveRoomLoadingID, type: .modal, title: L10n.commonLoading, persistent: true)) - guard case let .joined(roomProxy) = await userSession.clientProxy.roomForIdentifier(roomId) else { + guard case let .joined(roomProxy) = await userSession.clientProxy.roomForIdentifier(roomID) else { state.bindings.alertInfo = AlertInfo(id: UUID(), title: L10n.errorUnknown) return } if roomProxy.isPublic { - state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomId, isDM: roomProxy.isEncryptedOneToOneRoom, state: .public) + state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isEncryptedOneToOneRoom, state: .public) } else { state.bindings.leaveRoomAlertItem = if roomProxy.joinedMembersCount > 1 { - LeaveRoomAlertItem(roomID: roomId, isDM: roomProxy.isEncryptedOneToOneRoom, state: .private) + LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isEncryptedOneToOneRoom, state: .private) } else { - LeaveRoomAlertItem(roomID: roomId, isDM: roomProxy.isEncryptedOneToOneRoom, state: .empty) + LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isEncryptedOneToOneRoom, state: .empty) } } } } - private func leaveRoom(roomId: String) { + private func leaveRoom(roomID: String) { Task { defer { userIndicatorController.retractIndicatorWithId(Self.leaveRoomLoadingID) } userIndicatorController.submitIndicator(UserIndicator(id: Self.leaveRoomLoadingID, type: .modal, title: L10n.commonLeavingRoom, persistent: true)) - guard case .joined = await userSession.clientProxy.roomForIdentifier(roomId) else { + guard case .joined = await userSession.clientProxy.roomForIdentifier(roomID) else { state.bindings.alertInfo = AlertInfo(id: UUID(), title: L10n.errorUnknown) return } @@ -422,7 +422,7 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol type: .toast, title: L10n.commonCurrentUserLeftRoom, iconName: "checkmark")) - actionsSubject.send(.roomLeft(roomIdentifier: roomId)) + actionsSubject.send(.roomLeft(roomIdentifier: roomID)) } } diff --git a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift index 251cbd0863..f0b6cab792 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/JoinRoomScreenViewModel.swift @@ -201,7 +201,7 @@ class JoinRoomScreenViewModel: JoinRoomScreenViewModelType, JoinRoomScreenViewMo userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) - guard case let .invited(roomProxy) = await clientProxy.roomForIdentifier(roomID) else { + guard case let .invited(roomProxy) = room else { userIndicatorController.submitIndicator(.init(title: L10n.errorUnknown)) return } diff --git a/ElementX/Sources/Services/Room/InvitedRoomProxy.swift b/ElementX/Sources/Services/Room/InvitedRoomProxy.swift index 818ffcf390..4ed072425a 100644 --- a/ElementX/Sources/Services/Room/InvitedRoomProxy.swift +++ b/ElementX/Sources/Services/Room/InvitedRoomProxy.swift @@ -22,6 +22,8 @@ class InvitedRoomProxy: InvitedRoomProxyProtocol { private let roomListItem: RoomListItemProtocol private let room: RoomProtocol + // A room identifier is constant and lazy stops it from being fetched + // multiple times over FFI lazy var id: String = room.id() var canonicalAlias: String? { diff --git a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift index 3d1c998c60..bc1a57b4be 100644 --- a/ElementX/Sources/Services/Room/JoinedRoomProxy.swift +++ b/ElementX/Sources/Services/Room/JoinedRoomProxy.swift @@ -82,6 +82,8 @@ class JoinedRoomProxy: JoinedRoomProxyProtocol { actionsSubject.eraseToAnyPublisher() } + // A room identifier is constant and lazy stops it from being fetched + // multiple times over FFI lazy var id: String = room.id() var canonicalAlias: String? {