From 0548450b6b9abb372b240f9fcfa0cc338cf1bd1a Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Thu, 9 May 2024 12:05:28 +0300 Subject: [PATCH] Enable room list invites by default and remove old code paths --- ElementX.xcodeproj/project.pbxproj | 52 ---- .../Sources/Application/AppSettings.swift | 12 +- .../UserSessionFlowCoordinator.swift | 55 +---- ...erSessionFlowCoordinatorStateMachine.swift | 27 +-- ElementX/Sources/Mocks/ClientProxyMock.swift | 1 - .../Mocks/Generated/GeneratedMocks.swift | 1 - .../Other/AccessibilityIdentifiers.swift | 7 - .../HomeScreen/HomeScreenCoordinator.swift | 3 - .../Screens/HomeScreen/HomeScreenModels.swift | 7 - .../HomeScreen/HomeScreenViewModel.swift | 28 +-- .../View/Filters/RoomListFilterModels.swift | 6 +- .../HomeScreen/View/HomeScreenContent.swift | 11 +- .../View/HomeScreenInviteCell.swift | 2 - .../View/HomeScreenInvitesButton.swift | 62 ----- .../InvitesScreenCoordinator.swift | 59 ----- .../InvitesScreen/InvitesScreenModels.swift | 46 ---- .../InvitesScreenViewModel.swift | 162 ------------- .../InvitesScreenViewModelProtocol.swift | 23 -- .../InvitesScreen/View/InvitesScreen.swift | 103 -------- .../View/InvitesScreenCell.swift | 226 ------------------ .../DeveloperOptionsScreenModels.swift | 1 - .../View/DeveloperOptionsScreen.swift | 5 - .../Sources/Services/Client/ClientProxy.swift | 12 +- .../Services/Client/ClientProxyProtocol.swift | 2 - .../RoomSummaryProviderProtocol.swift | 2 - .../UITests/UITestsAppCoordinator.swift | 22 -- .../UITests/UITestsScreenIdentifier.swift | 1 - .../test_homeScreen-iPad-en-GB.Empty.png | 4 +- .../test_homeScreen-iPad-en-GB.Loaded.png | 4 +- .../test_homeScreen-iPad-pseudo.Empty.png | 4 +- .../test_homeScreen-iPad-pseudo.Loaded.png | 4 +- ...reenInvitesButton-iPad-en-GB.Badge-off.png | 3 - ...nInvitesButton-iPad-en-GB.Badge-on-AX1.png | 3 - ...creenInvitesButton-iPad-en-GB.Badge-on.png | 3 - ...eenInvitesButton-iPad-pseudo.Badge-off.png | 3 - ...InvitesButton-iPad-pseudo.Badge-on-AX1.png | 3 - ...reenInvitesButton-iPad-pseudo.Badge-on.png | 3 - ...nvitesButton-iPhone-15-en-GB.Badge-off.png | 3 - ...tesButton-iPhone-15-en-GB.Badge-on-AX1.png | 3 - ...InvitesButton-iPhone-15-en-GB.Badge-on.png | 3 - ...vitesButton-iPhone-15-pseudo.Badge-off.png | 3 - ...esButton-iPhone-15-pseudo.Badge-on-AX1.png | 3 - ...nvitesButton-iPhone-15-pseudo.Badge-on.png | 3 - ...st_invitesScreen-iPad-en-GB.No-Invites.png | 3 - ...t_invitesScreen-iPad-en-GB.Some-Invite.png | 3 - ...t_invitesScreen-iPad-pseudo.No-Invites.png | 3 - ..._invitesScreen-iPad-pseudo.Some-Invite.png | 3 - ...vitesScreen-iPhone-15-en-GB.No-Invites.png | 3 - ...itesScreen-iPhone-15-en-GB.Some-Invite.png | 3 - ...itesScreen-iPhone-15-pseudo.No-Invites.png | 3 - ...tesScreen-iPhone-15-pseudo.Some-Invite.png | 3 - .../test_invitesScreenCell-iPad-en-GB.1.png | 3 - .../test_invitesScreenCell-iPad-pseudo.1.png | 3 - ...st_invitesScreenCell-iPhone-15-en-GB.1.png | 3 - ...t_invitesScreenCell-iPhone-15-pseudo.1.png | 3 - .../test_roomListFiltersView-iPad-en-GB.1.png | 4 +- ...test_roomListFiltersView-iPad-pseudo.1.png | 4 +- UITests/Sources/InvitesScreenUITests.swift | 34 --- .../Sources/InvitesScreenViewModelTests.swift | 104 -------- .../Sources/RoomListFiltersStateTests.swift | 10 +- 60 files changed, 27 insertions(+), 1155 deletions(-) delete mode 100644 ElementX/Sources/Screens/HomeScreen/View/HomeScreenInvitesButton.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/InvitesScreenCoordinator.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/InvitesScreenModels.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModel.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModelProtocol.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/View/InvitesScreen.swift delete mode 100644 ElementX/Sources/Screens/InvitesScreen/View/InvitesScreenCell.swift delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-off.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on-AX1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-off.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on-AX1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-off.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on-AX1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-off.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on-AX1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.No-Invites.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.Some-Invite.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.No-Invites.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.Some-Invite.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.No-Invites.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.Some-Invite.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.No-Invites.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.Some-Invite.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-en-GB.1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-pseudo.1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-en-GB.1.png delete mode 100644 PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-pseudo.1.png delete mode 100644 UITests/Sources/InvitesScreenUITests.swift delete mode 100644 UnitTests/Sources/InvitesScreenViewModelTests.swift diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 18cba2fe8..a8349f38f 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -158,7 +158,6 @@ 256D76972BA3254F7CB7F88B /* LocationAnnotation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAD8234D0E9C9B12BF9F240B /* LocationAnnotation.swift */; }; 25C4C1100B6EA79F5CC7CBB5 /* AppLockSetupPINScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 989D7380D9C86B3A10D30B13 /* AppLockSetupPINScreenViewModelTests.swift */; }; 260FFC1475EE94F641C3F3F9 /* PollFormScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = A40F1985065500F0E7F61A27 /* PollFormScreenViewModelProtocol.swift */; }; - 266C4DF893F2947DCCEF327B /* InvitesScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC14E5209C262530E19BC4C1 /* InvitesScreenViewModelTests.swift */; }; 2689D22EF1D10D22B0A4DAEA /* NotificationContentBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7BB243B26D54EF1A0C422C0 /* NotificationContentBuilder.swift */; }; 273AB64B9A26B61C51858867 /* AsyncSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = A73A07BAEDD74C48795A996A /* AsyncSequence.swift */; }; 274CE3C986841D15FD530BF5 /* ShimmerModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97CE98208321C4D66E363612 /* ShimmerModifier.swift */; }; @@ -178,7 +177,6 @@ 2A90DD14DE5C891BFA433950 /* TimelineReplyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEE0E6043EFCF6FD2A341861 /* TimelineReplyView.swift */; }; 2AAB2A77F1762A2648078A30 /* InteractiveQuickLook.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638A81B97D51591D0FCFA598 /* InteractiveQuickLook.swift */; }; 2ABF11717C64054CEF2819A3 /* RoomTimelineController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F85164F9475FF2867F71AAA /* RoomTimelineController.swift */; }; - 2AD59AD5B09498EF8B3B04EC /* InvitesScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E1BBA73B611EDEEA6E20E05 /* InvitesScreenModels.swift */; }; 2B1E080B32167AE9EFC763A2 /* TimelineTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B8315A340B46F98B9C5AF0 /* TimelineTableViewController.swift */; }; 2B97BCE72D86645F1485C976 /* RoomDirectorySearchMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894EE8F5B399A165BA2A6634 /* RoomDirectorySearchMock.swift */; }; 2BA59D0AEFB4B82A2EC2A326 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 50009897F60FAE7D63EF5E5B /* Kingfisher */; }; @@ -406,7 +404,6 @@ 642DF13C49ED4121C148230E /* TestablePreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1E227F34BE43B08E098796E /* TestablePreview.swift */; }; 6448F8D1D3CA4CD27BB4CADD /* RoomMemberProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F36C5D9B37E50915ECBD3EE /* RoomMemberProxy.swift */; }; 64AB99285DC4437C0DDE9585 /* MenuSheetLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49ABAB186CF00B15C5521D04 /* MenuSheetLabelStyle.swift */; }; - 64C373ACCFA26D42BA45CFAD /* HomeScreenInvitesButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24227FF9A2797F6EA7F69CDD /* HomeScreenInvitesButton.swift */; }; 64D05250CEDE8B604119F6E6 /* Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 981663D961C94270FA035FD0 /* Alert.swift */; }; 64E541F88F35BD126C4AFCA1 /* AppLockScreenPINKeypad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38345442415E07A931197C55 /* AppLockScreenPINKeypad.swift */; }; 64F43D7390DA2A0AFD6BA911 /* VideoRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1941C8817E6B6971BA4415F5 /* VideoRoomTimelineView.swift */; }; @@ -416,7 +413,6 @@ 6530865EB9A8C0F0AF0216DA /* ServerSelectionScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9501D11B4258DFA33BA3B40F /* ServerSelectionScreenModels.swift */; }; 654E802C127B84554042903E /* AnalyticsSettingsScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECD5FCBA169B6A82F501CA1B /* AnalyticsSettingsScreenViewModelProtocol.swift */; }; 659E5B766F76FDEC1BF393A4 /* RoomDetailsEditScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E413F4CBD7BF0588F394A9DD /* RoomDetailsEditScreenViewModel.swift */; }; - 65EDA77363BEDC40CDE43B43 /* InvitesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42ADEA322D2089391E049535 /* InvitesScreen.swift */; }; 663E198678778F7426A9B27D /* Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9FAFE1C2149E6AC8156ED2B /* Collection.swift */; }; 67160204A8D362BB7D4AD259 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 693E16574C6F7F9FA1015A8C /* Search.swift */; }; 6786C4B0936AC84D993B20BF /* NotificationSettingsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5F06F2F09B2EDD067DC2174 /* NotificationSettingsScreen.swift */; }; @@ -490,7 +486,6 @@ 764AFCC225B044CF5F9B41E5 /* PaginationIndicatorRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42EEA67A6796BDC2761619C5 /* PaginationIndicatorRoomTimelineView.swift */; }; 767D366C40F1311CFA333763 /* PillContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86376BEE425704AEE197CA54 /* PillContext.swift */; }; 7691233E3572A9173FD96CB3 /* SecureBackupKeyBackupScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E88534A39781D76487D59DF /* SecureBackupKeyBackupScreenViewModelTests.swift */; }; - 76BA28216FBAF83B2D86A027 /* InvitesScreenCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2A71915C1F075E403F559C /* InvitesScreenCell.swift */; }; 7708976CEE6AFB5CFAEFBA68 /* PillTextAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CF1EE0AA78470C674554262 /* PillTextAttachment.swift */; }; 7756C4E90CABE6F14F7920A0 /* BugReportUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6FEA87EA3752203065ECE27 /* BugReportUITests.swift */; }; 77574A519A4E484880053EAD /* IdentityConfirmationScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FDF541AE914059942B575B4 /* IdentityConfirmationScreenModels.swift */; }; @@ -502,7 +497,6 @@ 77FACC29F98FE2E65BBB6A5F /* ServerSelectionUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 054F469E433864CC6FE6EE8E /* ServerSelectionUITests.swift */; }; 7807B1DEE32617896886A8E5 /* FormattingToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1E6FAA3719E9B7A2D5510B /* FormattingToolbar.swift */; }; 784592335560C2E91D32D177 /* DeveloperOptionsScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B098A612DCB5A7358EECD5 /* DeveloperOptionsScreenModels.swift */; }; - 78A3392047E9D1C6FEA659B6 /* InvitesScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33649299575BADC34924ABC6 /* InvitesScreenCoordinator.swift */; }; 795A854F63301DC6B46217B9 /* AccessibilityIdentifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04BB8DDE245ED86C489BA983 /* AccessibilityIdentifiers.swift */; }; 79741C1953269FF1A211D246 /* RoomPollsHistoryScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0E14FF533D25A0692F7CEB0 /* RoomPollsHistoryScreenViewModel.swift */; }; 7A02EB29F3B993AB20E0A198 /* RoomPollsHistoryScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42C8C368A611B9CB79C7F5FA /* RoomPollsHistoryScreen.swift */; }; @@ -751,7 +745,6 @@ B3EDDEC1839BB5A3747624BB /* FormButtonStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95A1CCDEE545CB6453B084BF /* FormButtonStyles.swift */; }; B402708F8728DD0DB7C324E2 /* StartChatScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78910787F967CBC6042A101E /* StartChatScreenViewModelProtocol.swift */; }; B444F9C184A377C1B481F07F /* XCUIElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = E992D7B8BE54B2AB454613AF /* XCUIElement.swift */; }; - B45F20A1C3F1CE19D5B8BA74 /* InvitesScreenUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F61A0DD8243B395499C99A2 /* InvitesScreenUITests.swift */; }; B4A0C69370E6008A971463E7 /* BugReportScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C89820BB2B88D4EA28131C /* BugReportScreenViewModelProtocol.swift */; }; B4AAB3257A83B73F53FB2689 /* StateStoreViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F3DFE5B444F131648066F05 /* StateStoreViewModel.swift */; }; B5321A1F5B26A0F3EC54909E /* CollapsibleFlowLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5F5209279A752D98AAC4B2 /* CollapsibleFlowLayoutTests.swift */; }; @@ -796,7 +789,6 @@ BD11E639CF566A9DA8FCA717 /* RoundedLabelItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE7C80EF77AD102053D3646E /* RoundedLabelItem.swift */; }; BD203FC6A7AE7637EA003643 /* RoomProxyMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ABDE6F66532CBEB0E016F94 /* RoomProxyMock.swift */; }; BD6685592716CA957D7BAAC4 /* RoomChangeRolesScreenSelectedItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D9B45D584D232CB9E5C7734 /* RoomChangeRolesScreenSelectedItem.swift */; }; - BD6D98676111DA8FC2BE4908 /* InvitesScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86873A768B13069BB5CAECF6 /* InvitesScreenViewModelProtocol.swift */; }; BD782053BE4C3D2F0BDE5699 /* ServiceLocator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F95CADD0A5DBD76B990FCB /* ServiceLocator.swift */; }; BDA68E8D95B2B24B28825B8B /* LoginScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C368CAB3063EF275357ECD4 /* LoginScreenViewModel.swift */; }; BDC4EB54CC3036730475CB8B /* QRCodeLoginScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E7E9B7FEAB6169D960C206 /* QRCodeLoginScreenViewModelTests.swift */; }; @@ -814,7 +806,6 @@ C1D0AB8222D7BAFC9AF9C8C0 /* MapLibreMapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 622D09D4ECE759189009AEAF /* MapLibreMapView.swift */; }; C26DB49C06C00B5DF1A991A5 /* InviteUsersScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1454CF3AABD242F55C8A2615 /* InviteUsersScreenModels.swift */; }; C2879369106A419A5071F1F8 /* VoiceMessageRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26B0A96B8FE4849227945067 /* VoiceMessageRecorder.swift */; }; - C287BE1802AD432F3D848D8E /* InvitesScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF81D7F2A6BA9DE3F6F8D9D /* InvitesScreenViewModel.swift */; }; C32765D740C81AD4C42E8F50 /* CreateRoomFlowParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 935C2FB18EFB8EEE96B26330 /* CreateRoomFlowParameters.swift */; }; C3317EF833AB4060988DF098 /* SAS.strings in Resources */ = {isa = PBXBuildFile; fileRef = 135FC689EA39AE1D34153B58 /* SAS.strings */; }; C3522917C0C367C403429EEC /* CoordinatorProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B251F5B4511D1CA0BA8361FE /* CoordinatorProtocol.swift */; }; @@ -1278,7 +1269,6 @@ 23E6EB7960BC9D0F7396B3BD /* RoomChangeRolesScreenRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangeRolesScreenRow.swift; sourceTree = ""; }; 23EE69982BBA18C6D51AD08E /* UserProfileScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileScreen.swift; sourceTree = ""; }; 240610DF32F3213BEC5611D7 /* BlockedUsersScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockedUsersScreenViewModelTests.swift; sourceTree = ""; }; - 24227FF9A2797F6EA7F69CDD /* HomeScreenInvitesButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenInvitesButton.swift; sourceTree = ""; }; 2429224EB0EEA34D35CE9249 /* UserIndicatorControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserIndicatorControllerTests.swift; sourceTree = ""; }; 2441E2424E78A40FC95DBA76 /* AudioRecorderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioRecorderTests.swift; sourceTree = ""; }; 248649EBA5BC33DB93698734 /* SessionVerificationControllerProxyMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationControllerProxyMock.swift; sourceTree = ""; }; @@ -1338,7 +1328,6 @@ 32B5E17028C02DFA7DDA3931 /* RoomMemberProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberProxyProtocol.swift; sourceTree = ""; }; 32C5DAA1773F57653BF1C4F9 /* SoftLogoutViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoftLogoutViewModelTests.swift; sourceTree = ""; }; 330AF4D121C3396F7A14B21D /* id */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = id; path = id.lproj/SAS.strings; sourceTree = ""; }; - 33649299575BADC34924ABC6 /* InvitesScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenCoordinator.swift; sourceTree = ""; }; 3368395F06AA180138E185B6 /* PollFormScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollFormScreenUITests.swift; sourceTree = ""; }; 33E49C5C6F802B4D94CA78D1 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/Localizable.strings; sourceTree = ""; }; 340179A0FC1AD4AEDA7FC134 /* CreateRoomViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreateRoomViewModelProtocol.swift; sourceTree = ""; }; @@ -1401,7 +1390,6 @@ 421FA93BCC2840E66E4F306F /* NotificationSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSettingsScreenViewModelProtocol.swift; sourceTree = ""; }; 42236480CF0431535EBE8387 /* CustomLayoutLabelStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomLayoutLabelStyle.swift; sourceTree = ""; }; 422724361B6555364C43281E /* RoomHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomHeaderView.swift; sourceTree = ""; }; - 42ADEA322D2089391E049535 /* InvitesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreen.swift; sourceTree = ""; }; 42C64A14EE89928207E3B42B /* AnalyticsSettingsScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsSettingsScreenModels.swift; sourceTree = ""; }; 42C8C368A611B9CB79C7F5FA /* RoomPollsHistoryScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomPollsHistoryScreen.swift; sourceTree = ""; }; 42EEA67A6796BDC2761619C5 /* PaginationIndicatorRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaginationIndicatorRoomTimelineView.swift; sourceTree = ""; }; @@ -1559,7 +1547,6 @@ 6D4777F0142E330A75C46FE4 /* SessionVerificationUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationUITests.swift; sourceTree = ""; }; 6DC30DEC0097B9D217493007 /* ResetRecoveryKeyScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResetRecoveryKeyScreen.swift; sourceTree = ""; }; 6DF438EAFC732D2D95D34BF6 /* StartChatViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StartChatViewModelTests.swift; sourceTree = ""; }; - 6DF81D7F2A6BA9DE3F6F8D9D /* InvitesScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenViewModel.swift; sourceTree = ""; }; 6E2656184491C505700D2405 /* CollapsibleRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsibleRoomTimelineView.swift; sourceTree = ""; }; 6E5725BC6C63604CB769145B /* LegalInformationScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegalInformationScreenViewModelTests.swift; sourceTree = ""; }; 6E5E9C044BEB7C70B1378E91 /* UserSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSession.swift; sourceTree = ""; }; @@ -1661,7 +1648,6 @@ 8610C1D21565C950BCA6A454 /* AppLockSetupSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockSetupSettingsScreenViewModelProtocol.swift; sourceTree = ""; }; 86376BEE425704AEE197CA54 /* PillContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillContext.swift; sourceTree = ""; }; 8642512079EEFD622E3AA66B /* BlockedUsersScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockedUsersScreenModels.swift; sourceTree = ""; }; - 86873A768B13069BB5CAECF6 /* InvitesScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenViewModelProtocol.swift; sourceTree = ""; }; 869A8A4632E511351BFE2EC4 /* JoinRoomScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinRoomScreen.swift; sourceTree = ""; }; 86A6F283BC574FDB96ABBB07 /* DeveloperOptionsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeveloperOptionsScreenViewModel.swift; sourceTree = ""; }; 86C8CE2630F54D5FE1591786 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = ro.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -1687,9 +1673,7 @@ 8D8169443E5AC5FF71BFB3DB /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; 8DC2C9E0E15C79BBDA80F0A2 /* TimelineStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineStyle.swift; sourceTree = ""; }; 8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; path = UITests.xctestplan; sourceTree = ""; }; - 8E1BBA73B611EDEEA6E20E05 /* InvitesScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenModels.swift; sourceTree = ""; }; 8F21ED7205048668BEB44A38 /* AppActivityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActivityView.swift; sourceTree = ""; }; - 8F61A0DD8243B395499C99A2 /* InvitesScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenUITests.swift; sourceTree = ""; }; 8F6210134203BE1F2DD5C679 /* RoomDirectoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectoryCell.swift; sourceTree = ""; }; 8F841F219ACDFC1D3F42FEFB /* RoomChangeRolesScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangeRolesScreenViewModelTests.swift; sourceTree = ""; }; 8FB89DC7F9A4A91020037001 /* AuthenticationStartScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationStartScreenViewModelTests.swift; sourceTree = ""; }; @@ -1934,7 +1918,6 @@ C9F893F4A111CB7BA5C96949 /* AppLockSetupBiometricsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockSetupBiometricsScreenViewModel.swift; sourceTree = ""; }; CA28F29C9F93E93CC3C2C715 /* NavigationRootCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationRootCoordinator.swift; sourceTree = ""; }; CA29952595B804DA221A0C1D /* ComposerToolbarViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposerToolbarViewModelTests.swift; sourceTree = ""; }; - CA2A71915C1F075E403F559C /* InvitesScreenCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenCell.swift; sourceTree = ""; }; CA89A2DD51B6BBE1DA55E263 /* Application.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; CA8F098AE48D958B4257EB24 /* CallInviteRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallInviteRoomTimelineView.swift; sourceTree = ""; }; CA90BD288E5AE6BC643AFDDF /* TemplateScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateScreenCoordinator.swift; sourceTree = ""; }; @@ -1944,7 +1927,6 @@ CBBCC6E74774E79B599625D0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; CBF9AEA706926DD0DA2B954C /* JoinedRoomSize+MemberCount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JoinedRoomSize+MemberCount.swift"; sourceTree = ""; }; CC03209FDE8CE0810617BFFF /* RoomMembersListScreenMemberCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMembersListScreenMemberCell.swift; sourceTree = ""; }; - CC14E5209C262530E19BC4C1 /* InvitesScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenViewModelTests.swift; sourceTree = ""; }; CC1DDB2293A51EA4C2739351 /* RoomListFiltersEmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomListFiltersEmptyStateView.swift; sourceTree = ""; }; CC680E0E79D818706CB28CF8 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; CC743C7A85E3171BCBF0A653 /* AvatarHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarHeaderView.swift; sourceTree = ""; }; @@ -2883,15 +2865,6 @@ path = SecureBackupScreen; sourceTree = ""; }; - 3D22B0A4FC9008F7E353D0EA /* View */ = { - isa = PBXGroup; - children = ( - 42ADEA322D2089391E049535 /* InvitesScreen.swift */, - CA2A71915C1F075E403F559C /* InvitesScreenCell.swift */, - ); - path = View; - sourceTree = ""; - }; 3D733E8352DD4C461CFD8B8A /* QRCodeLoginScreen */ = { isa = PBXGroup; children = ( @@ -3164,7 +3137,6 @@ A3B4B58B79A6FA250B24A1EC /* HomeScreenContent.swift */, C0FEA560929DD73FFEF8C3DF /* HomeScreenEmptyStateView.swift */, D8FC33C3F6BF597E095CE9FA /* HomeScreenInviteCell.swift */, - 24227FF9A2797F6EA7F69CDD /* HomeScreenInvitesButton.swift */, 05512FB13987D221B7205DE0 /* HomeScreenRecoveryKeyConfirmationBanner.swift */, ED044D00F2176681CC02CD54 /* HomeScreenRoomCell.swift */, C7661EFFCAA307A97D71132A /* HomeScreenRoomList.swift */, @@ -3552,7 +3524,6 @@ EA4D639E27D5882A6A71AECF /* GlobalSearchScreenViewModelTests.swift */, B73587C2E3CF5998361AE516 /* HomeScreenRoomTests.swift */, 505208F28007C0FEC14E1FF0 /* HomeScreenViewModelTests.swift */, - CC14E5209C262530E19BC4C1 /* InvitesScreenViewModelTests.swift */, 845DDBDE5A0887E73D38B826 /* InviteUsersViewModelTests.swift */, DE5127D6EA05B2E45D0A7D59 /* JoinRoomScreenViewModelTests.swift */, FDB9C37196A4C79F24CE80C6 /* KeychainControllerTests.swift */, @@ -4100,7 +4071,6 @@ 295E28C3B9EAADF519BF2F44 /* AuthenticationFlowCoordinatorUITests.swift */, C6FEA87EA3752203065ECE27 /* BugReportUITests.swift */, F8CEB4634C0DD7779C4AB504 /* CreateRoomScreenUITests.swift */, - 8F61A0DD8243B395499C99A2 /* InvitesScreenUITests.swift */, 1DB34B0C74CD242FED9DD069 /* LoginScreenUITests.swift */, 3368395F06AA180138E185B6 /* PollFormScreenUITests.swift */, C5B7A755E985FA14469E86B2 /* RoomMembersListScreenUITests.swift */, @@ -4865,18 +4835,6 @@ path = Animation; sourceTree = ""; }; - E3EA13D6E41AD76151C2D100 /* InvitesScreen */ = { - isa = PBXGroup; - children = ( - 33649299575BADC34924ABC6 /* InvitesScreenCoordinator.swift */, - 8E1BBA73B611EDEEA6E20E05 /* InvitesScreenModels.swift */, - 6DF81D7F2A6BA9DE3F6F8D9D /* InvitesScreenViewModel.swift */, - 86873A768B13069BB5CAECF6 /* InvitesScreenViewModelProtocol.swift */, - 3D22B0A4FC9008F7E353D0EA /* View */, - ); - path = InvitesScreen; - sourceTree = ""; - }; E4E42F93A69AE52E6FAE9412 /* Users */ = { isa = PBXGroup; children = ( @@ -4903,7 +4861,6 @@ 448435400B561C40E514BE1C /* FilePreviewScreen */, 8A4738BBA7C7A299BAD70372 /* GlobalSearchScreen */, B53CA9BECD3F97805E1432D0 /* HomeScreen */, - E3EA13D6E41AD76151C2D100 /* InvitesScreen */, F12966DF3DA87FEF21348D60 /* InviteUsersScreen */, FFD7C58CA6A7D6BBC2F584B5 /* JoinRoomScreen */, 948DD12A5533BE1BC260E437 /* LocationSharing */, @@ -5745,7 +5702,6 @@ F6F49E37272AD7397CD29A01 /* HomeScreenViewModelTests.swift in Sources */, A23B8B27A1436A1049EEF68E /* InfoPlistReader.swift in Sources */, A216C83ADCF32BA5EF8A6FBC /* InviteUsersViewModelTests.swift in Sources */, - 266C4DF893F2947DCCEF327B /* InvitesScreenViewModelTests.swift in Sources */, 7C0E29E0279866C62EC67A28 /* JoinRoomScreenViewModelTests.swift in Sources */, EEC40663922856C65D1E0DF5 /* KeychainControllerTests.swift in Sources */, CC961529F9F1854BEC3272C9 /* LayoutMocks.swift in Sources */, @@ -6057,7 +6013,6 @@ 8CC12086CBF91A7E10CDC205 /* HomeScreenCoordinator.swift in Sources */, 77BB228AEA861E50FFD6A228 /* HomeScreenEmptyStateView.swift in Sources */, 22C5483D01EEB290B8339817 /* HomeScreenInviteCell.swift in Sources */, - 64C373ACCFA26D42BA45CFAD /* HomeScreenInvitesButton.swift in Sources */, 8810A2A30A68252EBB54EE05 /* HomeScreenModels.swift in Sources */, B04E9EB589CE99C3929E817A /* HomeScreenRecoveryKeyConfirmationBanner.swift in Sources */, 0AE0AB1952F186EB86719B4F /* HomeScreenRoomCell.swift in Sources */, @@ -6088,12 +6043,6 @@ 61941DEE5F3834765770BE01 /* InviteUsersScreenSelectedItem.swift in Sources */, F519DE17A3A0F760307B2E6D /* InviteUsersScreenViewModel.swift in Sources */, A17FAD2EBC53E17B5FD384DB /* InviteUsersScreenViewModelProtocol.swift in Sources */, - 65EDA77363BEDC40CDE43B43 /* InvitesScreen.swift in Sources */, - 76BA28216FBAF83B2D86A027 /* InvitesScreenCell.swift in Sources */, - 78A3392047E9D1C6FEA659B6 /* InvitesScreenCoordinator.swift in Sources */, - 2AD59AD5B09498EF8B3B04EC /* InvitesScreenModels.swift in Sources */, - C287BE1802AD432F3D848D8E /* InvitesScreenViewModel.swift in Sources */, - BD6D98676111DA8FC2BE4908 /* InvitesScreenViewModelProtocol.swift in Sources */, 6A54F52443EC52AC5CD772C0 /* JoinRoomScreen.swift in Sources */, AFE2AB612A1460E49578D746 /* JoinRoomScreenCoordinator.swift in Sources */, DEDBD3E9CFCC9F20CAC79881 /* JoinRoomScreenModels.swift in Sources */, @@ -6619,7 +6568,6 @@ 7756C4E90CABE6F14F7920A0 /* BugReportUITests.swift in Sources */, 94D0F36A87E596A93C0C178A /* Bundle.swift in Sources */, 9F19096BFA629C0AC282B1E4 /* CreateRoomScreenUITests.swift in Sources */, - B45F20A1C3F1CE19D5B8BA74 /* InvitesScreenUITests.swift in Sources */, 5C8AFBF168A41E20835F3B86 /* LoginScreenUITests.swift in Sources */, 0CF81807BE5FBFC9E2BBCECF /* PollFormScreenUITests.swift in Sources */, 44121202B4A260C98BF615A7 /* RoomMembersListScreenUITests.swift in Sources */, diff --git a/ElementX/Sources/Application/AppSettings.swift b/ElementX/Sources/Application/AppSettings.swift index 7075cc334..5bc16bf76 100644 --- a/ElementX/Sources/Application/AppSettings.swift +++ b/ElementX/Sources/Application/AppSettings.swift @@ -21,7 +21,6 @@ import SwiftUI final class AppSettings { private enum UserDefaultsKeys: String { case lastVersionLaunched - case seenInvites case appLockNumberOfPINAttempts case appLockNumberOfBiometricAttempts case migratedAccounts @@ -47,7 +46,6 @@ final class AppSettings { case shouldCollapseRoomStateEvents case publicSearchEnabled case qrCodeLoginEnabled - case roomListInvitesEnabled } private static var suiteName: String = InfoPlistReader.main.appGroupIdentifier @@ -94,12 +92,7 @@ final class AppSettings { /// deleted between runs so should clear data in the shared container and keychain. @UserPreference(key: UserDefaultsKeys.lastVersionLaunched, storageType: .userDefaults(store)) var lastVersionLaunched: String? - - /// The Set of room identifiers of invites that the user already saw in the invites list. - /// This Set is being used to implement badges for unread invites. - @UserPreference(key: UserDefaultsKeys.seenInvites, defaultValue: [], storageType: .userDefaults(store)) - var seenInvites: Set - + /// The default homeserver address used. This is intentionally a string without a scheme /// so that it can be passed to Rust as a ServerName for well-known discovery. let defaultHomeserverAddress = "matrix.org" @@ -271,9 +264,6 @@ final class AppSettings { @UserPreference(key: UserDefaultsKeys.qrCodeLoginEnabled, defaultValue: false, storageType: .userDefaults(store)) var qrCodeLoginEnabled - @UserPreference(key: UserDefaultsKeys.roomListInvitesEnabled, defaultValue: false, storageType: .userDefaults(store)) - var roomListInvitesEnabled - #endif // MARK: - Shared diff --git a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift index c2210c4e5..82474a938 100644 --- a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift +++ b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinator.swift @@ -286,12 +286,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { } case(.roomList, .deselectRoom, .roomList): dismissRoomFlow(animated: animated) - - case (.invitesScreen, .selectRoom, .invitesScreen): - break - case (.invitesScreen, .deselectRoom, .invitesScreen): - dismissRoomFlow(animated: animated) - + case (.roomList, .showSettingsScreen, .settingsScreen): break case (.settingsScreen, .dismissedSettingsScreen, .roomList): @@ -312,13 +307,6 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { case (.startChatScreen, .dismissedStartChatScreen, .roomList): break - case (.roomList, .showInvitesScreen, .invitesScreen): - presentInvitesList(animated: animated) - case (.invitesScreen, .showInvitesScreen, .invitesScreen): - break - case (.invitesScreen, .dismissedInvitesScreen, .roomList): - break - case (.roomList, .showLogoutConfirmationScreen, .logoutConfirmationScreen): presentSecureBackupLogoutConfirmationScreen() case (.logoutConfirmationScreen, .dismissedLogoutConfirmationScreen, .roomList): @@ -389,8 +377,6 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { stateMachine.processEvent(.showStartChatScreen) case .logout: Task { await self.runLogoutFlow() } - case .presentInvitesScreen: - stateMachine.processEvent(.showInvitesScreen) case .presentGlobalSearch: presentGlobalSearch() case .presentRoomDirectorySearch: @@ -493,12 +479,7 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { case .roomDetails: coordinator.handleAppRoute(.roomDetails(roomID: roomID), animated: animated) } - - let availableInvitesCount = userSession.clientProxy.inviteSummaryProvider?.roomListPublisher.value.count ?? 0 - if case .invitesScreen = stateMachine.state, availableInvitesCount == 1 { - dismissInvitesList(animated: true) - } - + Task { let _ = await userSession.clientProxy.trackRecentlyVisitedRoom(roomID) @@ -544,38 +525,6 @@ class UserSessionFlowCoordinator: FlowCoordinatorProtocol { } } - // MARK: Invites list - - private func presentInvitesList(animated: Bool) { - let parameters = InvitesScreenCoordinatorParameters(userSession: userSession) - let coordinator = InvitesScreenCoordinator(parameters: parameters) - - coordinator.actions - .sink { [weak self] action in - switch action { - case .openRoom(let roomID): - self?.stateMachine.processEvent(.selectRoom(roomID: roomID, entryPoint: .room)) - } - } - .store(in: &cancellables) - - sidebarNavigationStackCoordinator.push(coordinator, animated: animated) { [weak self] in - self?.stateMachine.processEvent(.dismissedInvitesScreen) - } - - Task { - await notificationManager.removeDeliveredInviteNotifications() - } - } - - private func dismissInvitesList(animated: Bool) { - guard case .invitesScreen = stateMachine.state else { - fatalError() - } - - sidebarNavigationStackCoordinator.pop(animated: animated) - } - // MARK: Calls private func presentCallScreen(roomProxy: RoomProxyProtocol) { diff --git a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift index 3e58b554d..d5a779f61 100644 --- a/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift +++ b/ElementX/Sources/FlowCoordinators/UserSessionFlowCoordinatorStateMachine.swift @@ -36,9 +36,6 @@ class UserSessionFlowCoordinatorStateMachine { /// Showing the start chat screen case startChatScreen(selectedRoomID: String?) - /// Showing invites list screen - case invitesScreen(selectedRoomID: String?) - /// Showing the logout flows case logoutConfirmationScreen(selectedRoomID: String?) @@ -57,7 +54,6 @@ class UserSessionFlowCoordinatorStateMachine { .feedbackScreen(let selectedRoomID), .settingsScreen(let selectedRoomID), .startChatScreen(let selectedRoomID), - .invitesScreen(let selectedRoomID), .logoutConfirmationScreen(let selectedRoomID), .roomDirectorySearchScreen(let selectedRoomID): selectedRoomID @@ -95,12 +91,7 @@ class UserSessionFlowCoordinatorStateMachine { case showStartChatScreen /// Start chat has been dismissed case dismissedStartChatScreen - - /// Request presentation of the invites screen - case showInvitesScreen - /// The invites screen has been dismissed - case dismissedInvitesScreen - + /// Logout has been requested and this is the last sesion case showLogoutConfirmationScreen /// Logout has been cancelled @@ -140,12 +131,8 @@ class UserSessionFlowCoordinatorStateMachine { switch (fromState, event) { case (.roomList, .selectRoom(let roomID, _)): return .roomList(selectedRoomID: roomID) - case (.invitesScreen, .selectRoom(let roomID, _)): - return .invitesScreen(selectedRoomID: roomID) case (.roomList, .deselectRoom): return .roomList(selectedRoomID: nil) - case (.invitesScreen, .deselectRoom): - return .invitesScreen(selectedRoomID: nil) case (.roomList(let selectedRoomID), .showSettingsScreen): return .settingsScreen(selectedRoomID: selectedRoomID) @@ -161,15 +148,7 @@ class UserSessionFlowCoordinatorStateMachine { return .startChatScreen(selectedRoomID: selectedRoomID) case (.startChatScreen(let selectedRoomID), .dismissedStartChatScreen): return .roomList(selectedRoomID: selectedRoomID) - - case (.roomList(let selectedRoomID), .showInvitesScreen): - return .invitesScreen(selectedRoomID: selectedRoomID) - case (.invitesScreen(let selectedRoomID), .showInvitesScreen): - return .invitesScreen(selectedRoomID: selectedRoomID) - - case (.invitesScreen(let selectedRoomID), .dismissedInvitesScreen): - return .roomList(selectedRoomID: selectedRoomID) - + case (.roomList(let selectedRoomID), .showLogoutConfirmationScreen): return .logoutConfirmationScreen(selectedRoomID: selectedRoomID) case (.logoutConfirmationScreen(let selectedRoomID), .dismissedLogoutConfirmationScreen): @@ -224,8 +203,6 @@ class UserSessionFlowCoordinatorStateMachine { switch stateMachine.state { case .roomList(let selectedRoomID): return roomID == selectedRoomID - case .invitesScreen(let selectedRoomID): - return roomID == selectedRoomID default: return false } diff --git a/ElementX/Sources/Mocks/ClientProxyMock.swift b/ElementX/Sources/Mocks/ClientProxyMock.swift index e66a2b0e1..e6d24082d 100644 --- a/ElementX/Sources/Mocks/ClientProxyMock.swift +++ b/ElementX/Sources/Mocks/ClientProxyMock.swift @@ -39,7 +39,6 @@ extension ClientProxyMock { roomSummaryProvider = configuration.roomSummaryProvider alternateRoomSummaryProvider = RoomSummaryProviderMock(.init()) - inviteSummaryProvider = RoomSummaryProviderMock(.init()) roomDirectorySearchProxyReturnValue = configuration.roomDirectorySearchProxy diff --git a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift index 7d88770fa..8b60273d8 100644 --- a/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift +++ b/ElementX/Sources/Mocks/Generated/GeneratedMocks.swift @@ -1941,7 +1941,6 @@ class ClientProxyMock: ClientProxyProtocol { var pusherNotificationClientIdentifier: String? var roomSummaryProvider: RoomSummaryProviderProtocol? var alternateRoomSummaryProvider: RoomSummaryProviderProtocol? - var inviteSummaryProvider: RoomSummaryProviderProtocol? var notificationSettings: NotificationSettingsProxyProtocol { get { return underlyingNotificationSettings } set(value) { underlyingNotificationSettings = value } diff --git a/ElementX/Sources/Other/AccessibilityIdentifiers.swift b/ElementX/Sources/Other/AccessibilityIdentifiers.swift index f767d6f93..8ff8a0302 100644 --- a/ElementX/Sources/Other/AccessibilityIdentifiers.swift +++ b/ElementX/Sources/Other/AccessibilityIdentifiers.swift @@ -40,7 +40,6 @@ enum A11yIdentifiers { static let startChatScreen = StartChatScreen() static let roomMemberDetailsScreen = RoomMemberDetailsScreen() static let createRoomScreen = CreateRoomScreen() - static let invitesScreen = InvitesScreen() static let inviteUsersScreen = InviteUsersScreen() static let migrationScreen = MigrationScreen() static let notificationSettingsScreen = NotificationSettingsScreen() @@ -105,12 +104,6 @@ enum A11yIdentifiers { } } - struct InvitesScreen { - let noInvites = "invites-no_invites" - let accept = "invites-accept" - let decline = "invites-decline" - } - struct InviteUsersScreen { let proceed = "invite_users-proceed" let userProfile = "invite_users-user_profile" diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenCoordinator.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenCoordinator.swift index 546a12ca1..adfa41bd7 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenCoordinator.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenCoordinator.swift @@ -33,7 +33,6 @@ enum HomeScreenCoordinatorAction { case presentFeedbackScreen case presentSecureBackupSettings case presentStartChatScreen - case presentInvitesScreen case presentGlobalSearch case presentRoomDirectorySearch case logout @@ -80,8 +79,6 @@ final class HomeScreenCoordinator: CoordinatorProtocol { actionsSubject.send(.logout) case .presentStartChatScreen: actionsSubject.send(.presentStartChatScreen) - case .presentInvitesScreen: - actionsSubject.send(.presentInvitesScreen) case .presentGlobalSearch: actionsSubject.send(.presentGlobalSearch) case .presentRoomDirectorySearch: diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift index 3094bedce..9158704b2 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift @@ -26,7 +26,6 @@ enum HomeScreenViewModelAction { case presentSettingsScreen case presentFeedbackScreen case presentStartChatScreen - case presentInvitesScreen case presentGlobalSearch case presentRoomDirectorySearch case logout @@ -42,7 +41,6 @@ enum HomeScreenViewAction { case confirmRecoveryKey case skipRecoveryKeyConfirmation case updateVisibleItemRange(range: Range, isScrolling: Bool) - case selectInvites case globalSearch case markRoomAsUnread(roomIdentifier: String) case markRoomAsRead(roomIdentifier: String) @@ -91,7 +89,6 @@ struct HomeScreenViewState: BindableState { var roomListMode: HomeScreenRoomListMode = .skeletons var hasPendingInvitations = false - var hasUnreadPendingInvitations = false var isRoomDirectorySearchEnabled = false @@ -129,10 +126,6 @@ struct HomeScreenViewState: BindableState { var shouldShowRecoveryKeyConfirmationBanner: Bool { securityBannerMode == .recoveryKeyConfirmation } - - var shouldShowInvitesButton: Bool { - !ServiceLocator.shared.settings.roomListInvitesEnabled && hasPendingInvitations && !bindings.isSearchFieldFocused - } } struct HomeScreenViewStateBindings { diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index 5d1bffbdf..5cb3215cb 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -27,7 +27,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol private let userIndicatorController: UserIndicatorControllerProtocol private let roomSummaryProvider: RoomSummaryProviderProtocol? - private let inviteSummaryProvider: RoomSummaryProviderProtocol? private var migrationCancellable: AnyCancellable? @@ -50,7 +49,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol self.userIndicatorController = userIndicatorController roomSummaryProvider = userSession.clientProxy.roomSummaryProvider - inviteSummaryProvider = userSession.clientProxy.inviteSummaryProvider super.init(initialViewState: .init(userID: userSession.userID), imageProvider: userSession.mediaProvider) @@ -157,8 +155,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol visibleItemRangePublisher.send((range, isScrolling)) case .startChat: actionsSubject.send(.presentStartChatScreen) - case .selectInvites: - actionsSubject.send(.presentInvitesScreen) case .globalSearch: actionsSubject.send(.presentGlobalSearch) case .markRoomAsUnread(let roomIdentifier): @@ -233,7 +229,7 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol } private func setupRoomListSubscriptions() { - guard let roomSummaryProvider, let inviteSummaryProvider else { + guard let roomSummaryProvider else { MXLog.error("Room summary provider unavailable") return } @@ -280,28 +276,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol self?.installListRangeModifiers() } .store(in: &cancellables) - - inviteSummaryProvider.roomListPublisher - .combineLatest(appSettings.$seenInvites) - .receive(on: DispatchQueue.main) - .sink { [weak self] summaries, seenInvites in - self?.state.hasPendingInvitations = !summaries.isEmpty - - let invites = summaries.compactMap(\.id) - - let unreadInvites = summaries.filter { summary in - guard let roomID = summary.id else { - return false - } - - return !seenInvites.contains(roomID) - } - - MXLog.info("Received invite list update - invites: \(invites), seenInvites: \(seenInvites), unreadInvites: \(unreadInvites)") - - self?.state.hasUnreadPendingInvitations = !unreadInvites.isEmpty - } - .store(in: &cancellables) } private func updateRoomListMode(with roomSummaryProviderState: RoomSummaryProviderState) { diff --git a/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift b/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift index 2a45d259e..d84a7aab2 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/Filters/RoomListFilterModels.swift @@ -32,11 +32,7 @@ enum RoomListFilter: Int, CaseIterable, Identifiable { case invites static var availableFilters: [RoomListFilter] { - if ServiceLocator.shared.settings.roomListInvitesEnabled { - return RoomListFilter.allCases - } else { - return RoomListFilter.allCases.filter { !($0 == .invites) } - } + RoomListFilter.allCases } var localizedName: String { diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift index d0b821b8d..a5cda6361 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift @@ -111,8 +111,7 @@ struct HomeScreenContent: View { private var topSection: some View { // An empty VStack causes glitches within the room list if context.viewState.shouldShowFilters || - context.viewState.shouldShowRecoveryKeyConfirmationBanner || - context.viewState.shouldShowInvitesButton { + context.viewState.shouldShowRecoveryKeyConfirmationBanner { VStack(spacing: 0) { if context.viewState.shouldShowFilters { RoomListFiltersView(state: $context.filtersState) @@ -121,14 +120,6 @@ struct HomeScreenContent: View { if context.viewState.shouldShowRecoveryKeyConfirmationBanner { HomeScreenRecoveryKeyConfirmationBanner(context: context) } - - if context.viewState.shouldShowInvitesButton { - HomeScreenInvitesButton(title: L10n.actionInvitesList, hasBadge: context.viewState.hasUnreadPendingInvitations) { - context.send(viewAction: .selectInvites) - } - .accessibilityIdentifier(A11yIdentifiers.homeScreen.invites) - .frame(maxWidth: .infinity, alignment: .trailing) - } } .background(Color.compound.bgCanvasDefault) } diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift index ef50c6232..5bccdc96b 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInviteCell.swift @@ -112,13 +112,11 @@ struct HomeScreenInviteCell: View { context.send(viewAction: .declineInvite(roomIdentifier: room.id)) } .buttonStyle(.compound(.secondary, size: .medium)) - .accessibilityIdentifier(A11yIdentifiers.invitesScreen.decline) Button(L10n.actionAccept) { context.send(viewAction: .acceptInvite(roomIdentifier: room.id)) } .buttonStyle(.compound(.primary, size: .medium)) - .accessibilityIdentifier(A11yIdentifiers.invitesScreen.accept) } } diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInvitesButton.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInvitesButton.swift deleted file mode 100644 index 5a90832d7..000000000 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenInvitesButton.swift +++ /dev/null @@ -1,62 +0,0 @@ -// -// Copyright 2023 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import SwiftUI - -struct HomeScreenInvitesButton: View { - let title: String - let hasBadge: Bool - let action: () -> Void - - var body: some View { - Button(action: action) { - HStack(spacing: 8.0) { - Text(title) - .foregroundColor(.compound.textPrimary) - .font(.compound.bodyMDSemibold) - - if hasBadge { - badge - } - } - .padding(.trailing, 16.0) - .padding(.leading, 64.0) - .padding(.vertical, 8.0) - } - } - - // MARK: - Private - - private var badge: some View { - Circle() - .scaledFrame(size: 12) - .foregroundColor(.compound.iconAccentTertiary) - } -} - -struct HomeScreenInvitesButton_Previews: PreviewProvider, TestablePreview { - static var previews: some View { - HomeScreenInvitesButton(title: "Invites", hasBadge: true, action: { }) - .previewDisplayName("Badge on") - - HomeScreenInvitesButton(title: "Invites", hasBadge: false, action: { }) - .previewDisplayName("Badge off") - - HomeScreenInvitesButton(title: "Invites", hasBadge: true, action: { }) - .previewDisplayName("Badge on (AX1)") - .dynamicTypeSize(.accessibility1) - } -} diff --git a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenCoordinator.swift b/ElementX/Sources/Screens/InvitesScreen/InvitesScreenCoordinator.swift deleted file mode 100644 index fadf236c0..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenCoordinator.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import SwiftUI - -struct InvitesScreenCoordinatorParameters { - let userSession: UserSessionProtocol -} - -enum InvitesScreenCoordinatorAction { - case openRoom(withIdentifier: String) -} - -final class InvitesScreenCoordinator: CoordinatorProtocol { - private var viewModel: InvitesScreenViewModelProtocol - private let actionsSubject: PassthroughSubject = .init() - private var cancellables = Set() - - var actions: AnyPublisher { - actionsSubject.eraseToAnyPublisher() - } - - init(parameters: InvitesScreenCoordinatorParameters) { - viewModel = InvitesScreenViewModel(userSession: parameters.userSession, - appSettings: ServiceLocator.shared.settings, - analytics: ServiceLocator.shared.analytics, - userIndicatorController: ServiceLocator.shared.userIndicatorController) - } - - func start() { - viewModel.actions - .sink { [weak self] action in - guard let self else { return } - switch action { - case .openRoom(let roomID): - self.actionsSubject.send(.openRoom(withIdentifier: roomID)) - } - } - .store(in: &cancellables) - } - - func toPresentable() -> AnyView { - AnyView(InvitesScreen(context: viewModel.context)) - } -} diff --git a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenModels.swift b/ElementX/Sources/Screens/InvitesScreen/InvitesScreenModels.swift deleted file mode 100644 index c3cfe74ba..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenModels.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -enum InvitesScreenViewModelAction { - case openRoom(withIdentifier: String) -} - -struct InvitesScreenViewState: BindableState { - var invites: [InvitesScreenRoomDetails] = [] - var bindings: InvitesScreenViewStateBindings = .init() -} - -struct InvitesScreenViewStateBindings { - var alertInfo: AlertInfo? -} - -struct InvitesScreenRoomDetails: Identifiable { - let roomDetails: RoomSummaryDetails - var isUnread: Bool - - var isDirect: Bool { - roomDetails.isDirect - } - - var id: String { - roomDetails.id - } -} - -enum InvitesScreenViewAction { - case accept(InvitesScreenRoomDetails) - case decline(InvitesScreenRoomDetails) -} diff --git a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModel.swift b/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModel.swift deleted file mode 100644 index f6fc786fc..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModel.swift +++ /dev/null @@ -1,162 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import SwiftUI - -typealias InvitesScreenViewModelType = StateStoreViewModel - -class InvitesScreenViewModel: InvitesScreenViewModelType, InvitesScreenViewModelProtocol { - private let userSession: UserSessionProtocol - private let appSettings: AppSettings - private let analytics: AnalyticsService - private let userIndicatorController: UserIndicatorControllerProtocol - private let notificationCenterProtocol: NotificationCenterProtocol - - private let previouslySeenInvites: Set - private let actionsSubject: PassthroughSubject = .init() - - var actions: AnyPublisher { - actionsSubject.eraseToAnyPublisher() - } - - init(userSession: UserSessionProtocol, - appSettings: AppSettings, - analytics: AnalyticsService, - userIndicatorController: UserIndicatorControllerProtocol, - notificationCenterProtocol: NotificationCenterProtocol = NotificationCenter.default) { - self.userSession = userSession - self.appSettings = appSettings - self.analytics = analytics - self.userIndicatorController = userIndicatorController - self.notificationCenterProtocol = notificationCenterProtocol - - previouslySeenInvites = appSettings.seenInvites - super.init(initialViewState: InvitesScreenViewState(), imageProvider: userSession.mediaProvider) - setupSubscriptions() - } - - // MARK: - Public - - override func process(viewAction: InvitesScreenViewAction) { - switch viewAction { - case .accept(let invite): - accept(invite: invite) - case .decline(let invite): - startDeclineFlow(invite: invite) - } - } - - // MARK: - Private - - private var clientProxy: ClientProxyProtocol { - userSession.clientProxy - } - - private var inviteSummaryProvider: RoomSummaryProviderProtocol? { - clientProxy.inviteSummaryProvider - } - - private func setupSubscriptions() { - guard let inviteSummaryProvider else { - MXLog.error("Room summary provider unavailable") - return - } - - inviteSummaryProvider.roomListPublisher - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] roomSummaries in - guard let self else { return } - - self.appSettings.seenInvites = Set(roomSummaries.compactMap(\.id)) - - MXLog.info("Updated seen invites: \(self.appSettings.seenInvites)") - - self.state.invites = roomSummaries.compactMap { summary in - guard case .filled(let details) = summary else { - return nil - } - return InvitesScreenRoomDetails(roomDetails: details, isUnread: !self.previouslySeenInvites.contains(details.id)) - } - } - .store(in: &cancellables) - } - - private func startDeclineFlow(invite: InvitesScreenRoomDetails) { - let roomPlaceholder = invite.isDirect ? (invite.roomDetails.inviter?.displayName ?? invite.roomDetails.name) : invite.roomDetails.name - let title = invite.isDirect ? L10n.screenInvitesDeclineDirectChatTitle : L10n.screenInvitesDeclineChatTitle - let message = invite.isDirect ? L10n.screenInvitesDeclineDirectChatMessage(roomPlaceholder) : L10n.screenInvitesDeclineChatMessage(roomPlaceholder) - - state.bindings.alertInfo = .init(id: true, - title: title, - message: message, - primaryButton: .init(title: L10n.actionCancel, role: .cancel, action: nil), - secondaryButton: .init(title: L10n.actionDecline, role: .destructive, action: { self.decline(invite: invite) })) - } - - private func accept(invite: InvitesScreenRoomDetails) { - Task { - let roomID = invite.roomDetails.id - defer { - userIndicatorController.retractIndicatorWithId(roomID) - } - - userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) - - guard let roomProxy = await clientProxy.roomForIdentifier(roomID) else { - displayError() - return - } - - switch await roomProxy.acceptInvitation() { - case .success: - actionsSubject.send(.openRoom(withIdentifier: roomID)) - analytics.trackJoinedRoom(isDM: roomProxy.isDirect, isSpace: roomProxy.isSpace, activeMemberCount: UInt(roomProxy.activeMembersCount)) - case .failure: - displayError() - } - } - } - - private func decline(invite: InvitesScreenRoomDetails) { - Task { - let roomID = invite.roomDetails.id - defer { - userIndicatorController.retractIndicatorWithId(roomID) - } - - userIndicatorController.submitIndicator(UserIndicator(id: roomID, type: .modal, title: L10n.commonLoading, persistent: true)) - - guard let roomProxy = await clientProxy.roomForIdentifier(roomID) else { - displayError() - return - } - - let result = await roomProxy.rejectInvitation() - - if case .failure = result { - displayError() - } - } - } - - private func displayError() { - state.bindings.alertInfo = .init(id: true, - title: L10n.commonError, - message: L10n.errorUnknown) - } -} diff --git a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModelProtocol.swift b/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModelProtocol.swift deleted file mode 100644 index fbb3d2a3f..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/InvitesScreenViewModelProtocol.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -@MainActor -protocol InvitesScreenViewModelProtocol { - var actions: AnyPublisher { get } - var context: InvitesScreenViewModelType.Context { get } -} diff --git a/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreen.swift b/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreen.swift deleted file mode 100644 index 90f185485..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreen.swift +++ /dev/null @@ -1,103 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import SwiftUI - -struct InvitesScreen: View { - @ObservedObject var context: InvitesScreenViewModel.Context - - var body: some View { - mainContent - .background(Color.compound.bgCanvasDefault.ignoresSafeArea()) - .navigationTitle(L10n.actionInvitesList) - .alert(item: $context.alertInfo) - .track(screen: .Invites) - } - - // MARK: - Private - - @ViewBuilder - private var mainContent: some View { - ScrollView { - if !context.viewState.invites.isEmpty { - LazyVStack(spacing: 0) { - ForEach(context.viewState.invites) { invite in - InvitesScreenCell(invite: invite, - imageProvider: context.imageProvider, - acceptAction: { context.send(viewAction: .accept(invite)) }, - declineAction: { context.send(viewAction: .decline(invite)) }) - } - } - } else { - noInvitesContent - } - } - } - - private var noInvitesContent: some View { - Text(L10n.screenInvitesEmptyList) - .font(.compound.bodyLG) - .foregroundColor(.compound.textSecondary) - .frame(maxWidth: .infinity) - .listRowBackground(Color.clear) - .accessibilityIdentifier(A11yIdentifiers.invitesScreen.noInvites) - .padding(.top, 80) - } -} - -// MARK: - Previews - -struct InvitesScreen_Previews: PreviewProvider, TestablePreview { - static var previews: some View { - NavigationView { - InvitesScreen(context: InvitesScreenViewModel.noInvites.context) - } - .previewDisplayName("No Invites") - - NavigationView { - InvitesScreen(context: InvitesScreenViewModel.someInvite.context) - } - .snapshot(delay: 3.0) - .previewDisplayName("Some Invite") - } -} - -private extension InvitesScreenViewModel { - static let noInvites: InvitesScreenViewModel = { - let userSession = MockUserSession(clientProxy: ClientProxyMock(.init(userID: "@userid:example.com")), - mediaProvider: MockMediaProvider(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock()) - let regularViewModel = InvitesScreenViewModel(userSession: userSession, - appSettings: ServiceLocator.shared.settings, - analytics: ServiceLocator.shared.analytics, - userIndicatorController: ServiceLocator.shared.userIndicatorController) - return regularViewModel - }() - - static let someInvite: InvitesScreenViewModel = { - let clientProxy = ClientProxyMock(.init(userID: "@userid:example.com")) - clientProxy.inviteSummaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockInvites))) - clientProxy.roomSummaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockInvites))) - let userSession = MockUserSession(clientProxy: clientProxy, - mediaProvider: MockMediaProvider(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock()) - let regularViewModel = InvitesScreenViewModel(userSession: userSession, - appSettings: ServiceLocator.shared.settings, - analytics: ServiceLocator.shared.analytics, - userIndicatorController: ServiceLocator.shared.userIndicatorController) - return regularViewModel - }() -} diff --git a/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreenCell.swift b/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreenCell.swift deleted file mode 100644 index 0e912ac73..000000000 --- a/ElementX/Sources/Screens/InvitesScreen/View/InvitesScreenCell.swift +++ /dev/null @@ -1,226 +0,0 @@ -// -// Copyright 2023 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import SwiftUI - -@MainActor -struct InvitesScreenCell: View { - let invite: InvitesScreenRoomDetails - let imageProvider: ImageProviderProtocol? - let acceptAction: () -> Void - let declineAction: () -> Void - - var body: some View { - HStack(alignment: .top, spacing: 16) { - LoadableAvatarImage(url: invite.roomDetails.avatarURL, - name: title, - contentID: invite.roomDetails.id, - avatarSize: .custom(52), - imageProvider: imageProvider) - .accessibilityHidden(true) - - mainContent - .frame(maxWidth: .infinity, alignment: .leading) - .padding(.bottom, 16) - .padding(.trailing, 16) - .overlay(alignment: .bottom) { - separator - } - } - .padding(.top, 12) - .padding(.leading, 16) - } - - // MARK: - Private - - private var mainContent: some View { - VStack(alignment: .leading, spacing: 0) { - HStack(alignment: .firstTextBaseline, spacing: 16) { - textualContent - .padding(.trailing, invite.isUnread ? 0 : 16) - - if invite.isUnread { - badge - } - } - - inviterView - .padding(.top, 6) - .padding(.trailing, 16) - - buttons - .padding(.top, 14) - .padding(.trailing, 22) - } - } - - @ViewBuilder - private var inviterView: some View { - if let invitedText = attributedInviteText, let name = invite.roomDetails.inviter?.displayName { - HStack(alignment: .firstTextBaseline, spacing: 8) { - LoadableAvatarImage(url: invite.roomDetails.inviter?.avatarURL, - name: name, - contentID: name, - avatarSize: .custom(16), - imageProvider: imageProvider) - .alignmentGuide(.firstTextBaseline) { $0[.bottom] * 0.8 } - - Text(invitedText) - } - } - } - - @ViewBuilder - private var textualContent: some View { - VStack(alignment: .leading, spacing: 0) { - Text(title) - .font(.compound.bodyLGSemibold) - .foregroundColor(.compound.textPrimary) - .lineLimit(2) - - if let subtitle { - Text(subtitle) - .font(.compound.bodyMD) - .foregroundColor(.compound.textPlaceholder) - } - } - .frame(maxWidth: .infinity, alignment: .leading) - } - - private var buttons: some View { - HStack(spacing: 12) { - Button(L10n.actionDecline, action: declineAction) - .buttonStyle(.compound(.secondary, size: .medium)) - .accessibilityIdentifier(A11yIdentifiers.invitesScreen.decline) - - Button(L10n.actionAccept, action: acceptAction) - .buttonStyle(.compound(.primary, size: .medium)) - .accessibilityIdentifier(A11yIdentifiers.invitesScreen.accept) - } - } - - private var separator: some View { - Rectangle() - .fill(Color.compound.borderDisabled) - .frame(height: 1 / UIScreen.main.scale) - } - - private var title: String { - invite.roomDetails.name - } - - private var subtitle: String? { - invite.isDirect ? invite.roomDetails.inviter?.userID : invite.roomDetails.canonicalAlias - } - - private var attributedInviteText: AttributedString? { - guard - invite.roomDetails.isDirect == false, - let inviterName = invite.roomDetails.inviter?.displayName, - let inviterID = invite.roomDetails.inviter?.userID - else { - return nil - } - - let text = L10n.screenInvitesInvitedYou(inviterName, inviterID) - var attributedString = AttributedString(text) - attributedString.font = .compound.bodyMD - attributedString.foregroundColor = .compound.textPlaceholder - if let range = attributedString.range(of: inviterName) { - attributedString[range].foregroundColor = .compound.textPrimary - attributedString[range].font = .compound.bodyMDSemibold - } - return attributedString - } - - private var badge: some View { - Circle() - .scaledFrame(size: 12) - .foregroundColor(.compound.iconAccentTertiary) - } -} - -struct InvitesScreenCell_Previews: PreviewProvider, TestablePreview { - static var previews: some View { - ScrollView { - VStack(spacing: 0) { - InvitesScreenCell(invite: .dm, imageProvider: MockMediaProvider(), acceptAction: { }, declineAction: { }) - - InvitesScreenCell(invite: .room(), imageProvider: MockMediaProvider(), acceptAction: { }, declineAction: { }) - - InvitesScreenCell(invite: .room(isUnread: false), imageProvider: MockMediaProvider(), acceptAction: { }, declineAction: { }) - - InvitesScreenCell(invite: .room(alias: "#footest:somewhere.org", avatarURL: .picturesDirectory), imageProvider: MockMediaProvider(), acceptAction: { }, declineAction: { }) - - InvitesScreenCell(invite: .room(alias: "#footest:somewhere.org"), imageProvider: MockMediaProvider(), acceptAction: { }, declineAction: { }) - .dynamicTypeSize(.accessibility1) - .previewDisplayName("Aliased room (AX1)") - } - } - } -} - -@MainActor -private extension InvitesScreenRoomDetails { - static var dm: InvitesScreenRoomDetails { - let inviter = RoomMemberProxyMock() - inviter.displayName = "Jack" - inviter.userID = "@jack:somewhere.com" - - let dmRoom = RoomSummaryDetails(id: "@someone:somewhere.com", - isInvite: false, - inviter: inviter, - name: "Some Guy", - isDirect: true, - avatarURL: nil, - lastMessage: nil, - lastMessageFormattedTimestamp: nil, - unreadMessagesCount: 0, - unreadMentionsCount: 0, - unreadNotificationsCount: 0, - notificationMode: nil, - canonicalAlias: "#footest:somewhere.org", - hasOngoingCall: false, - isMarkedUnread: false, - isFavourite: false) - return .init(roomDetails: dmRoom, isUnread: false) - } - - static func room(alias: String? = nil, avatarURL: URL? = nil, isUnread: Bool = true) -> InvitesScreenRoomDetails { - let inviter = RoomMemberProxyMock() - inviter.displayName = "Luca" - inviter.userID = "@jack:somewhi.nl" - inviter.avatarURL = avatarURL - - let dmRoom = RoomSummaryDetails(id: "@someone:somewhere.com", - isInvite: false, - inviter: inviter, - name: "Awesome Room", - isDirect: false, - avatarURL: avatarURL, - lastMessage: nil, - lastMessageFormattedTimestamp: nil, - unreadMessagesCount: 0, - unreadMentionsCount: 0, - unreadNotificationsCount: 0, - notificationMode: nil, - canonicalAlias: alias, - hasOngoingCall: false, - isMarkedUnread: false, - isFavourite: false) - return .init(roomDetails: dmRoom, isUnread: isUnread) - } -} diff --git a/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/DeveloperOptionsScreenModels.swift b/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/DeveloperOptionsScreenModels.swift index 8437d0839..8f2440b0b 100644 --- a/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/DeveloperOptionsScreenModels.swift +++ b/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/DeveloperOptionsScreenModels.swift @@ -50,7 +50,6 @@ protocol DeveloperOptionsProtocol: AnyObject { var elementCallBaseURL: URL { get set } var publicSearchEnabled: Bool { get set } var qrCodeLoginEnabled: Bool { get set } - var roomListInvitesEnabled: Bool { get set } } extension AppSettings: DeveloperOptionsProtocol { } diff --git a/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/View/DeveloperOptionsScreen.swift b/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/View/DeveloperOptionsScreen.swift index 600541c6b..b3f807311 100644 --- a/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/View/DeveloperOptionsScreen.swift +++ b/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/View/DeveloperOptionsScreen.swift @@ -31,11 +31,6 @@ struct DeveloperOptionsScreen: View { Toggle(isOn: $context.hideUnreadMessagesBadge) { Text("Hide grey dots") } - - Toggle(isOn: $context.roomListInvitesEnabled) { - Text("Room list invites") - Text("Requires app reboot and, after disabling the feature, a cache clear.") - } } Section("Room Directory Search") { diff --git a/ElementX/Sources/Services/Client/ClientProxy.swift b/ElementX/Sources/Services/Client/ClientProxy.swift index 37a1215bb..e875cf472 100644 --- a/ElementX/Sources/Services/Client/ClientProxy.swift +++ b/ElementX/Sources/Services/Client/ClientProxy.swift @@ -52,8 +52,6 @@ class ClientProxy: ClientProxyProtocol { private(set) var roomSummaryProvider: RoomSummaryProviderProtocol? private(set) var alternateRoomSummaryProvider: RoomSummaryProviderProtocol? - private(set) var inviteSummaryProvider: RoomSummaryProviderProtocol? - let notificationSettings: NotificationSettingsProxyProtocol let secureBackupController: SecureBackupControllerProtocol @@ -680,7 +678,7 @@ class ClientProxy: ClientProxyProtocol { .syncService() .withCrossProcessLock(appIdentifier: "MainApp") .withUtdHook(delegate: ClientDecryptionErrorDelegate(actionsSubject: actionsSubject)) - .withUnifiedInvitesInRoomList(withUnifiedInvites: appSettings.roomListInvitesEnabled) + .withUnifiedInvitesInRoomList(withUnifiedInvites: true) .finish() let roomListService = syncService.roomListService() @@ -702,13 +700,7 @@ class ClientProxy: ClientProxyProtocol { name: "MessageForwarding", notificationSettings: notificationSettings) try await alternateRoomSummaryProvider?.setRoomList(roomListService.allRooms()) - - inviteSummaryProvider = RoomSummaryProvider(roomListService: roomListService, - eventStringBuilder: eventStringBuilder, - name: "Invites", - notificationSettings: notificationSettings) - try await inviteSummaryProvider?.setRoomList(roomListService.invites()) - + self.syncService = syncService self.roomListService = roomListService diff --git a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift index 7acdca61b..5f47c3ef6 100644 --- a/ElementX/Sources/Services/Client/ClientProxyProtocol.swift +++ b/ElementX/Sources/Services/Client/ClientProxyProtocol.swift @@ -109,8 +109,6 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol { /// Used for listing rooms that shouldn't be affected by the main `roomSummaryProvider` filtering var alternateRoomSummaryProvider: RoomSummaryProviderProtocol? { get } - var inviteSummaryProvider: RoomSummaryProviderProtocol? { get } - var notificationSettings: NotificationSettingsProxyProtocol { get } var secureBackupController: SecureBackupControllerProtocol { get } diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProviderProtocol.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProviderProtocol.swift index 8d233db7c..d5478f78d 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProviderProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProviderProtocol.swift @@ -113,8 +113,6 @@ protocol RoomSummaryProviderProtocol { /// Publishes the current state the summary provider is finding itself in var statePublisher: CurrentValuePublisher { get } - /// This is outside of the constructor because the invites list is added later on the Rust side. - /// Wanted to be able to build the InvitesSummaryProvider directly instead of having to inform the HomeScreenViewModel about it later func setRoomList(_ roomList: RoomList) func updateVisibleRange(_ range: Range) diff --git a/ElementX/Sources/UITests/UITestsAppCoordinator.swift b/ElementX/Sources/UITests/UITestsAppCoordinator.swift index de27f1661..d2f9ee2d2 100644 --- a/ElementX/Sources/UITests/UITestsAppCoordinator.swift +++ b/ElementX/Sources/UITests/UITestsAppCoordinator.swift @@ -562,28 +562,6 @@ class MockScreen: Identifiable { userDiscoveryService: userDiscoveryMock)) navigationStackCoordinator.setRootCoordinator(coordinator) return navigationStackCoordinator - case .invites: - ServiceLocator.shared.settings.seenInvites = Set([RoomSummary].mockInvites.compactMap(\.id)) - let navigationStackCoordinator = NavigationStackCoordinator() - let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com")) - - clientProxy.roomForIdentifierClosure = { identifier in - switch identifier { - case "someAwesomeRoomId1": - return RoomProxyMock(with: .init(name: "First room")) - case "someAwesomeRoomId2": - return RoomProxyMock(with: .init(name: "Second room")) - default: - return nil - } - } - - let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockInvites))) - clientProxy.inviteSummaryProvider = summaryProvider - - let coordinator = InvitesScreenCoordinator(parameters: .init(userSession: MockUserSession(clientProxy: clientProxy, mediaProvider: MockMediaProvider(), voiceMessageMediaManager: VoiceMessageMediaManagerMock()))) - navigationStackCoordinator.setRootCoordinator(coordinator) - return navigationStackCoordinator case .createRoom: let navigationStackCoordinator = NavigationStackCoordinator() let clientProxy = ClientProxyMock(.init(userID: "@mock:client.com")) diff --git a/ElementX/Sources/UITests/UITestsScreenIdentifier.swift b/ElementX/Sources/UITests/UITestsScreenIdentifier.swift index d5997c72c..a1b0afe95 100644 --- a/ElementX/Sources/UITests/UITestsScreenIdentifier.swift +++ b/ElementX/Sources/UITests/UITestsScreenIdentifier.swift @@ -29,7 +29,6 @@ enum UITestsScreenIdentifier: String { case createPoll case createRoom case createRoomNoUsers - case invites case login case roomLayoutBottom case roomLayoutMiddle diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Empty.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Empty.png index 7c072acb3..50fb706d4 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Empty.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Empty.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6b40715ab40723dfe24a779de84fddba834f898fbc86beca0b86fa2d7987996 -size 133950 +oid sha256:83976938fdb2562d69638a210c8ca9259fd7fc476a8a40277f1fbbf20bda5cc2 +size 134800 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Loaded.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Loaded.png index 1f626b53e..154077fa9 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Loaded.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-en-GB.Loaded.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf79e9df2e8e87eadfc7740726e025996974e236046b11eb797870ec2f3f4275 -size 373127 +oid sha256:fa2a5bff526bc76d1e1d838668a456a4af77dd626f746fad991ad3eb86f76e14 +size 374036 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Empty.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Empty.png index c24f148d6..b15da287f 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Empty.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Empty.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:163a9f8f35340ee071eaaceb185d7d0e62105d216ce8d7b8bc5c10b387e21486 -size 168751 +oid sha256:a3ab71d0af5e912ab4f1c239e6fdd0db62759b820302e3a38c188b1e43f2008e +size 169870 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Loaded.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Loaded.png index 4b11ec8da..733120655 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Loaded.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreen-iPad-pseudo.Loaded.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6dbf7d469c14f8b33922b5285f47b84474171e430d54b11254ba7063feae0205 -size 386208 +oid sha256:e41b327d5f9406d06df99b0be960d1025bc962ef6d9abaf06f0b6e5343ba00a0 +size 387405 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-off.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-off.png deleted file mode 100644 index 3635d1eb1..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-off.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a0f00be8a14448432947a50f186c604768a598f4e4d2bfe5d4e6024790bed522 -size 70435 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on-AX1.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on-AX1.png deleted file mode 100644 index 4e1317794..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on-AX1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0c157ddedf5adce004f7dc0f4326a0199ee3cf335a13b9808325f0aebed3990 -size 72403 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on.png deleted file mode 100644 index 3ddc0ffbd..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-en-GB.Badge-on.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:812f7ad00fd1df7aeb71449b7f2620cdcbd9cd06e2c54d4a86a200073bf105e7 -size 70581 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-off.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-off.png deleted file mode 100644 index 3635d1eb1..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-off.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a0f00be8a14448432947a50f186c604768a598f4e4d2bfe5d4e6024790bed522 -size 70435 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on-AX1.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on-AX1.png deleted file mode 100644 index 4e1317794..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on-AX1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0c157ddedf5adce004f7dc0f4326a0199ee3cf335a13b9808325f0aebed3990 -size 72403 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on.png deleted file mode 100644 index 3ddc0ffbd..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPad-pseudo.Badge-on.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:812f7ad00fd1df7aeb71449b7f2620cdcbd9cd06e2c54d4a86a200073bf105e7 -size 70581 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-off.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-off.png deleted file mode 100644 index ed5ac0a1b..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-off.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a391ebad76f9d3bf55c2d06d5b636c914c2e125c6b2f9427e84e01618cf016e9 -size 29296 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on-AX1.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on-AX1.png deleted file mode 100644 index bb2d5540d..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on-AX1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e58e17fb86a2a54979b563e6de7e5d214a6e9a20553de00eec4ccb76c244277 -size 32162 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on.png deleted file mode 100644 index d69f346df..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-en-GB.Badge-on.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab43e3ed28753e635fa8a905ee551a7cacbadbfb217da04953ffa12a8d5dd892 -size 29745 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-off.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-off.png deleted file mode 100644 index ed5ac0a1b..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-off.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a391ebad76f9d3bf55c2d06d5b636c914c2e125c6b2f9427e84e01618cf016e9 -size 29296 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on-AX1.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on-AX1.png deleted file mode 100644 index bb2d5540d..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on-AX1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e58e17fb86a2a54979b563e6de7e5d214a6e9a20553de00eec4ccb76c244277 -size 32162 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on.png b/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on.png deleted file mode 100644 index d69f346df..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_homeScreenInvitesButton-iPhone-15-pseudo.Badge-on.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab43e3ed28753e635fa8a905ee551a7cacbadbfb217da04953ffa12a8d5dd892 -size 29745 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.No-Invites.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.No-Invites.png deleted file mode 100644 index fa71490eb..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.No-Invites.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b9cefbc733c37d289bd2d63f880b1391240cb0ae3f136769d5eba9dffc5b52e1 -size 88322 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.Some-Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.Some-Invite.png deleted file mode 100644 index a895e2238..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-en-GB.Some-Invite.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7f1bf498727b6594400f9acfcb084aca07a12744bab996a764f3a5342df3e40 -size 173918 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.No-Invites.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.No-Invites.png deleted file mode 100644 index e95a4048f..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.No-Invites.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7bd7f1286f891862133005326471099f222de1b36a799d5d320d4d4a27e7174 -size 99767 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.Some-Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.Some-Invite.png deleted file mode 100644 index 779f22605..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPad-pseudo.Some-Invite.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f66907b24744f7167753227827d1dbd37ec74d1a1fb131e353db1c4c85dec88c -size 216505 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.No-Invites.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.No-Invites.png deleted file mode 100644 index 4ec543f8d..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.No-Invites.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:390345d133272067289a58522f4ea5b83cc940efc76e731234e4d59fa638a2f7 -size 37192 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.Some-Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.Some-Invite.png deleted file mode 100644 index 4ec543f8d..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-en-GB.Some-Invite.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:390345d133272067289a58522f4ea5b83cc940efc76e731234e4d59fa638a2f7 -size 37192 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.No-Invites.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.No-Invites.png deleted file mode 100644 index d82bc53b8..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.No-Invites.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:116023146686c16ef0e0f4768e9299454d3d6c2543ce107da5f58d4ba4f9c139 -size 45385 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.Some-Invite.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.Some-Invite.png deleted file mode 100644 index d82bc53b8..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreen-iPhone-15-pseudo.Some-Invite.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:116023146686c16ef0e0f4768e9299454d3d6c2543ce107da5f58d4ba4f9c139 -size 45385 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-en-GB.1.png deleted file mode 100644 index 1c6b713c9..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-en-GB.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99df5d696b1f0064e53886cdda824df0a99c16d1ca6624fca3712d3e42e72326 -size 325132 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-pseudo.1.png deleted file mode 100644 index c4e9376b4..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPad-pseudo.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e19c9262c97fc2ad72d060e356b871d6f82c37fdeab0052da09febc8b9a7efd -size 411798 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-en-GB.1.png deleted file mode 100644 index 655ac93dc..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-en-GB.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5a83d630743821735b30f729e75abcffe45c93a3ab65ea7bd61269c50e24bd6b -size 257864 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-pseudo.1.png deleted file mode 100644 index acb4fe5fb..000000000 --- a/PreviewTests/__Snapshots__/PreviewTests/test_invitesScreenCell-iPhone-15-pseudo.1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:651b87198b55d13f1b27612fa52629017e50b286d1c043a3ba595a11d27e9977 -size 297049 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-en-GB.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-en-GB.1.png index e0c95d102..85f424c25 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-en-GB.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-en-GB.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4152ca5e789f0a61c6f1321df5fd54fb3c92ca2b9ce7ee01955f1d5b8ce58f9e -size 77726 +oid sha256:c363ee752495faca856955d7e68dc79f68dec25ce7e07daf6de2dff86a741da3 +size 78439 diff --git a/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-pseudo.1.png b/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-pseudo.1.png index f63dbfe9c..0902a1933 100644 --- a/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-pseudo.1.png +++ b/PreviewTests/__Snapshots__/PreviewTests/test_roomListFiltersView-iPad-pseudo.1.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:73d74993d6f777a7213c95d5d452027df3ea86b4f339353909a25fcc38ee4bbc -size 79569 +oid sha256:1744074f01179ad9df6598251996da13f77db953d68e5b56d8372aa84dc6258c +size 80788 diff --git a/UITests/Sources/InvitesScreenUITests.swift b/UITests/Sources/InvitesScreenUITests.swift deleted file mode 100644 index bd42f9f9f..000000000 --- a/UITests/Sources/InvitesScreenUITests.swift +++ /dev/null @@ -1,34 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import XCTest - -@MainActor -class InvitesScreenUITests: XCTestCase { - func testInvitesWithNoBadges() async throws { - let app = Application.launch(.invites) - try await app.assertScreenshot(.invites) - } - - func testDeclineInvite() async throws { - let app = Application.launch(.invites) - let declineButton = app.buttons[A11yIdentifiers.invitesScreen.decline].firstMatch - XCTAssert(declineButton.exists) - declineButton.tap() - XCTAssertEqual(app.alerts.count, 1) - try await app.assertScreenshot(.invites, step: 1) - } -} diff --git a/UnitTests/Sources/InvitesScreenViewModelTests.swift b/UnitTests/Sources/InvitesScreenViewModelTests.swift deleted file mode 100644 index df4563322..000000000 --- a/UnitTests/Sources/InvitesScreenViewModelTests.swift +++ /dev/null @@ -1,104 +0,0 @@ -// -// Copyright 2022 New Vector Ltd -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -@testable import ElementX -import XCTest - -@MainActor -class InvitesScreenViewModelTests: XCTestCase { - var viewModel: InvitesScreenViewModelProtocol! - var clientProxy: ClientProxyMock! - var userSession: MockUserSession! - var mockNotificationCenter: NotificationCenterMock! - - var context: InvitesScreenViewModelType.Context { - viewModel.context - } - - override func setUpWithError() throws { - clientProxy = ClientProxyMock(.init(userID: "@a:b.com")) - userSession = MockUserSession(clientProxy: clientProxy, - mediaProvider: MockMediaProvider(), - voiceMessageMediaManager: VoiceMessageMediaManagerMock()) - mockNotificationCenter = NotificationCenterMock() - } - - func testEmptyState() async throws { - setupViewModel() - _ = await context.$viewState.values.first() - let invites = try XCTUnwrap(context.viewState.invites) - XCTAssertTrue(invites.isEmpty) - } - - func testListState() async throws { - setupViewModel(roomSummaries: .mockInvites) - _ = await context.$viewState.values.first(where: { !$0.invites.isEmpty }) - let invites = try XCTUnwrap(context.viewState.invites) - XCTAssertEqual(invites.count, 2) - } - - func testAcceptInvite() async throws { - let invites: [RoomSummary] = .mockInvites - guard case .filled(let details) = invites.first else { - XCTFail("No invite found") - return - } - setupViewModel(roomSummaries: invites) - - let deferred = deferFulfillment(viewModel.actions) { action in - switch action { - case .openRoom: - return true - } - } - - context.send(viewAction: .accept(.init(roomDetails: details, isUnread: false))) - let action = try await deferred.fulfill() - - guard case .openRoom(let roomID) = action else { - XCTFail("Wrong view model action") - return - } - XCTAssertEqual(details.id, roomID) - } - - func testDeclineInvite() async throws { - let invites: [RoomSummary] = .mockInvites - guard case .filled(let details) = invites.first else { - XCTFail("No invite found") - return - } - setupViewModel(roomSummaries: invites) - context.send(viewAction: .decline(.init(roomDetails: details, isUnread: false))) - XCTAssertNotNil(context.alertInfo) - } - - // MARK: - Private - - private func setupViewModel(roomSummaries: [RoomSummary]? = nil) { - if let roomSummaries { - let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(roomSummaries))) - clientProxy.inviteSummaryProvider = summaryProvider - clientProxy.roomSummaryProvider = summaryProvider - } - - viewModel = InvitesScreenViewModel(userSession: userSession, - appSettings: ServiceLocator.shared.settings, - analytics: ServiceLocator.shared.analytics, - userIndicatorController: ServiceLocator.shared.userIndicatorController, - notificationCenterProtocol: mockNotificationCenter) - } -} diff --git a/UnitTests/Sources/RoomListFiltersStateTests.swift b/UnitTests/Sources/RoomListFiltersStateTests.swift index 89d6e75a7..786330cbd 100644 --- a/UnitTests/Sources/RoomListFiltersStateTests.swift +++ b/UnitTests/Sources/RoomListFiltersStateTests.swift @@ -28,7 +28,7 @@ final class RoomListFiltersStateTests: XCTestCase { func testInitialState() { XCTAssertFalse(state.isFiltering) XCTAssertEqual(state.activeFilters, []) - XCTAssertEqual(state.availableFilters, RoomListFilter.allCases.filter { $0 != .invites }) + XCTAssertEqual(state.availableFilters, RoomListFilter.allCases) } func testSetAndUnsetFilters() { @@ -39,7 +39,7 @@ final class RoomListFiltersStateTests: XCTestCase { state.deactivateFilter(.unreads) XCTAssertFalse(state.isFiltering) XCTAssertEqual(state.activeFilters, []) - XCTAssertEqual(state.availableFilters, RoomListFilter.allCases.filter { $0 != .invites }) + XCTAssertEqual(state.availableFilters, RoomListFilter.allCases) } func testMutuallyExclusiveFilters() { @@ -51,7 +51,7 @@ final class RoomListFiltersStateTests: XCTestCase { state.deactivateFilter(.people) XCTAssertFalse(state.isFiltering) XCTAssertEqual(state.activeFilters, []) - XCTAssertEqual(state.availableFilters, RoomListFilter.allCases.filter { $0 != .invites }) + XCTAssertEqual(state.availableFilters, RoomListFilter.allCases) state.activateFilter(.rooms) XCTAssertTrue(state.isFiltering) @@ -80,7 +80,7 @@ final class RoomListFiltersStateTests: XCTestCase { state.clearFilters() XCTAssertFalse(state.isFiltering) XCTAssertEqual(state.activeFilters, []) - XCTAssertEqual(state.availableFilters, RoomListFilter.allCases.filter { $0 != .invites }) + XCTAssertEqual(state.availableFilters, RoomListFilter.allCases) } func testOrder() { @@ -90,7 +90,7 @@ final class RoomListFiltersStateTests: XCTestCase { state.deactivateFilter(.favourites) XCTAssertEqual(state.activeFilters, []) - XCTAssertEqual(state.availableFilters, RoomListFilter.allCases.filter { $0 != .invites }) + XCTAssertEqual(state.availableFilters, RoomListFilter.allCases) state.activateFilter(.rooms) XCTAssertEqual(state.activeFilters, [.rooms])