/// <summary> /// Subscribe execute. /// </summary> /// <typeparam name="T">AsyncReactiveCommand type argument.</typeparam> /// <param name="self">AsyncReactiveCommand</param> /// <param name="asyncAction">Action</param> /// <param name="postProcess">Handling of the subscription.</param> /// <returns>Same of self argument</returns> public static AsyncReactiveCommand <T> WithSubscribe <T>(this AsyncReactiveCommand <T> self, Func <T, Task> asyncAction, Action <IDisposable> postProcess = null) { var d = self.Subscribe(asyncAction); postProcess?.Invoke(d); return(self); }
public Subscription(AsyncReactiveCommand <T> parent, Func <T, Task> asyncAction) { this.parent = parent; this.asyncAction = asyncAction; }
/// <summary> /// Subscribe execute. /// </summary> /// <typeparam name="T">AsyncReactiveCommand type argument.</typeparam> /// <param name="self">AsyncReactiveCommand</param> /// <param name="asyncAction">Action</param> /// <param name="disposable">The return value of self.Subscribe(asyncAction)</param> /// <returns>Same of self argument</returns> public static AsyncReactiveCommand <T> WithSubscribe <T>(this AsyncReactiveCommand <T> self, Func <T, Task> asyncAction, out IDisposable disposable) { disposable = self.Subscribe(asyncAction); return(self); }
/// <summary> /// Command binding method. /// </summary> /// <typeparam name="T">IObservable type</typeparam> /// <param name="self">IObservable</param> /// <param name="command">Command</param> /// <returns>Command binding token</returns> public static IDisposable SetCommand <T>(this IObservable <T> self, AsyncReactiveCommand command) => self .Where(_ => command.CanExecute()) .Subscribe(x => command.Execute());