Created
February 1, 2023 00:03
-
-
Save lexuanquynh/5d1f03c29753beaeef5e2e9178c28350 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ErrorTracker.swift | |
// goldProject | |
// | |
// Created by Admintrator Admin on 11/17/22. | |
// Copyright © 2022 Code toan bug. All rights reserved. | |
// | |
import Foundation | |
import RxSwift | |
import RxCocoa | |
final class ErrorTracker: SharedSequenceConvertibleType { | |
typealias SharingStrategy = DriverSharingStrategy | |
private let _subject = PublishSubject<Error>() | |
func trackError<O: ObservableConvertibleType>(from source: O) -> Observable<O.Element> { | |
return source.asObservable().do(onError: onError) | |
} | |
func asSharedSequence() -> SharedSequence<SharingStrategy, Error> { | |
return _subject.asObservable().asDriverOnErrorJustComplete() | |
} | |
func asObservable() -> Observable<Error> { | |
return _subject.asObservable() | |
} | |
private func onError(_ error: Error) { | |
_subject.onNext(error) | |
} | |
deinit { | |
_subject.onCompleted() | |
} | |
} | |
extension ObservableConvertibleType { | |
func trackError(_ errorTracker: ErrorTracker) -> Observable<Element> { | |
return errorTracker.trackError(from: self) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment