-
Notifications
You must be signed in to change notification settings - Fork 1
/
ReactivePresenter.cs
37 lines (28 loc) · 1.78 KB
/
ReactivePresenter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using Cysharp.Threading.Tasks;
using UniRx;
namespace Boscohyun.RxPresenter
{
public class ReactivePresenter<T> : Presenter, IReactivePresenter<T> where T : ReactivePresenter<T>
{
public IObservable<T> OnPresenterStateChange => Humble.OnPresenterStateChange.Select(_ => (T) this);
public IObservable<T> OnShowAnimationBeginning => Humble.OnPresenterStateChange.Select(_ => (T) this);
public IObservable<T> OnShowAnimationEnd => Humble.OnPresenterStateChange.Select(_ => (T) this);
public IObservable<T> OnHideAnimationBeginning => Humble.OnPresenterStateChange.Select(_ => (T) this);
public IObservable<T> OnHideAnimationEnd => Humble.OnPresenterStateChange.Select(_ => (T) this);
public void Show(Action<T> callback) => Humble.Show(_ => callback?.Invoke((T) this));
public void Show(bool skipAnimation, Action<T> callback) =>
Humble.Show(skipAnimation, _ => callback?.Invoke((T) this));
public IObservable<T> ShowAsObservable(bool skipAnimation = default) =>
Humble.ShowAsObservable(skipAnimation).Select(_ => (T) this);
public async UniTask<T> ShowAsync(bool skipAnimation = default) =>
await ShowAsObservable(skipAnimation).ToTask();
public void Hide(Action<T> callback) => Humble.Hide(_ => callback?.Invoke((T) this));
public void Hide(bool skipAnimation, Action<T> callback) =>
Humble.Hide(skipAnimation, _ => callback?.Invoke((T) this));
public IObservable<T> HideAsObservable(bool skipAnimation = default) =>
Humble.HideAsObservable(skipAnimation).Select(_ => (T) this);
public async UniTask<T> HideAsync(bool skipAnimation = default) =>
await HideAsObservable(skipAnimation).ToTask();
}
}