mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-16 06:28:27 +02:00
Merge commit 'f823ab9aae70e8d15ed7cc079210dd9bbbb6c8e1' into feature/foss_update_1_11_19 * commit 'f823ab9aae70e8d15ed7cc079210dd9bbbb6c8e1': finish version++ version++ comments update submodule remove obsolete tests removed unused code update submodule fix Libolm removal update license macro update license Prepare for new sprint # Conflicts: # Config/AppVersion.xcconfig # IDETemplateMacros.plist # LICENSE # README.md # Riot/Categories/MXSession+Riot.m # Riot/Managers/EncryptionKeyManager/EncryptionKeyManager.swift # Riot/Managers/KeyValueStorage/Extensions/Keychain.swift # Riot/Managers/KeyValueStorage/KeyValueStore.swift # Riot/Managers/KeyValueStorage/KeychainStore.swift # Riot/Managers/KeyValueStorage/MemoryStore.swift # Riot/Managers/PushNotification/PushNotificationService.m # Riot/Managers/Settings/RiotSettings.swift # Riot/Managers/Settings/Shared/RiotSharedSettings.swift # Riot/Modules/Analytics/AnalyticsUIElement.swift # Riot/Modules/Application/AppCoordinator.swift # Riot/Modules/Application/LegacyAppDelegate.h # Riot/Modules/Application/LegacyAppDelegate.m # Riot/Modules/Authentication/Legacy/AuthenticationViewController.h # Riot/Modules/Authentication/Legacy/AuthenticationViewController.m # Riot/Modules/Authentication/Legacy/Views/AuthInputsView.h # Riot/Modules/Authentication/Legacy/Views/AuthInputsView.m # Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m # Riot/Modules/Common/Recents/RecentsViewController.m # Riot/Modules/Common/WebViewController/WebViewViewController.m # Riot/Modules/Contacts/Details/ContactDetailsViewController.m # Riot/Modules/Contacts/Views/ContactTableViewCell.m # Riot/Modules/Favorites/FavouritesViewController.h # Riot/Modules/Favorites/FavouritesViewController.m # Riot/Modules/GlobalSearch/UnifiedSearchViewController.m # Riot/Modules/People/PeopleViewController.h # Riot/Modules/People/PeopleViewController.m # Riot/Modules/Room/ContextualMenu/ReactionsMenu/ReactionsMenuViewModel.swift # Riot/Modules/Room/DataSources/RoomDataSource.m # Riot/Modules/Room/Files/RoomFilesViewController.m # Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m # Riot/Modules/Room/Members/RoomParticipantsViewController.m # Riot/Modules/Room/RoomViewController.m # Riot/Modules/Room/Settings/RoomSettingsViewController.m # Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroCell.swift # Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroCellContentView.swift # Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroViewData.swift # Riot/Modules/Room/TimelineCells/RoomTimelineCellIdentifier.h # Riot/Modules/Rooms/RoomsViewController.h # Riot/Modules/Rooms/ShowDirectory/Cells/Network/DirectoryNetworkTableHeaderFooterView.swift # Riot/Modules/Rooms/ShowDirectory/Cells/Room/DirectoryRoomTableViewCell.swift # Riot/Modules/Rooms/ShowDirectory/PublicRoomsDirectoryViewModel.swift # Riot/Modules/Secrets/Recover/RecoverWithKey/SecretsRecoveryWithKeyCoordinator.swift # Riot/Modules/Secrets/Recover/RecoverWithKey/SecretsRecoveryWithKeyViewController.swift # Riot/Modules/Secrets/Recover/RecoverWithPassphrase/SecretsRecoveryWithPassphraseCoordinator.swift # Riot/Modules/Secrets/Recover/RecoverWithPassphrase/SecretsRecoveryWithPassphraseViewController.swift # Riot/Modules/Secrets/Recover/SecretsRecoveryCoordinator.swift # Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewController.swift # Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewModel.swift # Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewModelType.swift # Riot/Modules/SetPinCode/PinCodePreferences.swift # Riot/Modules/SetPinCode/SetupBiometrics/BiometricsAuthenticationPresenter.swift # Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m # Riot/Modules/Settings/Security/SecurityViewController.m # Riot/Modules/Settings/SettingsViewController.m # Riot/Modules/SplitView/SplitViewCoordinator.swift # Riot/Modules/SplitView/SplitViewCoordinatorType.swift # Riot/Modules/StartChat/StartChatViewController.m # Riot/Modules/TabBar/MasterTabBarController.h # Riot/Modules/TabBar/MasterTabBarController.m # Riot/Utils/EventFormatter.m # Riot/Utils/HTMLFormatter.swift # Riot/Utils/Tools.m # RiotNSE/NotificationService.swift
175 lines
5.9 KiB
Swift
175 lines
5.9 KiB
Swift
//
|
|
// Copyright 2024 New Vector Ltd.
|
|
// Copyright 2020 Vector Creations Ltd
|
|
// Copyright (c) 2021 BWI GmbH
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
// Please see LICENSE in the repository root for full details.
|
|
//
|
|
|
|
import Foundation
|
|
import MatrixSDK
|
|
|
|
#if !os(OSX)
|
|
import DeviceKit
|
|
#endif
|
|
|
|
/// CommonConfiguration is the central point to setup settings for MatrixSDK, MatrixKit and common configurations for all targets.
|
|
class CommonConfiguration: NSObject, Configurable {
|
|
|
|
// MARK: - Global settings
|
|
|
|
func setupSettings() {
|
|
setupMatrixKitSettings()
|
|
setupMatrixSDKSettings()
|
|
}
|
|
|
|
private func setupMatrixKitSettings() {
|
|
guard let settings = MXKAppSettings.standard() else {
|
|
return
|
|
}
|
|
|
|
// Disable CallKit
|
|
settings.isCallKitEnabled = false
|
|
|
|
// Enable lazy loading
|
|
settings.syncWithLazyLoadOfRoomMembers = true
|
|
|
|
// Customize the default notification content
|
|
settings.notificationBodyLocalizationKey = "Notification"
|
|
|
|
settings.messageDetailsAllowSharing = BWIBuildSettings.shared.messageDetailsAllowShare
|
|
settings.messageDetailsAllowSaving = BWIBuildSettings.shared.messageDetailsAllowSave
|
|
settings.messageDetailsAllowCopyingMedia = BWIBuildSettings.shared.messageDetailsAllowCopyMedia
|
|
settings.messageDetailsAllowPastingMedia = BWIBuildSettings.shared.messageDetailsAllowPasteMedia
|
|
|
|
// Enable link detection if url preview are enabled
|
|
settings.enableBubbleComponentLinkDetection = true
|
|
|
|
MXKContactManager.shared().allowLocalContactsAccess = BWIBuildSettings.shared.allowLocalContactsAccess
|
|
}
|
|
|
|
private func setupMatrixSDKSettings() {
|
|
let sdkOptions = MXSDKOptions.sharedInstance()
|
|
|
|
sdkOptions.applicationGroupIdentifier = BuildSettings.applicationGroupIdentifier
|
|
|
|
// Define the media cache version
|
|
sdkOptions.mediaCacheAppVersion = 0
|
|
|
|
// Enable e2e encryption for newly created MXSession
|
|
sdkOptions.enableCryptoWhenStartingMXSession = true
|
|
|
|
// Disable identicon use
|
|
sdkOptions.disableIdenticonUseForUserAvatar = true
|
|
|
|
// Pass httpAdditionalHeaders to the SDK
|
|
sdkOptions.httpAdditionalHeaders = UserAgentService().bwiUserAgentDict
|
|
|
|
// Disable key backup on common
|
|
sdkOptions.enableKeyBackupWhenStartingMXCrypto = false
|
|
|
|
// Pass threading option to the SDK
|
|
sdkOptions.enableThreads = RiotSettings.shared.enableThreads
|
|
|
|
sdkOptions.clientPermalinkBaseUrl = AppConfigService.shared.permalinkUrl()
|
|
|
|
sdkOptions.authEnableRefreshTokens = BuildSettings.authEnableRefreshTokens
|
|
|
|
// Configure key provider delegate
|
|
MXKeyProvider.sharedInstance().delegate = EncryptionKeyManager.shared
|
|
|
|
EncryptionKeyManager.shared.initKeys()
|
|
|
|
sdkOptions.enableNewClientInformationFeature = RiotSettings.shared.enableClientInformationFeature
|
|
|
|
sdkOptions.cryptoMigrationDelegate = self
|
|
}
|
|
|
|
private func makeASCIIUserAgent() -> String? {
|
|
guard var userAgent = makeUserAgent() else {
|
|
return nil
|
|
}
|
|
if !userAgent.canBeConverted(to: .ascii) {
|
|
let mutableUserAgent = NSMutableString(string: userAgent)
|
|
if CFStringTransform(mutableUserAgent, nil, "Any-Latin; Latin-ASCII; [:^ASCII:] Remove" as CFString, false) {
|
|
userAgent = mutableUserAgent as String
|
|
}
|
|
}
|
|
return userAgent
|
|
}
|
|
|
|
private func makeUserAgent() -> String? {
|
|
let appInfo = AppInfo.current
|
|
let clientName = appInfo.displayName
|
|
let clientVersion = appInfo.appVersion?.bundleShortVersion ?? "unknown"
|
|
|
|
#if os(iOS)
|
|
return String(
|
|
format: "%@/%@ (%@; iOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
UIDevice.current.systemVersion,
|
|
UIScreen.main.scale)
|
|
#elseif os(tvOS)
|
|
return String(
|
|
format: "%@/%@ (%@; tvOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
UIDevice.current.systemVersion,
|
|
UIScreen.main.scale)
|
|
#elseif os(watchOS)
|
|
return String(
|
|
format: "%@/%@ (%@; watchOS %@; Scale/%0.2f)",
|
|
clientName,
|
|
clientVersion,
|
|
Device.current.safeDescription,
|
|
WKInterfaceDevice.current.systemVersion,
|
|
WKInterfaceDevice.currentDevice.screenScale)
|
|
#elseif os(OSX)
|
|
return String(
|
|
format: "%@/%@ (Mac; Mac OS X %@)",
|
|
clientName,
|
|
clientVersion,
|
|
NSProcessInfo.processInfo.operatingSystemVersionString)
|
|
#else
|
|
return nil
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
// MARK: - Per matrix session settings
|
|
|
|
func setupSettings(for matrixSession: MXSession) {
|
|
setupCallsSettings(for: matrixSession)
|
|
}
|
|
|
|
private func setupCallsSettings(for matrixSession: MXSession) {
|
|
guard let callManager = matrixSession.callManager else {
|
|
// This means nothing happens if the project does not embed a VoIP stack
|
|
return
|
|
}
|
|
|
|
// Let's call invite be valid for 1 minute
|
|
callManager.inviteLifetime = 60000
|
|
|
|
if RiotSettings.shared.allowStunServerFallback, let stunServerFallback = BWIBuildSettings.shared.stunServerFallbackUrlString {
|
|
callManager.fallbackSTUNServer = stunServerFallback
|
|
}
|
|
}
|
|
}
|
|
|
|
extension CommonConfiguration: MXCryptoV2MigrationDelegate {
|
|
var needsVerificationUpgrade: Bool {
|
|
get {
|
|
RiotSettings.shared.showVerificationUpgradeAlert
|
|
}
|
|
set {
|
|
RiotSettings.shared.showVerificationUpgradeAlert = newValue
|
|
}
|
|
}
|
|
}
|