// // Copyright 2023, 2024 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 // periphery:ignore - property wrappers generate false positives @propertyWrapper struct CancellableTask { private var storedValue: Task? init(_ value: Task? = nil) { storedValue = value } var wrappedValue: Task? { get { storedValue } set { storedValue?.cancel() storedValue = newValue } } }