diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 06767238e..d683ec3f3 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -8748,7 +8748,7 @@ repositoryURL = "https://github.com/element-hq/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = 25.06.24; + version = 25.06.25; }; }; 701C7BEF8F70F7A83E852DCC /* XCRemoteSwiftPackageReference "GZIP" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8c4de1953..1fdd1bfd0 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -158,8 +158,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/element-hq/matrix-rust-components-swift", "state" : { - "revision" : "f1fc74b64905ebde2f759916bf4018daf3406f40", - "version" : "25.6.24" + "revision" : "28083837b3c743eb76b23c12c6ef5873668190e6", + "version" : "25.6.25" } }, { diff --git a/ElementX/Sources/Mocks/BannedRoomProxyMock.swift b/ElementX/Sources/Mocks/BannedRoomProxyMock.swift index 3d27cb17e..ab94a4525 100644 --- a/ElementX/Sources/Mocks/BannedRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/BannedRoomProxyMock.swift @@ -40,7 +40,6 @@ extension RoomInfoProxyMock { avatarURL = configuration.avatarURL isDirect = false - isPublic = false isSpace = false successor = nil isFavourite = false diff --git a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift index 71ae0851c..81d8e4622 100644 --- a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift @@ -13427,16 +13427,6 @@ class RoomInfoProxyMock: RoomInfoProxyProtocol, @unchecked Sendable { set(value) { underlyingIsDirect = value } } var underlyingIsDirect: Bool! - var isPublic: Bool { - get { return underlyingIsPublic } - set(value) { underlyingIsPublic = value } - } - var underlyingIsPublic: Bool! - var isPrivate: Bool { - get { return underlyingIsPrivate } - set(value) { underlyingIsPrivate = value } - } - var underlyingIsPrivate: Bool! var isSpace: Bool { get { return underlyingIsSpace } set(value) { underlyingIsSpace = value } diff --git a/ElementX/Sources/Mocks/InvitedRoomProxyMock.swift b/ElementX/Sources/Mocks/InvitedRoomProxyMock.swift index 8373fb21b..6e9c68f25 100644 --- a/ElementX/Sources/Mocks/InvitedRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/InvitedRoomProxyMock.swift @@ -44,7 +44,6 @@ extension RoomInfoProxyMock { avatarURL = configuration.avatarURL isDirect = false - isPublic = false isSpace = false successor = nil isFavourite = false diff --git a/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift b/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift index 93f304e19..20bc69b1d 100644 --- a/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/JoinedRoomProxyMock.swift @@ -21,7 +21,6 @@ struct JoinedRoomProxyMockConfiguration { var avatarURL: URL? var isDirect = false var isSpace = false - var isPublic = false var isEncrypted = true var hasOngoingCall = true var canonicalAlias: String? @@ -38,7 +37,7 @@ struct JoinedRoomProxyMockConfiguration { var shouldUseAutoUpdatingTimeline = false - var joinRule: JoinRule? + var joinRule: JoinRule? = .invite var membership: Membership = .joined var isVisibleInPublicDirectory = false @@ -172,7 +171,6 @@ extension RoomInfoProxyMock { topic = configuration.topic avatarURL = configuration.avatarURL isDirect = configuration.isDirect - isPublic = configuration.isPublic isSpace = configuration.isSpace successor = configuration.successor isFavourite = false diff --git a/ElementX/Sources/Mocks/KnockedRoomProxyMock.swift b/ElementX/Sources/Mocks/KnockedRoomProxyMock.swift index ed4244769..d205f8089 100644 --- a/ElementX/Sources/Mocks/KnockedRoomProxyMock.swift +++ b/ElementX/Sources/Mocks/KnockedRoomProxyMock.swift @@ -40,7 +40,6 @@ extension RoomInfoProxyMock { avatarURL = configuration.avatarURL isDirect = false - isPublic = false isSpace = false successor = nil isFavourite = false diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 655a196e4..3112e3e3f 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -364,7 +364,7 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol return } - if roomProxy.infoPublisher.value.isPublic { + if !roomProxy.infoPublisher.value.isPrivate { state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomID, isDM: roomProxy.isDirectOneToOneRoom, state: .public) } else { state.bindings.leaveRoomAlertItem = if roomProxy.infoPublisher.value.joinedMembersCount > 1 { diff --git a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift index 2ab46f614..34dffd87a 100644 --- a/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomDetailsScreen/RoomDetailsScreenViewModel.swift @@ -125,7 +125,7 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr } state.bindings.leaveRoomAlertItem = LeaveRoomAlertItem(roomID: roomProxy.id, isDM: roomProxy.isDirectOneToOneRoom, - state: roomProxy.infoPublisher.value.isPublic ? .public : .private) + state: roomProxy.infoPublisher.value.isPrivate ? .private : .public) case .confirmLeave: Task { await leaveRoom() } case .processTapIgnore: diff --git a/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift b/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift index d9eed682c..019923efb 100644 --- a/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift +++ b/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift @@ -338,13 +338,13 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview { static var previews: some View { RoomDetailsScreen(context: genericRoomViewModel.context) .snapshotPreferences(expect: genericRoomViewModel.context.$viewState.map { state in - state.canSeeSecurityAndPrivacy == true + state.permalink != nil }) .previewDisplayName("Generic Room") RoomDetailsScreen(context: simpleRoomViewModel.context) .snapshotPreferences(expect: simpleRoomViewModel.context.$viewState.map { state in - state.canSeeSecurityAndPrivacy == true + state.permalink != nil }) .previewDisplayName("Simple Room") @@ -356,7 +356,7 @@ struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview { RoomDetailsScreen(context: dmRoomVerifiedViewModel.context) .snapshotPreferences(expect: dmRoomVerifiedViewModel.context.$viewState.map { state in - state.accountOwner != nil + state.dmRecipientInfo?.verificationState == .verified }) .previewDisplayName("DM Room Verified") diff --git a/ElementX/Sources/Services/Room/RoomInfoProxy.swift b/ElementX/Sources/Services/Room/RoomInfoProxy.swift index 0b176d84e..260169597 100644 --- a/ElementX/Sources/Services/Room/RoomInfoProxy.swift +++ b/ElementX/Sources/Services/Room/RoomInfoProxy.swift @@ -27,9 +27,8 @@ struct RoomInfoProxy: RoomInfoProxyProtocol { var isEncrypted: Bool { roomInfo.encryptionState == .encrypted } var isDirect: Bool { roomInfo.isDirect } - var isPublic: Bool { roomInfo.isPublic } - var isSpace: Bool { roomInfo.isSpace } + var successor: SuccessorRoom? { roomInfo.successorRoom } var isFavourite: Bool { roomInfo.isFavourite } var canonicalAlias: String? { roomInfo.canonicalAlias } @@ -72,6 +71,6 @@ struct RoomPreviewInfoProxy: BaseRoomInfoProxyProtocol { var activeMembersCount: Int { Int(roomPreviewInfo.numActiveMembers ?? roomPreviewInfo.numJoinedMembers) } var joinedMembersCount: Int { Int(roomPreviewInfo.numJoinedMembers) } - var joinRule: JoinRule { roomPreviewInfo.joinRule } + var joinRule: JoinRule? { roomPreviewInfo.joinRule } var membership: Membership? { roomPreviewInfo.membership } } diff --git a/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift index df64cb7ce..550b980dc 100644 --- a/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomInfoProxyProtocol.swift @@ -35,13 +35,9 @@ protocol RoomInfoProxyProtocol: BaseRoomInfoProxyProtocol { var isEncrypted: Bool { get } var isDirect: Bool { get } - var isPublic: Bool { get } - - var isPrivate: Bool { get } - var isSpace: Bool { get } - var isFavourite: Bool { get } + var canonicalAlias: String? { get } var alternativeAliases: [String] { get } var membership: Membership { get } diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index 9478c7f43..b0374c3c5 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -188,7 +188,7 @@ extension JoinedRoomProxyProtocol { avatar: infoPublisher.value.avatar, canonicalAlias: infoPublisher.value.canonicalAlias, isEncrypted: infoPublisher.value.isEncrypted, - isPublic: infoPublisher.value.isPublic, + isPublic: !infoPublisher.value.isPrivate, isDirect: infoPublisher.value.isDirect) } diff --git a/UnitTests/Sources/RoomDetailsViewModelTests.swift b/UnitTests/Sources/RoomDetailsViewModelTests.swift index 0fe11f8bc..07e7ac845 100644 --- a/UnitTests/Sources/RoomDetailsViewModelTests.swift +++ b/UnitTests/Sources/RoomDetailsViewModelTests.swift @@ -38,7 +38,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testLeaveRoomTappedWhenPublic() async throws { let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -61,7 +61,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testLeaveRoomTappedWhenRoomNotPublic() async throws { let mockedMembers: [RoomMemberProxyMock] = [.mockBob, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -85,7 +85,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testLeaveRoomTappedWithLessThanTwoMembers() async { let mockedMembers: [RoomMemberProxyMock] = [.mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: false, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -301,8 +301,8 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testCannotInvitePeople() async { let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice] roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", - isPublic: true, members: mockedMembers, + joinRule: .public, powerLevelsConfiguration: .init(canUserInvite: false))) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), @@ -321,7 +321,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testInvitePeople() async { let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isPublic: true, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", members: mockedMembers, joinRule: .public)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -358,7 +358,6 @@ class RoomDetailsScreenViewModelTests: XCTestCase { let configuration = JoinedRoomProxyMockConfiguration(name: "Test", isDirect: false, - isPublic: false, members: mockedMembers) roomProxyMock = JoinedRoomProxyMock(configuration) @@ -399,7 +398,6 @@ class RoomDetailsScreenViewModelTests: XCTestCase { let configuration = JoinedRoomProxyMockConfiguration(name: "Test", isDirect: false, - isPublic: false, members: mockedMembers) roomProxyMock = JoinedRoomProxyMock(configuration) @@ -440,7 +438,6 @@ class RoomDetailsScreenViewModelTests: XCTestCase { let configuration = JoinedRoomProxyMockConfiguration(name: "Test", isDirect: false, - isPublic: false, members: mockedMembers) roomProxyMock = JoinedRoomProxyMock(configuration) @@ -478,7 +475,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testCannotEditRoom() async { let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockBob, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -499,7 +496,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testCannotEditDirectRoom() async { let mockedMembers: [RoomMemberProxyMock] = [.mockMeAdmin, .mockBob, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isPublic: false, members: mockedMembers)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, members: mockedMembers)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -728,7 +725,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testKnockRequestsCounter() async throws { ServiceLocator.shared.settings.knockingEnabled = true let mockedRequests: [KnockRequestProxyMock] = [.init(), .init()] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -751,7 +748,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { func testKnockRequestsCounterIsLoading() async throws { ServiceLocator.shared.settings.knockingEnabled = true - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, isPublic: false, knockRequestsState: .loading, joinRule: .knock)) + roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, knockRequestsState: .loading, joinRule: .knock)) viewModel = RoomDetailsScreenViewModel(roomProxy: roomProxyMock, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), @@ -774,7 +771,6 @@ class RoomDetailsScreenViewModelTests: XCTestCase { let mockedRequests: [KnockRequestProxyMock] = [.init(), .init()] roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: false, - isPublic: false, knockRequestsState: .loaded(mockedRequests), joinRule: .knock, powerLevelsConfiguration: .init(canUserInvite: false))) @@ -802,7 +798,7 @@ class RoomDetailsScreenViewModelTests: XCTestCase { ServiceLocator.shared.settings.knockingEnabled = true let mockedRequests: [KnockRequestProxyMock] = [.init(), .init()] let mockedMembers: [RoomMemberProxyMock] = [.mockMe, .mockAlice] - roomProxyMock = JoinedRoomProxyMock(.init(name: "Test", isDirect: true, isPublic: false, 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, clientProxy: ClientProxyMock(.init()), mediaProvider: MediaProviderMock(configuration: .init()), diff --git a/project.yml b/project.yml index 9b96c3a7c..aaeba51b3 100644 --- a/project.yml +++ b/project.yml @@ -65,7 +65,7 @@ packages: # Element/Matrix dependencies MatrixRustSDK: url: https://github.com/element-hq/matrix-rust-components-swift - exactVersion: 25.06.24 + exactVersion: 25.06.25 # path: ../matrix-rust-sdk Compound: url: https://github.com/element-hq/compound-ios