Ejemplo n.º 1
0
 public static IObservable <Unit> ObserveReset(IHotObservable <Step> stepObservable)
 {
     return(stepObservable
            .Scan(
                new { IsReset = false, Step = Step.Start },
                (previous, current) =>
                new
     {
         IsReset = (current == Step.Start) && (previous.Step != Step.Start),
         Step = current
     })
            .Where(pair => pair.IsReset)
            .SelectUnit());
 }
Ejemplo n.º 2
0
 public static IObservable <(Step Step, Result Result)> ObserveStepResult(
     IHotObservable <Step> stepObservable,
     IObservable <Unit> okObservable,
     IObservable <Unit> cancelObservable,
     IObservable <Unit> postponeObservable)
 {
     return(stepObservable
            .SelectManyCancelPrevious(step => Observable
                                      .Merge(
                                          okObservable.Select(_ => Result.Ok),
                                          cancelObservable.Select(_ => Result.Cancel),
                                          postponeObservable.Select(_ => Result.Postpone))
                                      .Select(result => (step, result))));
 }