mirror of
https://github.com/lux-tel/session-ios.git
synced 2026-10-30 20:38:32 +00:00
Removed the 'immediatelyOnMain' extensions as they would break in some cases (eg. upstream errors with multiple 'receive(on:)' calls) resulting in logic running on unexpected threads Updated the ReplaySubject to add subscribers in an Atomic just to be safe Updated the code to remove the invalid open group when the user receives an error after joining Fixed a bug with editing closed group members Fixed broken unit tests
34 lines
891 B
Swift
34 lines
891 B
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import Combine
|
|
import SessionUtilitiesKit
|
|
|
|
public extension Publisher {
|
|
func sinkAndStore<C>(in storage: inout C) where C: RangeReplaceableCollection, C.Element == AnyCancellable {
|
|
self
|
|
.subscribe(on: ImmediateScheduler.shared)
|
|
.receive(on: ImmediateScheduler.shared)
|
|
.sink(
|
|
receiveCompletion: { _ in },
|
|
receiveValue: { _ in }
|
|
)
|
|
.store(in: &storage)
|
|
}
|
|
}
|
|
|
|
public extension AnyPublisher {
|
|
func firstValue() -> Output? {
|
|
var value: Output?
|
|
|
|
_ = self
|
|
.receive(on: ImmediateScheduler.shared)
|
|
.sink(
|
|
receiveCompletion: { _ in },
|
|
receiveValue: { result in value = result }
|
|
)
|
|
|
|
return value
|
|
}
|
|
}
|