From ac77743c7ab538282d3a2cc0ed9e3e23d752ab5e Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Thu, 22 Dec 2022 13:59:38 +0200 Subject: [PATCH] Add retry decryption encrypted timeline item debug menu option (#384) * Fixed a couple of warnings (+2 squashed commits) Squashed commits: [21fbc3b0] Add changelog [abb092c6] Add retry decryption encrypted timeline item debug menu option * Cleanup room list state computations * Bump the RustSDK to v1.0.25-alpha * Fix brew CI errors: remove imagemagick and brew lock file entirely * Fix release script version bumping * Bump ruby dependencies --- Brewfile | 4 +- Brewfile.lock.json | 188 ------------------ ElementX.xcodeproj/project.pbxproj | 24 +-- .../xcshareddata/swiftpm/Package.resolved | 4 +- .../en.lproj/Untranslated.strings | 2 + .../Generated/Strings+Untranslated.swift | 2 + .../HomeScreen/HomeScreenViewModel.swift | 15 +- .../RoomScreen/RoomScreenViewModel.swift | 25 ++- .../View/TimelineItemContextMenu.swift | 7 +- .../Sources/Services/Room/MockRoomProxy.swift | 2 + .../Sources/Services/Room/RoomProxy.swift | 18 +- .../Services/Room/RoomProxyProtocol.swift | 2 + .../RoomSummary/RoomSummaryProvider.swift | 7 +- .../Timeline/MockRoomTimelineProvider.swift | 2 + .../Timeline/RoomTimelineProvider.swift | 4 + .../RoomTimelineProviderProtocol.swift | 2 + .../MockRoomTimelineController.swift | 2 + .../RoomTimelineController.swift | 4 + .../RoomTimelineControllerProtocol.swift | 2 + Gemfile.lock | 60 +++--- changelog.d/pr-384.feature | 1 + fastlane/Fastfile | 4 +- project.yml | 2 +- 23 files changed, 117 insertions(+), 266 deletions(-) delete mode 100644 Brewfile.lock.json create mode 100644 changelog.d/pr-384.feature diff --git a/Brewfile b/Brewfile index 0660ae8f0..725d929e9 100644 --- a/Brewfile +++ b/Brewfile @@ -1,7 +1,7 @@ brew "xcodegen" brew "swiftgen" brew "swiftformat" -brew "imagemagick" brew "git-lfs" -#brew "swiftlint" # Fails on the CI: `Target /usr/local/bin/swiftlint Target /usr/local/bin/swiftlint already exists`. Installed through https://github.com/actions/virtual-environments/blob/main/images/macos/macos-12-Readme.md#linters \ No newline at end of file +#brew "swiftlint" # Fails on the CI: `Target /usr/local/bin/swiftlint Target /usr/local/bin/swiftlint already exists`. Installed through https://github.com/actions/virtual-environments/blob/main/images/macos/macos-12-Readme.md#linters +#brew "imagemagick" # Upgrading imagemagick has failed! \ No newline at end of file diff --git a/Brewfile.lock.json b/Brewfile.lock.json deleted file mode 100644 index 4e9936caf..000000000 --- a/Brewfile.lock.json +++ /dev/null @@ -1,188 +0,0 @@ -{ - "entries": { - "brew": { - "xcodegen": { - "version": "2.32.0", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:22d97109850126936386bc38a22459d9e8ac3ba1e00b254f5149e954f543c2ec", - "sha256": "22d97109850126936386bc38a22459d9e8ac3ba1e00b254f5149e954f543c2ec" - }, - "arm64_big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:ab30a37ef8e3c885b1cd05c30a844612237f52308556256cb4698784d00a2ad4", - "sha256": "ab30a37ef8e3c885b1cd05c30a844612237f52308556256cb4698784d00a2ad4" - }, - "monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:6ef4431936bc868e8026c9ddb8396fa5ac2d9d53a611a59b23fc081d3a5ad0bb", - "sha256": "6ef4431936bc868e8026c9ddb8396fa5ac2d9d53a611a59b23fc081d3a5ad0bb" - }, - "big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:4c990bf05734cbb192171079d69e996837092603985c41904ddec799aa51fcbe", - "sha256": "4c990bf05734cbb192171079d69e996837092603985c41904ddec799aa51fcbe" - }, - "catalina": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/xcodegen/blobs/sha256:330bf63ef11b30bde8f32aea2d46604fd16bcfcff1b918ab95fe294ea9f3708a", - "sha256": "330bf63ef11b30bde8f32aea2d46604fd16bcfcff1b918ab95fe294ea9f3708a" - } - } - } - }, - "swiftgen": { - "version": "6.6.2", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftgen/blobs/sha256:22d90e985b8a6ab49311800eeb7ab721f4872bc85a60b44b7ad57954453569c8", - "sha256": "22d90e985b8a6ab49311800eeb7ab721f4872bc85a60b44b7ad57954453569c8" - }, - "monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftgen/blobs/sha256:3c158aecb7ced0c489ef11f6a4c15a9d1449a40ad554388a0310116f510ec316", - "sha256": "3c158aecb7ced0c489ef11f6a4c15a9d1449a40ad554388a0310116f510ec316" - } - } - } - }, - "imagemagick": { - "version": "7.1.0-47", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_monterey": { - "cellar": "/opt/homebrew/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:b6082b989d0477541725ad38976c55744d5b0d1ead75282350de11b555cb83e4", - "sha256": "b6082b989d0477541725ad38976c55744d5b0d1ead75282350de11b555cb83e4" - }, - "arm64_big_sur": { - "cellar": "/opt/homebrew/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:6f30e374c6aa3993d9b04880d8a069a1af89a8aa0a6b0534e8baa43ea48b6be8", - "sha256": "6f30e374c6aa3993d9b04880d8a069a1af89a8aa0a6b0534e8baa43ea48b6be8" - }, - "monterey": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:79d86bc12202e8d0ecf7301abb267a0280f797849891d1389266ec2b591ebc60", - "sha256": "79d86bc12202e8d0ecf7301abb267a0280f797849891d1389266ec2b591ebc60" - }, - "big_sur": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:dbd5c5521f14dc98675dcf719bf429aa5b7213b5cd0f81de7fceb8419906ac90", - "sha256": "dbd5c5521f14dc98675dcf719bf429aa5b7213b5cd0f81de7fceb8419906ac90" - }, - "catalina": { - "cellar": "/usr/local/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:2edc6459b04c2ccd7e9773d46f1bd0296f361af0c9882eafe409aa4c04da3a01", - "sha256": "2edc6459b04c2ccd7e9773d46f1bd0296f361af0c9882eafe409aa4c04da3a01" - }, - "x86_64_linux": { - "cellar": "/home/linuxbrew/.linuxbrew/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/imagemagick/blobs/sha256:b23290ee6b050a85ce5e87c6fef387cafc5fbac65454f1aea2b0161310830cd5", - "sha256": "b23290ee6b050a85ce5e87c6fef387cafc5fbac65454f1aea2b0161310830cd5" - } - } - } - }, - "swiftformat": { - "version": "0.49.18", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:6362f6087bc3821f4271c3d17b3a4f180b1e1326646ddfb60f6d27bfb5a2a357", - "sha256": "6362f6087bc3821f4271c3d17b3a4f180b1e1326646ddfb60f6d27bfb5a2a357" - }, - "arm64_big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:e94cf1b66df0d712bbfbf509b98efaf31d39a61b82999314e1f3c0e45195c51a", - "sha256": "e94cf1b66df0d712bbfbf509b98efaf31d39a61b82999314e1f3c0e45195c51a" - }, - "monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:456e0c95a565adbb45a29747abfadf41c838a7f09fae052a874e59429a94ef14", - "sha256": "456e0c95a565adbb45a29747abfadf41c838a7f09fae052a874e59429a94ef14" - }, - "big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:d00204be714789fa8b35d4c6f6eea5813604aa09f3911635059973aa827d2e8c", - "sha256": "d00204be714789fa8b35d4c6f6eea5813604aa09f3911635059973aa827d2e8c" - }, - "catalina": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:b07f7221f3c5225ad0037293cecb95bde4f0dba4fa19797d84a3376dd1ad02ea", - "sha256": "b07f7221f3c5225ad0037293cecb95bde4f0dba4fa19797d84a3376dd1ad02ea" - }, - "x86_64_linux": { - "cellar": "/home/linuxbrew/.linuxbrew/Cellar", - "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c4a4ebd2f3f54b8f399551efaf47b3e419db2c729ffaf18a09e64bbf62d82f38", - "sha256": "c4a4ebd2f3f54b8f399551efaf47b3e419db2c729ffaf18a09e64bbf62d82f38" - } - } - } - }, - "git-lfs": { - "version": "3.2.0", - "bottle": { - "rebuild": 0, - "root_url": "https://ghcr.io/v2/homebrew/core", - "files": { - "arm64_monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:a81d5b29d1c0203f592e8af7b25ccb95431489ffa8dc595dbb1c39f1c08cfb46", - "sha256": "a81d5b29d1c0203f592e8af7b25ccb95431489ffa8dc595dbb1c39f1c08cfb46" - }, - "arm64_big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:f10c03ed48c4168d8b80164d053040452e772c978344cc485e386183de7d5c24", - "sha256": "f10c03ed48c4168d8b80164d053040452e772c978344cc485e386183de7d5c24" - }, - "monterey": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:2ccd239da97286fa2f9702f7c2731202819a6012163906b7e599e8fb218a6c95", - "sha256": "2ccd239da97286fa2f9702f7c2731202819a6012163906b7e599e8fb218a6c95" - }, - "big_sur": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:21c75c877159acff82ada003baa3ea7d65e2774a2636f740e4cfad4ae9d2d7b5", - "sha256": "21c75c877159acff82ada003baa3ea7d65e2774a2636f740e4cfad4ae9d2d7b5" - }, - "catalina": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:c428d687c3a70defa9178fd0b287cd8766f05bf113eb6ae8ce7bcb7940751b05", - "sha256": "c428d687c3a70defa9178fd0b287cd8766f05bf113eb6ae8ce7bcb7940751b05" - }, - "x86_64_linux": { - "cellar": ":any_skip_relocation", - "url": "https://ghcr.io/v2/homebrew/core/git-lfs/blobs/sha256:43e16ee02644936dbf6d2d504b8c66cd3e0c3dd1313436e9bd253c4c051e437c", - "sha256": "43e16ee02644936dbf6d2d504b8c66cd3e0c3dd1313436e9bd253c4c051e437c" - } - } - } - } - } - }, - "system": { - "macos": { - "monterey": { - "HOMEBREW_VERSION": "3.5.10", - "HOMEBREW_PREFIX": "/opt/homebrew", - "Homebrew/homebrew-core": "7b45a34a86645962ad642cb2e750662a995f076a", - "CLT": "", - "Xcode": "13.4.1", - "macOS": "12.5.1" - } - } - } -} diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 95670ac00..8b96eb444 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 54; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -43,6 +43,7 @@ 1281625B25371BE53D36CB3A /* SeparatorRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1ED7E89865201EE7D53E6DA /* SeparatorRoomTimelineItem.swift */; }; 12CCA59536EDD99A3272CF77 /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC3F82523D6F48B926D6AF68 /* AppSettings.swift */; }; 132D241B09F9044711FD70A5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 91DE43B8815918E590912DDA /* InfoPlist.strings */; }; + 1368EBBF25858519477FF8A7 /* ReadMarkerRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02351B2D9CD9B2B914352908 /* ReadMarkerRoomTimelineItem.swift */; }; 13853973A5E24374FCEDE8A3 /* RedactedRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F2A7A4E3F5060F52ACFFB0 /* RedactedRoomTimelineView.swift */; }; 13C77FDF17C4C6627CFFC205 /* RoomTimelineItemFactoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D25A35764C7B3DB78954AB5 /* RoomTimelineItemFactoryProtocol.swift */; }; 14132418A748C988B85B025E /* OnboardingPageIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09199C43BAB209C0BD89A836 /* OnboardingPageIndicator.swift */; }; @@ -56,8 +57,6 @@ 165A883C29998EC779465068 /* SoftLogoutViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BC38904A9663F7FAFD47457 /* SoftLogoutViewModelProtocol.swift */; }; 1702981A8085BE4FB0EC001B /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = D33116993D54FADC0C721C1F /* Application.swift */; }; 172E6E9A612ADCF10A62CF13 /* BugReportServiceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A68BCE6438873D2661D93D0 /* BugReportServiceProtocol.swift */; }; - 1833A04F2953249E009AA2AE /* ReadMarkerRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1833A04E2953249E009AA2AE /* ReadMarkerRoomTimelineView.swift */; }; - 1833A051295324B8009AA2AE /* ReadMarkerRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1833A050295324B8009AA2AE /* ReadMarkerRoomTimelineItem.swift */; }; 187E18F21EF4DA244E436E58 /* BugReportViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28959C7DB36C7688A01D4045 /* BugReportViewModelProtocol.swift */; }; 191161FE9E0DA89704301F37 /* Untranslated.strings in Resources */ = {isa = PBXBuildFile; fileRef = D2F7194F440375338F8E2487 /* Untranslated.strings */; }; 1950A80CD198BED283DFC2CE /* ClientProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18F2958E6D247AE2516BEEE8 /* ClientProxy.swift */; }; @@ -273,6 +272,7 @@ 8D3E1FADD78E72504DE0E402 /* UserAgentBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB3B237387B8288A5A938F1B /* UserAgentBuilderTests.swift */; }; 8D9F646387DF656EF91EE4CB /* RoomMessageFactoryProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96F37AB24AF5A006521D38D1 /* RoomMessageFactoryProtocol.swift */; }; 8E650379587C31D7912ED67B /* UNNotification+Creator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC0AEA686E425F86F6BA0404 /* UNNotification+Creator.swift */; }; + 8EF63DDDC1B54F122070B04D /* ReadMarkerRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */; }; 8F2FAA98457750D9D664136F /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 7731767AE437BA3BD2CC14A8 /* Sentry */; }; 90DF83A6A347F7EE7EDE89EE /* AttributedStringBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF25E364AE85090A70AE4644 /* AttributedStringBuilderTests.swift */; }; 90EB25D13AE6EEF034BDE9D2 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71D52BAA5BADB06E5E8C295D /* Assets.swift */; }; @@ -523,6 +523,7 @@ 00245D40CD90FD71D6A05239 /* EmojiPickerScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreen.swift; sourceTree = ""; }; 00A941F289F6AB876BA3361A /* OnboardingViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewModelTests.swift; sourceTree = ""; }; 01C4C7DB37597D7D8379511A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 02351B2D9CD9B2B914352908 /* ReadMarkerRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineItem.swift; sourceTree = ""; }; 02A07FF019724B6ACEA73076 /* szl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = szl; path = szl.lproj/Localizable.strings; sourceTree = ""; }; 033DB41C51865A2E83174E87 /* target.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = target.yml; sourceTree = ""; }; 0376C429FAB1687C3D905F3E /* MockCoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCoder.swift; sourceTree = ""; }; @@ -575,8 +576,6 @@ 1715E3D7F53C0748AA50C91C /* PostHogAnalyticsClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostHogAnalyticsClient.swift; sourceTree = ""; }; 1734A445A58ED855B977A0A8 /* TracingConfigurationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TracingConfigurationTests.swift; sourceTree = ""; }; 179423E34EE846E048E49CBF /* MediaSourceProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaSourceProxy.swift; sourceTree = ""; }; - 1833A04E2953249E009AA2AE /* ReadMarkerRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineView.swift; sourceTree = ""; }; - 1833A050295324B8009AA2AE /* ReadMarkerRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineItem.swift; sourceTree = ""; }; 184CF8C196BE143AE226628D /* DecorationTimelineItemProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecorationTimelineItemProtocol.swift; sourceTree = ""; }; 18F2958E6D247AE2516BEEE8 /* ClientProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientProxy.swift; sourceTree = ""; }; 18FE0CDF1FFA92EA7EE17B0B /* RoomTimelineControllerFactoryProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineControllerFactoryProtocol.swift; sourceTree = ""; }; @@ -795,7 +794,7 @@ 8D6094DEAAEB388E1AE118C6 /* MockRoomTimelineProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRoomTimelineProvider.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; lastKnownFileType = text; path = UITests.xctestplan; sourceTree = ""; }; + 8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; path = UITests.xctestplan; sourceTree = ""; }; 8ED2D2F6A137A95EA50413BE /* UserNotificationControllerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserNotificationControllerProtocol.swift; sourceTree = ""; }; 8F7D42E66E939B709C1EC390 /* MockRoomSummaryProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRoomSummaryProvider.swift; sourceTree = ""; }; 8FC26871038FB0E4AAE22605 /* apple_emojis_data.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = apple_emojis_data.json; sourceTree = ""; }; @@ -892,6 +891,7 @@ B4DE1CF8F5EFD353B1A5E36F /* AnalyticsPromptCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalyticsPromptCoordinator.swift; sourceTree = ""; }; B516212D9FE785DDD5E490D1 /* BugReportModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BugReportModels.swift; sourceTree = ""; }; B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeRoomTimelineView.swift; sourceTree = ""; }; + B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineView.swift; sourceTree = ""; }; B6E89E530A8E92EC44301CA1 /* Bundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bundle.swift; sourceTree = ""; }; B7E035C6AC137C9392D98814 /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = lv.lproj/Localizable.strings; sourceTree = ""; }; B80D1901BA0B095E27793EDE /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; @@ -1005,7 +1005,7 @@ EBE5502760CF6CA2D7201883 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ja; path = ja.lproj/Localizable.stringsdict; 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; lastKnownFileType = file; path = message.caf; sourceTree = ""; }; + ED482057AE39D5C6D9C5F3D8 /* message.caf */ = {isa = PBXFileReference; path = message.caf; sourceTree = ""; }; EDAA4472821985BF868CC21C /* ServerSelectionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerSelectionViewModelTests.swift; sourceTree = ""; }; EDB6E40BAD4504D899FAAC9A /* TemplateViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateViewModel.swift; sourceTree = ""; }; EE8BCD14EFED23459A43FDFF /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; @@ -1722,12 +1722,12 @@ C00A7110B937C6AE2EF5D7D6 /* FileRoomTimelineItem.swift */, 1A63815AD6A5C306453342F2 /* ImageRoomTimelineItem.swift */, 4F49CDE349C490D617332770 /* NoticeRoomTimelineItem.swift */, + 02351B2D9CD9B2B914352908 /* ReadMarkerRoomTimelineItem.swift */, 9B577F829C693B8DFB7014FD /* RedactedRoomTimelineItem.swift */, 289FA233E896FBC5956C67E0 /* RoomTimelineItemProperties.swift */, A1ED7E89865201EE7D53E6DA /* SeparatorRoomTimelineItem.swift */, F6A8C632CEF4600107792899 /* TextRoomTimelineItem.swift */, A4B5B19A10D3F7C2BC5315DF /* VideoRoomTimelineItem.swift */, - 1833A050295324B8009AA2AE /* ReadMarkerRoomTimelineItem.swift */, ); path = Items; sourceTree = ""; @@ -2136,9 +2136,9 @@ D0A45283CF1DB96E583BECA6 /* ImageRoomTimelineView.swift */, B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */, 0950733DD4BA83EEE752E259 /* PlaceholderAvatarImage.swift */, + B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */, C8F2A7A4E3F5060F52ACFFB0 /* RedactedRoomTimelineView.swift */, 6390A6DC140CA3D6865A66FF /* SeparatorRoomTimelineView.swift */, - 1833A04E2953249E009AA2AE /* ReadMarkerRoomTimelineView.swift */, F9E785D5137510481733A3E8 /* TextRoomTimelineView.swift */, 1941C8817E6B6971BA4415F5 /* VideoRoomTimelineView.swift */, ); @@ -2931,7 +2931,6 @@ 38546A6010A2CF240EC9AF73 /* BindableState.swift in Sources */, B6DF6B6FA8734B70F9BF261E /* BlurHashDecode.swift in Sources */, A32517FB1CA0BBCE2BC75249 /* BugReportCoordinator.swift in Sources */, - 1833A04F2953249E009AA2AE /* ReadMarkerRoomTimelineView.swift in Sources */, 00F3059B1E0CFCA019710C3E /* BugReportModels.swift in Sources */, 3588F34D05B4D731A73214C6 /* BugReportScreen.swift in Sources */, 3DA57CA0D609A6B37CA1DC2F /* BugReportService.swift in Sources */, @@ -3055,6 +3054,8 @@ 80D00A7C62AAB44F54725C43 /* PermalinkBuilder.swift in Sources */, 7D1DAAA364A9A29D554BD24E /* PlaceholderAvatarImage.swift in Sources */, DF504B10A4918F971A57BEF2 /* PostHogAnalyticsClient.swift in Sources */, + 1368EBBF25858519477FF8A7 /* ReadMarkerRoomTimelineItem.swift in Sources */, + 8EF63DDDC1B54F122070B04D /* ReadMarkerRoomTimelineView.swift in Sources */, C76892321558E75101E68ED6 /* ReadableFrameModifier.swift in Sources */, 00EA14F62DCEF62CDE4808D6 /* RedactedRoomTimelineItem.swift in Sources */, 13853973A5E24374FCEDE8A3 /* RedactedRoomTimelineView.swift in Sources */, @@ -3140,7 +3141,6 @@ 43FD77998F33C32718C51450 /* TemplateCoordinator.swift in Sources */, 63C9AF0FB8278AF1C0388A0C /* TemplateModels.swift in Sources */, 1555A7643D85187D4851040C /* TemplateScreen.swift in Sources */, - 1833A051295324B8009AA2AE /* ReadMarkerRoomTimelineItem.swift in Sources */, 75EA4ABBFAA810AFF289D6F4 /* TemplateViewModel.swift in Sources */, 5F1FDE49DFD0C680386E48F9 /* TemplateViewModelProtocol.swift in Sources */, D85D4FA590305180B4A41795 /* Tests.swift in Sources */, @@ -3883,7 +3883,7 @@ repositoryURL = "https://github.com/matrix-org/matrix-rust-components-swift"; requirement = { kind = exactVersion; - version = "1.0.23-alpha"; + version = "1.0.25-alpha"; }; }; 96495DD8554E2F39D3954354 /* XCRemoteSwiftPackageReference "posthog-ios" */ = { diff --git a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index f06c4e3f3..892d284ff 100644 --- a/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/matrix-org/matrix-rust-components-swift", "state" : { - "revision" : "f0144bd5faec80c8dbafac7686249893cff2de52", - "version" : "1.0.23-alpha" + "revision" : "8fbf4e31fc57315ee3072962a277b1f32ea24418", + "version" : "1.0.25-alpha" } }, { diff --git a/ElementX/Resources/Localizations/en.lproj/Untranslated.strings b/ElementX/Resources/Localizations/en.lproj/Untranslated.strings index af378dc5a..791b6d667 100644 --- a/ElementX/Resources/Localizations/en.lproj/Untranslated.strings +++ b/ElementX/Resources/Localizations/en.lproj/Untranslated.strings @@ -19,6 +19,8 @@ "room_timeline_editing" = "Editing"; "room_timeline_syncing" = "Syncing"; +"room_timeline_context_menu_retry_decryption" = "Retry decryption"; + "session_verification_banner_title" = "Help keep your messages secure"; "session_verification_banner_message" = "Looks like you’re using a new device. Verify its you."; "session_verification_screen_emojis_title" = "Lets check if these"; diff --git a/ElementX/Sources/Generated/Strings+Untranslated.swift b/ElementX/Sources/Generated/Strings+Untranslated.swift index 0f2e65d48..634564dec 100644 --- a/ElementX/Sources/Generated/Strings+Untranslated.swift +++ b/ElementX/Sources/Generated/Strings+Untranslated.swift @@ -32,6 +32,8 @@ extension ElementL10n { public static let roomDetailsTitle = ElementL10n.tr("Untranslated", "room_details_title") /// Failed loading messages public static let roomTimelineBackpaginationFailure = ElementL10n.tr("Untranslated", "room_timeline_backpagination_failure") + /// Retry decryption + public static let roomTimelineContextMenuRetryDecryption = ElementL10n.tr("Untranslated", "room_timeline_context_menu_retry_decryption") /// Editing public static let roomTimelineEditing = ElementL10n.tr("Untranslated", "room_timeline_editing") /// Failed creating the permalink diff --git a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift index b4034a34c..f2996ed7f 100644 --- a/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift +++ b/ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift @@ -79,14 +79,13 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol visibleRoomsSummaryProvider.roomListPublisher) .receive(on: DispatchQueue.main) .sink { [weak self] state, totalCount, rooms in - if state != .live { - if totalCount == 0 || rooms.count != totalCount { - self?.state.roomListMode = .skeletons - } else { - self?.state.roomListMode = .rooms - } - } else if totalCount == 0 { - #warning("Empty state but it never happens because SS never goes into live for empty accounts") + let isLoadingData = state != .live && (totalCount == 0 || rooms.count != totalCount) + let hasNoRooms = state == .live && totalCount == 0 + + if isLoadingData { + self?.state.roomListMode = .skeletons + } else if hasNoRooms { + self?.state.roomListMode = .skeletons } else { self?.state.roomListMode = .rooms } diff --git a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift index 1c67d2dca..d75d05ac7 100644 --- a/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift +++ b/ElementX/Sources/Screens/RoomScreen/RoomScreenViewModel.swift @@ -193,7 +193,7 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol private func contextMenuActionsForItemId(_ itemId: String) -> TimelineItemContextMenuActions { guard let timelineItem = timelineController.timelineItems.first(where: { $0.id == itemId }), let item = timelineItem as? EventBasedTimelineItemProtocol else { - return .init(actions: []) + return .init(actions: [], debugActions: []) } var actions: [TimelineItemContextMenuAction] = [ @@ -208,7 +208,14 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol actions.append(.redact) } - return .init(actions: actions) + var debugActions: [TimelineItemContextMenuAction] = [.viewSource] + + if let item = timelineItem as? EncryptedRoomTimelineItem, + case let .megolmV1AesSha2(sessionId) = item.encryptionType { + debugActions.append(.retryDecryption(sessionId: sessionId)) + } + + return .init(actions: actions, debugActions: debugActions) } // swiftlint:disable:next cyclomatic_complexity @@ -238,7 +245,9 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol displayError(.alert(ElementL10n.roomTimelinePermalinkCreationFailure)) } case .redact: - redact(itemId) + Task { + await timelineController.redact(itemId) + } case .reply: state.bindings.composerFocused = true state.composerMode = .reply(id: item.id, displayName: item.senderDisplayName ?? item.senderId) @@ -246,16 +255,14 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol let debugDescription = timelineController.debugDescriptionFor(item.id) MXLog.info(debugDescription) state.bindings.debugInfo = .init(title: "Timeline item", content: debugDescription) + case .retryDecryption(let sessionId): + Task { + await timelineController.retryDecryption(forSessionId: sessionId) + } } if action.switchToDefaultComposer { state.composerMode = .default } } - - private func redact(_ eventID: String) { - Task { - await timelineController.redact(eventID) - } - } } diff --git a/ElementX/Sources/Screens/RoomScreen/View/TimelineItemContextMenu.swift b/ElementX/Sources/Screens/RoomScreen/View/TimelineItemContextMenu.swift index 1b566eabc..09837cbfe 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/TimelineItemContextMenu.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/TimelineItemContextMenu.swift @@ -18,7 +18,7 @@ import SwiftUI struct TimelineItemContextMenuActions { let actions: [TimelineItemContextMenuAction] - let debugActions: [TimelineItemContextMenuAction] = [.viewSource] + let debugActions: [TimelineItemContextMenuAction] } enum TimelineItemContextMenuAction: Identifiable, Hashable { @@ -30,6 +30,7 @@ enum TimelineItemContextMenuAction: Identifiable, Hashable { case redact case reply case viewSource + case retryDecryption(sessionId: String) var id: Self { self } @@ -92,6 +93,10 @@ public struct TimelineItemContextMenu: View { Button { callback(item) } label: { Label(ElementL10n.viewSource, systemImage: "doc.text.below.ecg") } + case .retryDecryption: + Button { callback(item) } label: { + Label(ElementL10n.roomTimelineContextMenuRetryDecryption, systemImage: "arrow.down.message") + } } } } diff --git a/ElementX/Sources/Services/Room/MockRoomProxy.swift b/ElementX/Sources/Services/Room/MockRoomProxy.swift index af87cec00..cd90d486a 100644 --- a/ElementX/Sources/Services/Room/MockRoomProxy.swift +++ b/ElementX/Sources/Services/Room/MockRoomProxy.swift @@ -81,4 +81,6 @@ struct MockRoomProxy: RoomProxyProtocol { } return .failure(.failedRetrievingMembers) } + + func retryDecryption(forSessionId sessionId: String) async { } } diff --git a/ElementX/Sources/Services/Room/RoomProxy.swift b/ElementX/Sources/Services/Room/RoomProxy.swift index 6eccb5d76..294fea740 100644 --- a/ElementX/Sources/Services/Room/RoomProxy.swift +++ b/ElementX/Sources/Services/Room/RoomProxy.swift @@ -147,8 +147,6 @@ class RoomProxy: RoomProxyProtocol { return .failure(.noMoreMessagesToBackPaginate) } - let id = id // Copy the ID due to @Sendable requirement. - do { let outcome: PaginationOutcome = try await Task.dispatch(on: .global()) { try self.room.paginateBackwards(limit: UInt16(count)) @@ -242,19 +240,27 @@ class RoomProxy: RoomProxyProtocol { } } - func update(avatarURL: String?, forUserId userId: String) { + func retryDecryption(forSessionId sessionId: String) async { + await Task.dispatch(on: .global()) { [weak self] in + self?.room.retryDecryption(sessionIds: [sessionId]) + } + } + + // MARK: - Private + + private func update(avatarURL: String?, forUserId userId: String) { memberAvatars[userId] = avatarURL } - func update(displayName: String?, forUserId userId: String) { + private func update(displayName: String?, forUserId userId: String) { memberDisplayNames[userId] = displayName } - func update(displayName: String) { + private func update(displayName: String) { self.displayName = displayName } - func update(backPaginationOutcome: PaginationOutcome) { + private func update(backPaginationOutcome: PaginationOutcome) { self.backPaginationOutcome = backPaginationOutcome } } diff --git a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift index d1f42d333..6b62ecc57 100644 --- a/ElementX/Sources/Services/Room/RoomProxyProtocol.swift +++ b/ElementX/Sources/Services/Room/RoomProxyProtocol.swift @@ -67,6 +67,8 @@ protocol RoomProxyProtocol { func redact(_ eventID: String) async -> Result func members() async -> Result<[RoomMemberProxy], RoomProxyError> + + func retryDecryption(forSessionId sessionId: String) async } extension RoomProxyProtocol { diff --git a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift index 3b049e7fa..9e1d37c20 100644 --- a/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift +++ b/ElementX/Sources/Services/Room/RoomSummary/RoomSummaryProvider.swift @@ -62,10 +62,9 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol { } func updateRoomsWithIdentifiers(_ identifiers: [String]) { - #warning("This is a valid check but Rust doesn't set it correctly for selective ranged syncs") - // guard statePublisher.value == .live else { - // return - // } + guard statePublisher.value == .live else { + return + } var changes = [CollectionDifference.Change]() for identifier in identifiers { diff --git a/ElementX/Sources/Services/Timeline/MockRoomTimelineProvider.swift b/ElementX/Sources/Services/Timeline/MockRoomTimelineProvider.swift index b8af00635..269311de2 100644 --- a/ElementX/Sources/Services/Timeline/MockRoomTimelineProvider.swift +++ b/ElementX/Sources/Services/Timeline/MockRoomTimelineProvider.swift @@ -42,4 +42,6 @@ struct MockRoomTimelineProvider: RoomTimelineProviderProtocol { func redact(_ eventID: String) async -> Result { .failure(.failedRedactingItem) } + + func retryDecryption(forSessionId sessionId: String) async { } } diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift index 801cc14bb..c74d163b3 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProvider.swift @@ -139,6 +139,10 @@ class RoomTimelineProvider: RoomTimelineProviderProtocol { } } + func retryDecryption(forSessionId sessionId: String) async { + await roomProxy.retryDecryption(forSessionId: sessionId) + } + // MARK: - Private private func updateItemsWithDiffs(_ diffs: [TimelineDiff]) { diff --git a/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift b/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift index 5433952b8..8afb75d31 100644 --- a/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift +++ b/ElementX/Sources/Services/Timeline/RoomTimelineProviderProtocol.swift @@ -40,6 +40,8 @@ protocol RoomTimelineProviderProtocol { func editMessage(_ newMessage: String, originalItemId: String) async -> Result func redact(_ eventID: String) async -> Result + + func retryDecryption(forSessionId sessionId: String) async } extension RoomTimelineProviderProtocol { diff --git a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift index 96610d718..da02df26e 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/MockRoomTimelineController.swift @@ -87,4 +87,6 @@ class MockRoomTimelineController: RoomTimelineControllerProtocol { func debugDescriptionFor(_ itemId: String) -> String { "Mock debug description" } + + func retryDecryption(forSessionId sessionId: String) async { } } diff --git a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift index 17e6d45a7..ac0f1dca8 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineController.swift @@ -204,6 +204,10 @@ class RoomTimelineController: RoomTimelineControllerProtocol { return description } + + func retryDecryption(forSessionId sessionId: String) async { + await timelineProvider.retryDecryption(forSessionId: sessionId) + } // MARK: - Private diff --git a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift index a7da91414..d52d78ba3 100644 --- a/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift +++ b/ElementX/Sources/Services/Timeline/TimelineController/RoomTimelineControllerProtocol.swift @@ -61,4 +61,6 @@ protocol RoomTimelineControllerProtocol { func redact(_ eventID: String) async func debugDescriptionFor(_ itemId: String) -> String + + func retryDecryption(forSessionId sessionId: String) async } diff --git a/Gemfile.lock b/Gemfile.lock index 76cc66455..e417ca7ef 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -13,17 +13,17 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.647.0) - aws-sdk-core (3.161.0) + aws-partitions (1.682.0) + aws-sdk-core (3.168.4) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.61.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.117.2) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.5.2) @@ -43,7 +43,7 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.93.0) + excon (0.95.0) faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -73,7 +73,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.210.1) + fastlane (2.211.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -115,14 +115,14 @@ GEM fastlane-plugin-brew (0.1.1) fastlane-plugin-diawi (2.1.0) rest-client (>= 2.0.0) - fastlane-plugin-sentry (1.14.0) + fastlane-plugin-sentry (1.15.0) os (~> 1.1, >= 1.1.4) fastlane-plugin-xcodegen (1.1.0) fastlane-plugin-brew (~> 0.1.1) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.29.0) - google-apis-core (>= 0.9.0, < 2.a) - google-apis-core (0.9.1) + google-apis-androidpublisher_v3 (0.32.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.9.2) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -131,10 +131,10 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.15.0) - google-apis-core (>= 0.9.0, < 2.a) - google-apis-playcustomapp_v1 (0.11.0) - google-apis-core (>= 0.9.0, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) google-apis-storage_v1 (0.19.0) google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) @@ -143,7 +143,7 @@ GEM google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.3.0) - google-cloud-storage (1.43.0) + google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) @@ -165,30 +165,28 @@ GEM httpclient (2.8.3) i18n (1.12.0) concurrent-ruby (~> 1.0) - jmespath (1.6.1) - json (2.6.2) + jmespath (1.6.2) + json (2.6.3) jwt (2.5.0) memoist (0.16.2) mime-types (3.4.1) mime-types-data (~> 3.2015) mime-types-data (3.2022.0105) - mini_magick (4.11.0) + mini_magick (4.12.0) mini_mime (1.1.2) - mini_portile2 (2.8.0) minitest (5.16.3) multi_json (1.15.0) multipart-post (2.0.0) nanaimo (0.3.0) naturally (2.2.1) netrc (0.11.0) - nokogiri (1.13.9) - mini_portile2 (~> 2.8.0) + nokogiri (1.13.10-arm64-darwin) racc (~> 1.4) optparse (0.1.1) os (1.1.4) plist (3.6.0) - public_suffix (5.0.0) - racc (1.6.0) + public_suffix (5.0.1) + racc (1.6.1) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) @@ -213,11 +211,11 @@ GEM simctl (1.6.8) CFPropertyList naturally - slather (2.7.2) + slather (2.7.3) CFPropertyList (>= 2.2, < 4) activesupport clamp (~> 1.3) - nokogiri (~> 1.12) + nokogiri (>= 1.13.9) xcodeproj (~> 1.21) terminal-notifier (2.0.0) terminal-table (1.8.0) @@ -252,7 +250,7 @@ GEM xcpretty (~> 0.2, >= 0.0.7) PLATFORMS - ruby + arm64-darwin-22 DEPENDENCIES fastlane @@ -263,4 +261,4 @@ DEPENDENCIES xcode-install BUNDLED WITH - 2.1.4 + 2.3.26 diff --git a/changelog.d/pr-384.feature b/changelog.d/pr-384.feature new file mode 100644 index 000000000..c1f2b7fc3 --- /dev/null +++ b/changelog.d/pr-384.feature @@ -0,0 +1 @@ +Add retry decryption encrypted timeline item debug menu option \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index e4560bf6a..e90292b27 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -212,11 +212,11 @@ lane :prepare_next_release do api_token = ENV["GITHUB_TOKEN"] UI.user_error!("Invalid GitHub API token.") unless !api_token.to_s.empty? - target_file_path = "../ElementX/SupportingFiles/target.yml" + target_file_path = "../project.yml" xcode_project_file_path = "../ElementX.xcodeproj" data = YAML.load_file target_file_path - current_version = data["targets"]["ElementX"]["settings"]["base"]["MARKETING_VERSION"] + current_version = data["settings"]["MARKETING_VERSION"] new_version = current_version.next # Bump the patch version. The empty string after -i is so that sed doesn't diff --git a/project.yml b/project.yml index a6ec0f710..ba30b2d15 100644 --- a/project.yml +++ b/project.yml @@ -40,7 +40,7 @@ include: packages: MatrixRustSDK: url: https://github.com/matrix-org/matrix-rust-components-swift - exactVersion: 1.0.23-alpha + exactVersion: 1.0.25-alpha # path: ../matrix-rust-sdk DesignKit: path: ./