fix: login via matrix id should not change the homeserver (MESSENGER-8170)

This commit is contained in:
Frank Rotermund
2026-03-05 07:35:35 +01:00
parent 0d4101398c
commit 47530b2f19
5 changed files with 37 additions and 25 deletions

View File

@@ -724,4 +724,7 @@ class BWIBuildSettings: NSObject {
// MARK: Enable Room Retention
var enableRoomRetention = false
// MARK: homeserver selection via full qualified matrix id
var allowMatrixIDForHomeserverSelection = false
}

View File

@@ -51,7 +51,7 @@ def import_MatrixKit_pods
pod 'libPhoneNumber-iOS', '~> 0.9.13'
pod 'DTCoreText', '1.6.26'
#pod 'DTCoreText/Extension', '~> 1.6.25'
pod 'Down', '~> 0.11.0'
pod 'Down', :git => 'https://github.com/vvorlov/Down.git', :branch => 'master'
end
def import_SwiftUI_pods

View File

@@ -80,7 +80,7 @@ PODS:
- ZXingObjC/All (3.6.9)
DEPENDENCIES:
- Down (~> 0.11.0)
- Down (from `https://github.com/vvorlov/Down.git`, branch `master`)
- DSWaveformImage (~> 6.1.1)
- DTCoreText (= 1.6.26)
- DTTJailbreakDetection (~> 0.4.0)
@@ -107,7 +107,6 @@ DEPENDENCIES:
SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
- AFNetworking
- Down
- DSWaveformImage
- DTCoreText
- DTFoundation
@@ -137,18 +136,24 @@ SPEC REPOS:
- ZXingObjC
EXTERNAL SOURCES:
Down:
:branch: master
:git: https://github.com/vvorlov/Down.git
MatrixSDK:
:git: https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk
:tag: v2.26.0
CHECKOUT OPTIONS:
Down:
:commit: dbb02cc9d16363874b7a0c6c48b9efe09bd5b006
:git: https://github.com/vvorlov/Down.git
MatrixSDK:
:git: https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk
:tag: v2.26.0
SPEC CHECKSUMS:
AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
Down: b6ba1bc985c9d2f4e15e3b293d2207766fa12612
Down: 10462c9cb3a6ef28e0996739329c4976b13870f7
DSWaveformImage: 3c718a0cf99291887ee70d1d0c18d80101d3d9ce
DTCoreText: ec749e013f2e1f76de5e7c7634642e600a7467ce
DTFoundation: 76b624967cf5bcaae6bb057d622c536c36ef36d0
@@ -162,7 +167,7 @@ SPEC CHECKSUMS:
libbase58: 8abc2a53ac38cd37720c0acbc53ef3660e9016c2
libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75
MatomoTracker: 1d98ddc58322fd9d65e1a6886b8e41363047bd13
MatrixSDK: 0c394a7a3928208797d403bcf5706b6628690a96
MatrixSDK: 45f9f97e7424e5d8731bf6b207c728a71caa8eb1
MatrixSDKCrypto: e44608012cae9befc52f13cd8e56c6f51ac83702
ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d
Realm: 9ca328bd7e700cc19703799785e37f77d1a130f2
@@ -178,6 +183,6 @@ SPEC CHECKSUMS:
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
PODFILE CHECKSUM: 34582260e0e8275df7a07d3947cdac7794125b8e
PODFILE CHECKSUM: 92b7ae8a330216932c5a690e48743b4d7b1bdea8
COCOAPODS: 1.15.2
COCOAPODS: 1.16.2

View File

@@ -105,8 +105,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/element-hq/matrix-rich-text-editor-swift",
"state" : {
"revision" : "b6583a47b5d14d2dc8405a0303ebd4041b877707",
"version" : "2.37.12"
"revision" : "5f703d05bbf39f3026cc3c0697aab753a71fd83b",
"version" : "2.41.0"
}
},
{

View File

@@ -206,23 +206,27 @@ final class AuthenticationLoginCoordinator: Coordinator, Presentable {
}
@MainActor private func parseUsername(_ username: String) {
guard MXTools.isMatrixUserIdentifier(username) else { return }
let domain = username.components(separatedBy: ":")[1]
let homeserverAddress = HomeserverAddress.sanitized(domain)
startLoading(isInteractionBlocking: false)
currentTask = Task { [weak self] in
do {
try await authenticationService.startFlow(.login, for: homeserverAddress)
guard !Task.isCancelled else { return }
updateViewModel()
self?.stopLoading()
} catch {
self?.stopLoading()
self?.handleError(error)
// bwi #8170 no homeserver over matrix ID ch
if BWIBuildSettings.shared.allowMatrixIDForHomeserverSelection {
guard MXTools.isMatrixUserIdentifier(username) else { return }
let domain = username.components(separatedBy: ":")[1]
let homeserverAddress = HomeserverAddress.sanitized(domain)
startLoading(isInteractionBlocking: false)
currentTask = Task { [weak self] in
do {
try await authenticationService.startFlow(.login, for: homeserverAddress)
guard !Task.isCancelled else { return }
updateViewModel()
self?.stopLoading()
} catch {
self?.stopLoading()
self?.handleError(error)
}
}
}
}