From af2985c8ad6c977f6f986bb93f8bbca909317c5a Mon Sep 17 00:00:00 2001 From: Skye Elliot Date: Tue, 9 Dec 2025 09:17:50 +0000 Subject: [PATCH] Set trust requirement even if `setEncryption` is `false`. (#4823) * fix: Set trust requirement even if `setEncryption` is `false`. - Calls `builder.decryptionSettings` with sender trust requirement, even if `setEncryption` is false`. - Fixes https://github.com/element-hq/element-x-ios/issues/4702 * docs: Add doc comment explaining necessity of fix. * feat: Set `roomKeyRecipientStrategy` alongside trust requirement. --- .../Other/Extensions/ClientBuilder.swift | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/ElementX/Sources/Other/Extensions/ClientBuilder.swift b/ElementX/Sources/Other/Extensions/ClientBuilder.swift index 9771d746a..dc41c6a8c 100644 --- a/ElementX/Sources/Other/Extensions/ClientBuilder.swift +++ b/ElementX/Sources/Other/Extensions/ClientBuilder.swift @@ -43,16 +43,19 @@ extension ClientBuilder { .backupDownloadStrategy(backupDownloadStrategy: .afterDecryptionFailure) .enableShareHistoryOnInvite(enableShareHistoryOnInvite: enableKeyShareOnInvite) .autoEnableBackups(autoEnableBackups: true) - - if enableOnlySignedDeviceIsolationMode { - builder = builder - .roomKeyRecipientStrategy(strategy: .identityBasedStrategy) - .decryptionSettings(decryptionSettings: .init(senderDeviceTrustRequirement: .crossSignedOrLegacy)) - } else { - builder = builder - .roomKeyRecipientStrategy(strategy: .errorOnVerifiedUserProblem) - .decryptionSettings(decryptionSettings: .init(senderDeviceTrustRequirement: .untrusted)) - } + } + + // Set recipient strategy and trust requirement even if `setupEncryption` is false to ensure messages + // from insecure devices aren't displayed in push notifications. + // See https://github.com/element-hq/element-x-ios/issues/4702. + if enableOnlySignedDeviceIsolationMode { + builder = builder + .roomKeyRecipientStrategy(strategy: .identityBasedStrategy) + .decryptionSettings(decryptionSettings: .init(senderDeviceTrustRequirement: .crossSignedOrLegacy)) + } else { + builder = builder + .roomKeyRecipientStrategy(strategy: .errorOnVerifiedUserProblem) + .decryptionSettings(decryptionSettings: .init(senderDeviceTrustRequirement: .untrusted)) } if let httpProxy {