mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-18 07:28:28 +02:00
Merge commit '56d9e1f6a55a93dc71149ae429eaa615a98de0d5' into feature/6076_foss_merge
* commit '56d9e1f6a55a93dc71149ae429eaa615a98de0d5': (79 commits) finish version++ version++ Translated using Weblate (Hungarian) Translated using Weblate (Italian) Translated using Weblate (Ukrainian) Translated using Weblate (Hungarian) Translated using Weblate (Slovak) Translated using Weblate (Swedish) Translated using Weblate (Indonesian) Translated using Weblate (Albanian) Translated using Weblate (Estonian) Translated using Weblate (Estonian) updated the submodule updated SDK Update the SDK. (#7819) Prepare for new sprint finish version++ version++ fix Changelog. ... # Conflicts: # Config/AppVersion.xcconfig # Podfile # Podfile.lock # Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved # Riot/Managers/Settings/RiotSettings.swift # Riot/Modules/Analytics/Analytics.swift # Riot/Modules/Analytics/DecryptionFailure.swift # Riot/Modules/Analytics/PHGPostHogConfiguration.swift # Riot/Modules/Room/RoomInfo/RoomInfoList/RoomInfoListViewAction.swift # Riot/Modules/Room/RoomInfo/RoomInfoList/RoomInfoListViewModel.swift # Riot/Modules/Room/Views/Title/Preview/PreviewRoomTitleView.m # Riot/Modules/Settings/SettingsViewController.m # Riot/Utils/EventFormatter.m # Riot/Utils/Tools.m # RiotNSE/target.yml # fastlane/Fastfile # project.yml
This commit is contained in:
@@ -63,14 +63,14 @@ class DecryptionFailureTracker: NSObject {
|
||||
selector: #selector(eventDidDecrypt(_:)),
|
||||
name: .mxEventDidDecrypt,
|
||||
object: nil)
|
||||
|
||||
}
|
||||
|
||||
@objc
|
||||
func reportUnableToDecryptError(forEvent event: MXEvent, withRoomState roomState: MXRoomState, myUser userId: String) {
|
||||
func reportUnableToDecryptError(forEvent event: MXEvent, withRoomState roomState: MXRoomState, mySession: MXSession) {
|
||||
if reportedFailures[event.eventId] != nil || trackedEvents.contains(event.eventId) {
|
||||
return
|
||||
}
|
||||
guard let userId = mySession.myUserId else { return }
|
||||
|
||||
// Filter out "expected" UTDs
|
||||
// We cannot decrypt messages sent before the user joined the room
|
||||
@@ -83,6 +83,12 @@ class DecryptionFailureTracker: NSObject {
|
||||
|
||||
guard let error = event.decryptionError as? NSError else { return }
|
||||
|
||||
let eventOrigin = event.originServerTs
|
||||
let deviceTimestamp = mySession.crypto.deviceCreationTs
|
||||
// If negative it's an historical event relative to the current session
|
||||
let eventRelativeAgeMillis = Int(eventOrigin) - Int(deviceTimestamp)
|
||||
let isSessionVerified = mySession.crypto.crossSigning.canTrustCrossSigning
|
||||
|
||||
var reason = DecryptionFailureReason.unspecified
|
||||
|
||||
if error.code == MXDecryptingErrorUnknownInboundSessionIdCode.rawValue {
|
||||
@@ -93,7 +99,24 @@ class DecryptionFailureTracker: NSObject {
|
||||
|
||||
let context = String(format: "code: %ld, description: %@", error.code, event.decryptionError.localizedDescription)
|
||||
|
||||
reportedFailures[failedEventId] = DecryptionFailure(failedEventId: failedEventId, reason: reason, context: context, ts: self.timeProvider.nowTs())
|
||||
let failure = DecryptionFailure(failedEventId: failedEventId, reason: reason, context: context, ts: self.timeProvider.nowTs())
|
||||
|
||||
failure.eventLocalAgeMillis = Int(exactly: eventRelativeAgeMillis)
|
||||
failure.trustOwnIdentityAtTimeOfFailure = isSessionVerified
|
||||
|
||||
let myDomain = userId.components(separatedBy: ":").last
|
||||
failure.isMatrixOrg = myDomain == "matrix.org"
|
||||
|
||||
if MXTools.isMatrixUserIdentifier(event.sender) {
|
||||
let senderDomain = event.sender.components(separatedBy: ":").last
|
||||
failure.isFederated = senderDomain != nil && senderDomain != myDomain
|
||||
}
|
||||
|
||||
/// XXX for future work, as for now only the event formatter reports UTDs. That means that it's only UTD ~visible to users
|
||||
failure.wasVisibleToUser = true
|
||||
|
||||
reportedFailures[failedEventId] = failure
|
||||
|
||||
|
||||
// Start the ticker if needed. There is no need to have a ticker if no failures are tracked
|
||||
if checkFailuresTimer == nil {
|
||||
|
||||
Reference in New Issue
Block a user