// // Copyright 2025 Element Creations Ltd. // Copyright 2023-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 @propertyWrapper struct CancellableTask { private var storedValue: Task? init(_ value: Task? = nil) { storedValue = value } var wrappedValue: Task? { get { storedValue } set { storedValue?.cancel() storedValue = newValue } } }