Files
letro-ios/ElementX/Sources/Screens/Settings/DeveloperOptionsScreen/DeveloperOptionsScreenModels.swift
Richard van der Hoff bc32a05a2c Promote "history sharing on invite" out of developer options (#5480)
* Enable key-share-on-invite irrespective of feature flag

* Remove feature-flag dep: warning on starting chat with new people

* Remove feature-flag dep: invite from room member details

* Remove feature-flag dep: warning on new users in invite screen

* Remove feature-flag dep: from room details screen

* Remove feature-flag dep: starting chat from user profile screen

* Remove feature-flag dep: timeline info on forwarded keys

* Remove feature-flag dep: RoomScreenModel

* Remove `enableKeyShareOnInvite` from AppSettings

* Remove `enableKeyShareOnInvite` feature flag

* Remove outdated comments

* Update preview test room snapshots as their header now includes the history sharing icon
2026-04-27 14:43:18 +03:00

80 lines
2.3 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2022-2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Foundation
enum DeveloperOptionsScreenViewModelAction {
case clearCache
}
struct DeveloperOptionsScreenViewState: BindableState {
let elementCallBaseURL: URL
let appHooks: AppHooks
var storeSizes: [StoreSize]?
let shouldShowClearCache: Bool
let isPresentedModally: Bool
var bindings: DeveloperOptionsScreenViewStateBindings
struct StoreSize: Identifiable {
let name: String
let size: String
var id: String {
name + size
}
}
}
// periphery: ignore - subscripts are seen as false positive
@dynamicMemberLookup
struct DeveloperOptionsScreenViewStateBindings {
private let developerOptions: DeveloperOptionsProtocol
init(developerOptions: DeveloperOptionsProtocol) {
self.developerOptions = developerOptions
}
subscript<Setting>(dynamicMember keyPath: ReferenceWritableKeyPath<DeveloperOptionsProtocol, Setting>) -> Setting {
get { developerOptions[keyPath: keyPath] }
set { developerOptions[keyPath: keyPath] = newValue }
}
}
enum DeveloperOptionsScreenViewAction {
case clearCache
}
protocol DeveloperOptionsProtocol: AnyObject {
var logLevel: LogLevel { get set }
var traceLogPacks: Set<TraceLogPack> { get set }
var enableOnlySignedDeviceIsolationMode: Bool { get set }
var hideQuietNotificationAlerts: Bool { get set }
var focusEventOnNotificationTap: Bool { get set }
var automaticBackPaginationEnabled: Bool { get set }
var roomListActivityVisibility: RoomListActivityVisibility { get set }
var elementCallBaseURLOverride: URL? { get set }
var publicSearchEnabled: Bool { get set }
var fuzzyRoomListSearchEnabled: Bool { get set }
var lowPriorityFilterEnabled: Bool { get set }
var knockingEnabled: Bool { get set }
var linkPreviewsEnabled: Bool { get set }
var linkNewDeviceEnabled: Bool { get set }
var liveLocationSharingEnabled: Bool { get set }
var roomThreadListEnabled: Bool { get set }
}
extension AppSettings: DeveloperOptionsProtocol { }