Introduce a feature flag for the new identity pinning violation notifications feature.

This commit is contained in:
Stefan Ceriu
2024-10-10 15:04:17 +03:00
committed by Stefan Ceriu
parent 13bc3a1dd4
commit 4d697a3a49
4 changed files with 12 additions and 1 deletions
@@ -46,6 +46,7 @@ final class AppSettings {
case fuzzyRoomListSearchEnabled
case pinningEnabled
case enableOnlySignedDeviceIsolationMode
case identityPinningViolationNotificationsEnabled
}
private static var suiteName: String = InfoPlistReader.main.appGroupIdentifier
@@ -278,6 +279,9 @@ final class AppSettings {
enum SlidingSyncDiscovery: Codable { case proxy, native, forceNative }
@UserPreference(key: UserDefaultsKeys.slidingSyncDiscovery, defaultValue: .native, storageType: .userDefaults(store))
var slidingSyncDiscovery: SlidingSyncDiscovery
@UserPreference(key: UserDefaultsKeys.identityPinningViolationNotificationsEnabled, defaultValue: isDevelopmentBuild, storageType: .userDefaults(store))
var identityPinningViolationNotificationsEnabled
#endif
@@ -142,7 +142,9 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
}
.store(in: &cancellables)
let identityStatusChangesPublisher = roomProxy.identityStatusChangesPublisher.receive(on: DispatchQueue.main)
let identityStatusChangesPublisher = roomProxy.identityStatusChangesPublisher
.receive(on: DispatchQueue.main)
.filter { [weak self] _ in self?.appSettings.identityPinningViolationNotificationsEnabled ?? false }
Task { [weak self] in
for await changes in identityStatusChangesPublisher.values {
@@ -48,6 +48,7 @@ protocol DeveloperOptionsProtocol: AnyObject {
var hideTimelineMedia: Bool { get set }
var enableOnlySignedDeviceIsolationMode: Bool { get set }
var elementCallBaseURLOverride: URL? { get set }
var identityPinningViolationNotificationsEnabled: Bool { get set }
}
extension AppSettings: DeveloperOptionsProtocol { }
@@ -49,6 +49,10 @@ struct DeveloperOptionsScreen: View {
Toggle(isOn: $context.hideTimelineMedia) {
Text("Hide image & video previews")
}
Toggle(isOn: $context.identityPinningViolationNotificationsEnabled) {
Text("Identity pinning violation notifications")
}
}
Section {