mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-10-31 16:24:11 +00:00
fb49f5b83b
Add the element-call-ios dependency and a developer option for native calls The package carries the call UI and the matrix-rust-rtc media stack, pinned by exact version the way the SDK is, with the local path kept commented out for working against a checkout. Its media xcframework has no Intel simulator slice and a package cannot say so for the projects that consume it, hence the excluded architecture at the project level. The developer option is off by default and nothing reads it yet. It is placed next to the Element Call URL override, which only applies to the web view that native calls replace.
82 lines
2.3 KiB
Swift
82 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 appHooks: AppHooks
|
|
var storeSizes: [StoreSize]?
|
|
let shouldShowClearCache: Bool
|
|
let isSignedIn: Bool
|
|
|
|
var bindings: DeveloperOptionsScreenViewStateBindings
|
|
|
|
struct StoreSize: Identifiable {
|
|
let name: String
|
|
let size: String
|
|
|
|
var id: String {
|
|
name + size
|
|
}
|
|
}
|
|
}
|
|
|
|
@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
|
|
case markAllRoomsAsRead
|
|
}
|
|
|
|
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 roomListNotificationCountEnabled: Bool { get set }
|
|
var elementCallBaseURLOverride: URL? { get set }
|
|
|
|
var fuzzyRoomListSearchEnabled: Bool { get set }
|
|
var lowPriorityFilterEnabled: Bool { get set }
|
|
var mentionsFilterEnabled: Bool { get set }
|
|
|
|
var linkPreviewsEnabled: Bool { get set }
|
|
|
|
var jumpToReadMarkerEnabled: Bool { get set }
|
|
var messageMultiSelectEnabled: Bool { get set }
|
|
|
|
var linkNewDeviceEnabled: Bool { get set }
|
|
|
|
var globalSearchEnabled: Bool { get set }
|
|
|
|
var nativeCallEnabled: Bool { get set }
|
|
}
|
|
|
|
extension AppSettings: DeveloperOptionsProtocol { }
|