mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-10-31 16:24:11 +00:00
f70182d09a
This will use an underlying SDK method and send a private read receipt plus a fully read marker in every single room the user is part of. It will most likely be a long operation that will get rate limited so the task is set to run detached for as long as it takes.
78 lines
2.2 KiB
Swift
78 lines
2.2 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
|
|
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 elementCallBaseURLOverride: URL? { 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 roomThreadListEnabled: Bool { get set }
|
|
}
|
|
|
|
extension AppSettings: DeveloperOptionsProtocol { }
|