// // 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 Combine /// A wrapper of CurrentValueSubject. /// The purpose of this type is to remove the possibility to send new values on the underlying subject. struct CurrentValuePublisher: Publisher { private let subject: CurrentValueSubject init(_ subject: CurrentValueSubject) { self.subject = subject } init(_ value: Output) { self.init(CurrentValueSubject(value)) } func receive(subscriber: S) where S: Subscriber, Failure == S.Failure, Output == S.Input { subject.receive(subscriber: subscriber) } var value: Output { subject.value } } extension CurrentValueSubject { func asCurrentValuePublisher() -> CurrentValuePublisher { .init(self) } }