diff --git a/ElementX/Sources/Application/AppSettings.swift b/ElementX/Sources/Application/AppSettings.swift index 01da0fa94..3fd3a490f 100644 --- a/ElementX/Sources/Application/AppSettings.swift +++ b/ElementX/Sources/Application/AppSettings.swift @@ -19,6 +19,7 @@ protocol CommonSettingsProtocol { var enableOnlySignedDeviceIsolationMode: Bool { get } var enableKeyShareOnInvite: Bool { get } var hideQuietNotificationAlerts: Bool { get } + var threadsEnabled: Bool { get } } /// Store Element specific app settings. @@ -343,9 +344,6 @@ final class AppSettings { @UserPreference(key: UserDefaultsKeys.knockingEnabled, defaultValue: false, storageType: .userDefaults(store)) var knockingEnabled - @UserPreference(key: UserDefaultsKeys.threadsEnabled, defaultValue: false, storageType: .userDefaults(store)) - var threadsEnabled - @UserPreference(key: UserDefaultsKeys.threadsEnabled, defaultValue: isDevelopmentBuild, storageType: .userDefaults(store)) var developerOptionsEnabled @@ -372,6 +370,9 @@ final class AppSettings { @UserPreference(key: UserDefaultsKeys.hideQuietNotificationAlerts, defaultValue: false, storageType: .userDefaults(store)) var hideQuietNotificationAlerts + + @UserPreference(key: UserDefaultsKeys.threadsEnabled, defaultValue: false, storageType: .userDefaults(store)) + var threadsEnabled } extension AppSettings: CommonSettingsProtocol { } diff --git a/ElementX/Sources/Other/Extensions/ClientBuilder.swift b/ElementX/Sources/Other/Extensions/ClientBuilder.swift index 3f81bc78b..33b90bc33 100644 --- a/ElementX/Sources/Other/Extensions/ClientBuilder.swift +++ b/ElementX/Sources/Other/Extensions/ClientBuilder.swift @@ -18,12 +18,14 @@ extension ClientBuilder { enableOnlySignedDeviceIsolationMode: Bool, enableKeyShareOnInvite: Bool, requestTimeout: UInt64? = 30000, - maxRequestRetryTime: UInt64? = nil) -> ClientBuilder { + maxRequestRetryTime: UInt64? = nil, + threadsEnabled: Bool) -> ClientBuilder { var builder = ClientBuilder() .crossProcessStoreLocksHolderName(holderName: InfoPlistReader.main.bundleIdentifier) .enableOidcRefreshLock() .setSessionDelegate(sessionDelegate: sessionDelegate) .userAgent(userAgent: UserAgentBuilder.makeASCIIUserAgent()) + .threadsEnabled(enabled: threadsEnabled) .requestConfig(config: .init(retryLimit: 0, timeout: requestTimeout, maxConcurrentRequests: nil, diff --git a/ElementX/Sources/Services/Authentication/AuthenticationClientBuilder.swift b/ElementX/Sources/Services/Authentication/AuthenticationClientBuilder.swift index afed1fcbe..63363f96b 100644 --- a/ElementX/Sources/Services/Authentication/AuthenticationClientBuilder.swift +++ b/ElementX/Sources/Services/Authentication/AuthenticationClientBuilder.swift @@ -49,7 +49,8 @@ struct AuthenticationClientBuilder: AuthenticationClientBuilderProtocol { sessionDelegate: clientSessionDelegate, appHooks: appHooks, enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode, - enableKeyShareOnInvite: appSettings.enableKeyShareOnInvite) + enableKeyShareOnInvite: appSettings.enableKeyShareOnInvite, + threadsEnabled: appSettings.threadsEnabled) .sessionPaths(dataPath: sessionDirectories.dataPath, cachePath: sessionDirectories.cachePath) .sessionPassphrase(passphrase: passphrase) diff --git a/ElementX/Sources/Services/UserSession/UserSessionStore.swift b/ElementX/Sources/Services/UserSession/UserSessionStore.swift index 0af170f21..0320885de 100644 --- a/ElementX/Sources/Services/UserSession/UserSessionStore.swift +++ b/ElementX/Sources/Services/UserSession/UserSessionStore.swift @@ -124,7 +124,8 @@ class UserSessionStore: UserSessionStoreProtocol { sessionDelegate: keychainController, appHooks: appHooks, enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode, - enableKeyShareOnInvite: appSettings.enableKeyShareOnInvite) + enableKeyShareOnInvite: appSettings.enableKeyShareOnInvite, + threadsEnabled: appSettings.threadsEnabled) .sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath, cachePath: credentials.restorationToken.sessionDirectories.cachePath) .username(username: credentials.userID) diff --git a/NSE/Sources/NSEUserSession.swift b/NSE/Sources/NSEUserSession.swift index c5b2c10fe..0c8f9d270 100644 --- a/NSE/Sources/NSEUserSession.swift +++ b/NSE/Sources/NSEUserSession.swift @@ -63,7 +63,8 @@ final class NSEUserSession { enableOnlySignedDeviceIsolationMode: appSettings.enableOnlySignedDeviceIsolationMode, enableKeyShareOnInvite: appSettings.enableKeyShareOnInvite, requestTimeout: 15000, - maxRequestRetryTime: 5000) + maxRequestRetryTime: 5000, + threadsEnabled: appSettings.threadsEnabled) .systemIsMemoryConstrained() .sessionPaths(dataPath: credentials.restorationToken.sessionDirectories.dataPath, cachePath: credentials.restorationToken.sessionDirectories.cachePath)