From b9a6ebe03ab2714dbd76d6e2a968d4fac236bc26 Mon Sep 17 00:00:00 2001 From: Mauro <34335419+Velin92@users.noreply.github.com> Date: Tue, 12 Dec 2023 11:17:15 +0100 Subject: [PATCH] Periphery to detect dead code (#2227) --- .periphery.yml | 18 +++ ElementX.xcodeproj/project.pbxproj | 114 ++++++++++++++---- .../Mocks/AggregatedReactionMock.swift | 12 -- .../Other/AccessibilityIdentifiers.swift | 3 - ElementX/Sources/Other/Extensions/Alert.swift | 11 -- .../SwiftUI/Layout/AlignedScrollView.swift | 37 ------ .../AuthenticationTextFieldStyle.swift | 2 +- .../View/PollFormScreen.swift | 3 - .../AdvancedSettingsScreenCoordinator.swift | 11 -- .../AdvancedSettingsScreenModels.swift | 2 - .../AdvancedSettingsScreenViewModel.swift | 6 - ...ancedSettingsScreenViewModelProtocol.swift | 1 - ElementX/SupportingFiles/target.yml | 1 + Tools/Sources/SetupProject.swift | 2 +- project.yml | 10 ++ 15 files changed, 121 insertions(+), 112 deletions(-) create mode 100644 .periphery.yml delete mode 100644 ElementX/Sources/Other/SwiftUI/Layout/AlignedScrollView.swift diff --git a/.periphery.yml b/.periphery.yml new file mode 100644 index 000000000..db3d0a548 --- /dev/null +++ b/.periphery.yml @@ -0,0 +1,18 @@ +project: ElementX.xcodeproj +schemes: +- ElementX +- IntegrationTests +- UITests +- UnitTests +targets: +- ElementX +- IntegrationTests +- NCE +- NSE +- UITests +- UnitTests +report_exclude: + # includes subscript which is not detectable: https://github.com/apple/swift/issues/56541 + - ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenModels.swift +verbose: true +retain_swift_ui_previews: true diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 4dda4acb9..f4ab1e6fd 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -3,9 +3,23 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 56; objects = { +/* Begin PBXAggregateTarget section */ + F8E276FD6DC43EADB85241BC /* Periphery */ = { + isa = PBXAggregateTarget; + buildConfigurationList = C0090A197E33AEC1E7CD03FD /* Build configuration list for PBXAggregateTarget "Periphery" */; + buildPhases = ( + 23C8392ACDCF25131DAF6F9B /* Scan */, + ); + dependencies = ( + ); + name = Periphery; + productName = Periphery; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ 0033481EE363E4914295F188 /* LocalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C070FD43DC6BF4E50217965A /* LocalizationTests.swift */; }; 0180C44B997EDA8D21F883AC /* RoomNotificationSettingsCustomSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B746EFA112532A7B701FB914 /* RoomNotificationSettingsCustomSectionView.swift */; }; @@ -216,7 +230,6 @@ 388D39ED9FE1122EA6D76BF2 /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BC84BA0AF11C2128D58ABD /* Common.swift */; }; 3982C505960006B341CFD0C6 /* UserDetailsEditScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27D0EA07BD545CC9F234DB8D /* UserDetailsEditScreenModels.swift */; }; 3982E60F9C126437D5E488A3 /* PillContextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A6314FDC51DA25712D9A81 /* PillContextTests.swift */; }; - 39929D29B265C3F6606047DE /* AlignedScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8872E9C5E91E9F2BFC4EBCCA /* AlignedScrollView.swift */; }; 39A987B3E41B976D1DF944C6 /* CallScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A63A59BFDDC494B1C20119 /* CallScreenViewModel.swift */; }; 3A08584ECDD4A4541DBF21F8 /* EmojiLoaderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 201305507D7DFD16E544563A /* EmojiLoaderProtocol.swift */; }; 3A164187907DA43B7858F9EC /* CompletionSuggestionServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5EA0312A6262484AA393AC9 /* CompletionSuggestionServiceTests.swift */; }; @@ -738,6 +751,7 @@ BDED6DA7AD1E76018C424143 /* LegalInformationScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C34667458773B02AB5FB0B2 /* LegalInformationScreenViewModel.swift */; }; BEA646DF302711A753F0D420 /* MapTilerStyleBuilderProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 225EFCA26877E75CDFE7F48D /* MapTilerStyleBuilderProtocol.swift */; }; BF675964C9159F718589C36A /* AnalyticsSettingsScreenUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16037EE9E9A52AF37B7818E3 /* AnalyticsSettingsScreenUITests.swift */; }; + BFACBE223330783BF9F546E7 /* NCE.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = A58DB8EFB91BE920762025D0 /* NCE.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; BFEB24336DFD5F196E6F3456 /* IntentionalMentions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF5CBAF69BDF5DF31C661E1 /* IntentionalMentions.swift */; }; C0090506A52A1991BAF4BA68 /* NotificationSettingsChatType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07579F9C29001E40715F3014 /* NotificationSettingsChatType.swift */; }; C051475DFF4C8EBDDF4DC8E4 /* StartChatScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B99E13633862847D8B7E2815 /* StartChatScreenModels.swift */; }; @@ -1001,6 +1015,13 @@ remoteGlobalIDString = C0FAEB81CFD9776CD78CE489; remoteInfo = ElementX; }; + 5B4117465BFEC82A5835777C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AC22997D58D612146053154D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3DA14C431BC6B0E10CDF50C9; + remoteInfo = NCE; + }; 6848AF4480814C5F810FB7EB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AC22997D58D612146053154D /* Project object */; @@ -1025,6 +1046,7 @@ dstSubfolderSpec = 13; files = ( EB88DBD77221E2CFE463018C /* NSE.appex in Embed Foundation Extensions */, + BFACBE223330783BF9F546E7 /* NCE.appex in Embed Foundation Extensions */, ); name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; @@ -1044,7 +1066,7 @@ 033DB41C51865A2E83174E87 /* target.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = target.yml; sourceTree = ""; }; 035177BCD8E8308B098AC3C2 /* WindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowManager.swift; sourceTree = ""; }; 0376C429FAB1687C3D905F3E /* MockCoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCoder.swift; sourceTree = ""; }; - 0392E3FDE372C9B56FEEED8B /* test_voice_message.m4a */ = {isa = PBXFileReference; path = test_voice_message.m4a; sourceTree = ""; }; + 0392E3FDE372C9B56FEEED8B /* test_voice_message.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_voice_message.m4a; sourceTree = ""; }; 03DD998E523D4EC93C7ED703 /* RoomNotificationSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomNotificationSettingsScreenViewModelProtocol.swift; sourceTree = ""; }; 03FABD73FD8086EFAB699F42 /* MediaUploadPreviewScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaUploadPreviewScreenViewModelTests.swift; sourceTree = ""; }; 044E501B8331B339874D1B96 /* CompoundIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompoundIcon.swift; sourceTree = ""; }; @@ -1105,7 +1127,7 @@ 127C8472672A5BA09EF1ACF8 /* CurrentValuePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentValuePublisher.swift; sourceTree = ""; }; 12EDAFB64FA5F6812D54F39A /* MigrationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrationScreenViewModel.swift; sourceTree = ""; }; 12F1E7F9C2BE8BB751037826 /* WaitlistScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitlistScreenCoordinator.swift; sourceTree = ""; }; - 1304D9191300873EADA52D6E /* IntegrationTests.xctestplan */ = {isa = PBXFileReference; path = IntegrationTests.xctestplan; sourceTree = ""; }; + 1304D9191300873EADA52D6E /* IntegrationTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = IntegrationTests.xctestplan; sourceTree = ""; }; 130ED565A078F7E0B59D9D25 /* UNTextInputNotificationResponse+Creator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UNTextInputNotificationResponse+Creator.swift"; sourceTree = ""; }; 13802897C7AFA360EA74C0B0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; }; 1423AB065857FA546444DB15 /* NotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationManager.swift; sourceTree = ""; }; @@ -1508,7 +1530,6 @@ 86A6F283BC574FDB96ABBB07 /* DeveloperOptionsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeveloperOptionsScreenViewModel.swift; sourceTree = ""; }; 874A1842477895F199567BD7 /* TimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineView.swift; sourceTree = ""; }; 88410BD213FDF9B28E8B671F /* UserDetailsEditScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailsEditScreen.swift; sourceTree = ""; }; - 8872E9C5E91E9F2BFC4EBCCA /* AlignedScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlignedScrollView.swift; sourceTree = ""; }; 8896CDD20CA2D87EA3B848A1 /* RoomNotificationSettingsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomNotificationSettingsScreen.swift; sourceTree = ""; }; 889DEDD63C68ABDA8AD29812 /* VoiceMessageMediaManagerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceMessageMediaManagerProtocol.swift; sourceTree = ""; }; 89233612A8632AD7E2803620 /* AudioPlayerStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlayerStateTests.swift; sourceTree = ""; }; @@ -1527,7 +1548,7 @@ 8D55702474F279D910D2D162 /* RoomStateEventStringBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomStateEventStringBuilder.swift; sourceTree = ""; }; 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 = ""; }; + 8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UITests.xctestplan; sourceTree = ""; }; 8E1BBA73B611EDEEA6E20E05 /* InvitesScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenModels.swift; sourceTree = ""; }; 8EC57A32ABC80D774CC663DB /* SettingsScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsScreenUITests.swift; sourceTree = ""; }; 8F21ED7205048668BEB44A38 /* AppActivityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActivityView.swift; sourceTree = ""; }; @@ -1662,7 +1683,7 @@ B50F03079F6B5EF9CA005F14 /* TimelineProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineProxyProtocol.swift; sourceTree = ""; }; B590BD4507D4F0A377FDE01A /* LoadableAvatarImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadableAvatarImage.swift; sourceTree = ""; }; B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeRoomTimelineView.swift; sourceTree = ""; }; - B61C339A2FDDBD067FF6635C /* ConfettiScene.scn */ = {isa = PBXFileReference; path = ConfettiScene.scn; sourceTree = ""; }; + B61C339A2FDDBD067FF6635C /* ConfettiScene.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = ConfettiScene.scn; sourceTree = ""; }; B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineView.swift; sourceTree = ""; }; B63B69F9A2BC74DD40DC75C8 /* AdvancedSettingsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsScreenViewModel.swift; sourceTree = ""; }; B697816AF93DA06EC58C5D70 /* WaitlistScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitlistScreenViewModelProtocol.swift; sourceTree = ""; }; @@ -1768,7 +1789,7 @@ CD95B3714F806AC9CF9A557B /* ComposerToolbarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposerToolbarViewModel.swift; sourceTree = ""; }; CDB3227C7A74B734924942E9 /* RoomSummaryProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomSummaryProvider.swift; sourceTree = ""; }; CEE0E6043EFCF6FD2A341861 /* TimelineReplyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineReplyView.swift; sourceTree = ""; }; - CEE41494C837AA403A06A5D9 /* UnitTests.xctestplan */ = {isa = PBXFileReference; path = UnitTests.xctestplan; sourceTree = ""; }; + CEE41494C837AA403A06A5D9 /* UnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.xctestplan; sourceTree = ""; }; CF48AF076424DBC1615C74AD /* AuthenticationServiceProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationServiceProxy.swift; sourceTree = ""; }; D0140615D2232612C813FD6C /* EncryptedHistoryRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncryptedHistoryRoomTimelineItem.swift; sourceTree = ""; }; D071F86CD47582B9196C9D16 /* UserDiscoverySection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDiscoverySection.swift; sourceTree = ""; }; @@ -1873,7 +1894,7 @@ ECF79FB25E2D4BD6F50CE7C9 /* RoomMembersListScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMembersListScreenViewModel.swift; sourceTree = ""; }; ED044D00F2176681CC02CD54 /* HomeScreenRoomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenRoomCell.swift; sourceTree = ""; }; ED1D792EB82506A19A72C8DE /* RoomTimelineItemProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemProtocol.swift; sourceTree = ""; }; - ED482057AE39D5C6D9C5F3D8 /* message.caf */ = {isa = PBXFileReference; path = message.caf; sourceTree = ""; }; + ED482057AE39D5C6D9C5F3D8 /* message.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = message.caf; sourceTree = ""; }; ED983D4DCA5AFA6E1ED96099 /* StateRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateRoomTimelineView.swift; sourceTree = ""; }; EDAA4472821985BF868CC21C /* ServerSelectionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerSelectionViewModelTests.swift; sourceTree = ""; }; EE378083653EF0C9B5E9D580 /* EmoteRoomTimelineItemContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmoteRoomTimelineItemContent.swift; sourceTree = ""; }; @@ -1889,7 +1910,7 @@ F174A5627CDB3CAF280D1880 /* EmojiPickerScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenModels.swift; sourceTree = ""; }; F17EFA1D3D09FC2F9C5E1CB2 /* MediaProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaProvider.swift; sourceTree = ""; }; F1B8500C152BC59445647DA8 /* UnsupportedRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnsupportedRoomTimelineItem.swift; sourceTree = ""; }; - F2D513D2477B57F90E98EEC0 /* portrait_test_video.mp4 */ = {isa = PBXFileReference; path = portrait_test_video.mp4; sourceTree = ""; }; + F2D513D2477B57F90E98EEC0 /* portrait_test_video.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = portrait_test_video.mp4; sourceTree = ""; }; F31F59030205A6F65B057E1A /* MatrixEntityRegexTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixEntityRegexTests.swift; sourceTree = ""; }; F348B5F2C12F9D4F4B4D3884 /* VideoRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoRoomTimelineItem.swift; sourceTree = ""; }; F36C0A6D59717193F49EA986 /* UserSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionTests.swift; sourceTree = ""; }; @@ -4327,7 +4348,6 @@ CE2FBFD64A89F5DBE4EB30DB /* Layout */ = { isa = PBXGroup; children = ( - 8872E9C5E91E9F2BFC4EBCCA /* AlignedScrollView.swift */, 42236480CF0431535EBE8387 /* CustomLayoutLabelStyle.swift */, 565F1B2B300597C616B37888 /* FullscreenDialog.swift */, 49ABAB186CF00B15C5521D04 /* MenuSheetLabelStyle.swift */, @@ -4773,6 +4793,7 @@ ); dependencies = ( 2C29670603B37E38705D5FF1 /* PBXTargetDependency */, + AAAF4D378F9A36CA0E108B37 /* PBXTargetDependency */, ); name = ElementX; packageProductDependencies = ( @@ -4868,6 +4889,9 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; + KnownAssetTags = ( + New, + ); LastUpgradeCheck = 1430; ORGANIZATIONNAME = Element; TargetAttributes = { @@ -4888,6 +4912,9 @@ DevelopmentTeam = 7J4U792NQT; TestTargetID = C0FAEB81CFD9776CD78CE489; }; + F8E276FD6DC43EADB85241BC = { + DevelopmentTeam = 7J4U792NQT; + }; FEB53A5BC378C913769656D8 = { DevelopmentTeam = "$(DEVELOPMENT_TEAM)"; }; @@ -4946,6 +4973,7 @@ D3DB351B7FBE0F49649171FC /* IntegrationTests */, 3DA14C431BC6B0E10CDF50C9 /* NCE */, FEB53A5BC378C913769656D8 /* NSE */, + F8E276FD6DC43EADB85241BC /* Periphery */, 0E28CD62691FDBC63147D5E3 /* UITests */, 32C23C8D224D46EFE62AFAD0 /* UnitTests */, ); @@ -5040,6 +5068,25 @@ shellPath = /bin/sh; shellScript = "export PATH=\"$PATH:/opt/homebrew/bin\"\nif which sourcery >/dev/null; then\n sourcery --config Tools/Sourcery/sourcery_automockable_config.yml\nelse\n echo \"warning: Sourcery not installed, run swift run tools setup-project\"\nfi\n"; }; + 23C8392ACDCF25131DAF6F9B /* Scan */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = Scan; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export PATH=\"$PATH:/opt/homebrew/bin\"\nperiphery scan --format xcode\n"; + }; 98CA896D84BFD53B2554E891 /* ⚠️ SwiftLint */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -5298,7 +5345,6 @@ 53C1E7F6A7D6409D89F36ED7 /* AggregatedReactionMock.swift in Sources */, 4219391CD2351E410554B3E8 /* AggregratedReaction.swift in Sources */, 64D05250CEDE8B604119F6E6 /* Alert.swift in Sources */, - 39929D29B265C3F6606047DE /* AlignedScrollView.swift in Sources */, 155063E980E763D4910EA3CF /* Analytics+SwiftUI.swift in Sources */, F7567DD6635434E8C563BF85 /* AnalyticsClientProtocol.swift in Sources */, 54C774874BED4A8FAD1F22FE /* AnalyticsConfiguration.swift in Sources */, @@ -6065,6 +6111,11 @@ isa = PBXTargetDependency; productRef = B717B96C04D7B6A1212D9EDC /* PrefireTestsPlugin */; }; + AAAF4D378F9A36CA0E108B37 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3DA14C431BC6B0E10CDF50C9 /* NCE */; + targetProxy = 5B4117465BFEC82A5835777C /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -6166,9 +6217,7 @@ "@executable_path/../../Frameworks", ); MARKETING_VERSION = "$(MARKETING_VERSION)"; - OTHER_SWIFT_FLAGS = ( - "-DIS_NSE", - ); + OTHER_SWIFT_FLAGS = "-DIS_NSE"; PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse"; PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; PRODUCT_NAME = NSE; @@ -6178,6 +6227,12 @@ }; name = Release; }; + 584E20C1DA5831E0694FE350 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; 62E1B7866DF0ED442C39A83B /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = E65DA46BD5CA83747AE144F3 /* secrets.xcconfig */; @@ -6193,9 +6248,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = "$(MARKETING_VERSION)"; - OTHER_SWIFT_FLAGS = ( - "-DIS_MAIN_APP", - ); + OTHER_SWIFT_FLAGS = "-DIS_MAIN_APP"; PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills"; PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(APP_NAME)"; @@ -6221,9 +6274,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = "$(MARKETING_VERSION)"; - OTHER_SWIFT_FLAGS = ( - "-DIS_MAIN_APP", - ); + OTHER_SWIFT_FLAGS = "-DIS_MAIN_APP"; PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills"; PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(APP_NAME)"; @@ -6315,6 +6366,7 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SUPPORTS_MACCATALYST = NO; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; @@ -6391,6 +6443,7 @@ ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; + SUPPORTS_MACCATALYST = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -6464,9 +6517,7 @@ "@executable_path/../../Frameworks", ); MARKETING_VERSION = "$(MARKETING_VERSION)"; - OTHER_SWIFT_FLAGS = ( - "-DIS_NSE", - ); + OTHER_SWIFT_FLAGS = "-DIS_NSE"; PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse"; PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; PRODUCT_NAME = NSE; @@ -6514,6 +6565,12 @@ }; name = Release; }; + D31A0743D3A01F7671ABD26E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; F0A74453D306F668178A859E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6580,6 +6637,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + C0090A197E33AEC1E7CD03FD /* Build configuration list for PBXAggregateTarget "Periphery" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 584E20C1DA5831E0694FE350 /* Debug */, + D31A0743D3A01F7671ABD26E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; CBD61DB8FBC472BAA66A0CBD /* Build configuration list for PBXNativeTarget "NSE" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ElementX/Sources/Mocks/AggregatedReactionMock.swift b/ElementX/Sources/Mocks/AggregatedReactionMock.swift index b7890bebe..24fea97b1 100644 --- a/ElementX/Sources/Mocks/AggregatedReactionMock.swift +++ b/ElementX/Sources/Mocks/AggregatedReactionMock.swift @@ -34,18 +34,6 @@ extension AggregatedReaction { private static var alice: String { RoomMemberProxyMock.mockAlice.userID } - - static var mockThumbsUpHighlighted: AggregatedReaction { - mockReaction(key: "👍", senderIDs: [alice] + mockIds(4)) - } - - static var mockClap: AggregatedReaction { - mockReaction(key: "👏", senderIDs: mockIds(1)) - } - - static var mockParty: AggregatedReaction { - mockReaction(key: "🎉", senderIDs: mockIds(20)) - } static var mockReactions: [AggregatedReaction] { [ diff --git a/ElementX/Sources/Other/AccessibilityIdentifiers.swift b/ElementX/Sources/Other/AccessibilityIdentifiers.swift index 7390bbd3d..8accb7818 100644 --- a/ElementX/Sources/Other/AccessibilityIdentifiers.swift +++ b/ElementX/Sources/Other/AccessibilityIdentifiers.swift @@ -67,7 +67,6 @@ enum A11yIdentifiers { struct AppLockSetupSettingsScreen { let changePIN = "app_lock_setup_settings-change_pin" let removePIN = "app_lock_setup_settings-remove_pin" - let removePINAlertYes = "app_lock_setup_settings-remove_pin_alert_yes" } struct AnalyticsPromptScreen { @@ -94,7 +93,6 @@ enum A11yIdentifiers { struct HomeScreen { let userAvatar = "home_screen-user_avatar" let settings = "home_screen-settings" - let signOut = "home_screen-sign_out" let verificationBannerContinue = "home_screen-verification_continue" let recoveryKeyConfirmationBannerContinue = "home_screen-recovery_key_confirmation_continue" let invites = "home_screen-invites" @@ -218,7 +216,6 @@ enum A11yIdentifiers { let password = "soft_logout-password" let forgotPassword = "soft_logout-forgot_password" let next = "soft_logout-next" - let unsupportedServer = "soft_logout-unsupported_server" let clearDataTitle = "soft_logout-clear_data_title" let clearDataMessage = "soft_logout-clear_data_message" let clearData = "soft_logout-clear_data" diff --git a/ElementX/Sources/Other/Extensions/Alert.swift b/ElementX/Sources/Other/Extensions/Alert.swift index 051a18811..c6a02b7cb 100644 --- a/ElementX/Sources/Other/Extensions/Alert.swift +++ b/ElementX/Sources/Other/Extensions/Alert.swift @@ -31,17 +31,6 @@ extension View { }) return alert(item.wrappedValue?.title ?? "", isPresented: binding, presenting: item.wrappedValue, actions: actions, message: message) } - - func alert(item: Binding, @ViewBuilder actions: (Item) -> Actions) -> some View where Item: AlertProtocol, Actions: View { - let binding = Binding(get: { - item.wrappedValue != nil - }, set: { newValue in - if !newValue { - item.wrappedValue = nil - } - }) - return alert(item.wrappedValue?.title ?? "", isPresented: binding, presenting: item.wrappedValue, actions: actions) - } } /// A type that describes an alert to be shown to the user. diff --git a/ElementX/Sources/Other/SwiftUI/Layout/AlignedScrollView.swift b/ElementX/Sources/Other/SwiftUI/Layout/AlignedScrollView.swift deleted file mode 100644 index ed9dcfcdb..000000000 --- a/ElementX/Sources/Other/SwiftUI/Layout/AlignedScrollView.swift +++ /dev/null @@ -1,37 +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 - -/// A horizontal `ScrollView` that will pad the start of it's content -/// when the alignment is set to `.trailing`. -struct AlignedScrollView: View { - let alignment: HorizontalAlignment - var showsIndicators = true - - @ViewBuilder let content: () -> Content - - @State private var scrollViewFrame: CGRect = .zero - - var body: some View { - ScrollView(.horizontal, showsIndicators: showsIndicators) { - content() - .frame(minWidth: scrollViewFrame.width, - alignment: Alignment(horizontal: alignment, vertical: .center)) - } - .readFrame($scrollViewFrame) - } -} diff --git a/ElementX/Sources/Screens/Authentication/AuthenticationTextFieldStyle.swift b/ElementX/Sources/Screens/Authentication/AuthenticationTextFieldStyle.swift index 30278a7d7..812f4e8c7 100644 --- a/ElementX/Sources/Screens/Authentication/AuthenticationTextFieldStyle.swift +++ b/ElementX/Sources/Screens/Authentication/AuthenticationTextFieldStyle.swift @@ -145,7 +145,7 @@ public struct AuthenticationTextFieldStyle: TextFieldStyle { } struct ElementTextFieldStyle_Previews: PreviewProvider { - public static var previews: some View { + static var previews: some View { ScrollView { VStack(spacing: 20) { // Plain text field. diff --git a/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift b/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift index c44062031..b489b09e8 100644 --- a/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift +++ b/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift @@ -51,9 +51,6 @@ struct PollFormScreen: View { Section { ListRow(label: .plain(title: L10n.screenCreatePollQuestionHint), kind: .textField(text: $context.question, axis: .vertical)) - .introspect(.textField, on: .supportedVersions) { textField in - textField.clearButtonMode = .whileEditing - } .focused($focus, equals: .question) .accessibilityIdentifier(A11yIdentifiers.pollFormScreen.question) .onSubmit { diff --git a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenCoordinator.swift b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenCoordinator.swift index c0ef9cdec..4e73b09b3 100644 --- a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenCoordinator.swift +++ b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenCoordinator.swift @@ -17,20 +17,9 @@ import Combine import SwiftUI -enum AdvancedSettingsScreenCoordinatorAction { - case clearCache -} - final class AdvancedSettingsScreenCoordinator: CoordinatorProtocol { private var viewModel: AdvancedSettingsScreenViewModelProtocol - private let actionsSubject: PassthroughSubject = .init() - private var cancellables = Set() - - var actions: AnyPublisher { - actionsSubject.eraseToAnyPublisher() - } - init() { viewModel = AdvancedSettingsScreenViewModel(advancedSettings: ServiceLocator.shared.settings) } diff --git a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenModels.swift b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenModels.swift index f863b632c..fa94bc768 100644 --- a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenModels.swift +++ b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenModels.swift @@ -16,8 +16,6 @@ import Foundation -enum AdvancedSettingsScreenViewModelAction { } - struct AdvancedSettingsScreenViewState: BindableState { var bindings: AdvancedSettingsScreenViewStateBindings } diff --git a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModel.swift b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModel.swift index 5500a2769..957948cd5 100644 --- a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModel.swift +++ b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModel.swift @@ -20,12 +20,6 @@ import SwiftUI typealias AdvancedSettingsScreenViewModelType = StateStoreViewModel class AdvancedSettingsScreenViewModel: AdvancedSettingsScreenViewModelType, AdvancedSettingsScreenViewModelProtocol { - private var actionsSubject: PassthroughSubject = .init() - - var actions: AnyPublisher { - actionsSubject.eraseToAnyPublisher() - } - init(advancedSettings: AdvancedSettingsProtocol) { let bindings = AdvancedSettingsScreenViewStateBindings(advancedSettings: advancedSettings) let state = AdvancedSettingsScreenViewState(bindings: bindings) diff --git a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModelProtocol.swift b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModelProtocol.swift index 34b4b7cfa..0588644eb 100644 --- a/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModelProtocol.swift +++ b/ElementX/Sources/Screens/Settings/AvancedOptionsScreen/AdvancedSettingsScreenViewModelProtocol.swift @@ -18,6 +18,5 @@ import Combine @MainActor protocol AdvancedSettingsScreenViewModelProtocol { - var actions: AnyPublisher { get } var context: AdvancedSettingsScreenViewModelType.Context { get } } diff --git a/ElementX/SupportingFiles/target.yml b/ElementX/SupportingFiles/target.yml index b1b42c039..6f090f16b 100644 --- a/ElementX/SupportingFiles/target.yml +++ b/ElementX/SupportingFiles/target.yml @@ -176,6 +176,7 @@ targets: dependencies: - target: NSE + - target: NCE - package: MatrixRustSDK - package: Compound - package: Algorithms diff --git a/Tools/Sources/SetupProject.swift b/Tools/Sources/SetupProject.swift index 728078e08..0b5a56491 100644 --- a/Tools/Sources/SetupProject.swift +++ b/Tools/Sources/SetupProject.swift @@ -19,7 +19,7 @@ struct SetupProject: ParsableCommand { } func brewBundleInstall() throws { - try Utilities.zsh("brew install xcodegen swiftgen swiftformat git-lfs sourcery mint kiliankoe/formulae/swift-outdated localazy/tools/localazy") + try Utilities.zsh("brew install xcodegen swiftgen swiftformat git-lfs sourcery mint kiliankoe/formulae/swift-outdated localazy/tools/localazy peripheryapp/periphery/periphery") if !ci { try Utilities.zsh("brew install swiftlint") } diff --git a/project.yml b/project.yml index 773fcc0d0..60bd8844d 100644 --- a/project.yml +++ b/project.yml @@ -32,6 +32,7 @@ settings: MARKETING_VERSION: 1.4.4 CURRENT_PROJECT_VERSION: 1 DEVELOPMENT_TEAM: 7J4U792NQT + SUPPORTS_MACCATALYST: NO include: - path: ElementX/SupportingFiles/target.yml @@ -120,3 +121,12 @@ packages: DSWaveformImage: url: https://github.com/dmrschmidt/DSWaveformImage exactVersion: 14.1.1 + +aggregateTargets: + Periphery: + buildScripts: + - name: "Scan" + script: | + export PATH="$PATH:/opt/homebrew/bin" + periphery scan --format xcode + basedOnDependencyAnalysis: false