using System; using UniRx; using UnityEngine; namespace SharpUI.Source.Common.Util.Extensions { public static class ObservableExtensions { public static void SubscribeWith( this IObservable observable, Component component, Action action) { observable.Subscribe(action).AddTo(component); } public static void SubscribeWith( this IObservable observable, Component component, Action action, Action errorAction) { observable.Subscribe(action, errorAction).AddTo(component); } public static void SubscribeWith( this IObservable observable, CompositeDisposable disposable, Action action) { observable.Subscribe(action).AddTo(disposable); } public static void SubscribeWith( this IObservable observable, CompositeDisposable disposable, Action action, Action errorAction) { observable.Subscribe(action, errorAction).AddTo(disposable); } public static T BlockingValue(this IObservable observable) { return observable.ToTask().Result; } } }