public CakeModelService( ICakeApiService cakeApiService, IAppUserModelService appUserModelService, IPaymentApiService paymentApiService, ILogger logger) { _cakeApiService = cakeApiService; _paymentApiService = paymentApiService; _nearbyCakes = new SourceCache <CakeDto, int>(c => c.Id); _cd = new CompositeDisposable(); //_nearbyCakes // .Connect() // .CacheChangeSet(_cacheKey, logger) // .Subscribe(); appUserModelService .UserObservable .ObserveOn(RxApp.TaskpoolScheduler) .Where(u => u != null) .SelectMany(async u => await cakeApiService.GetNearbyCakes(u.Position)) .RetryWithBackoff(3) .LogException(logger) .Subscribe(cakes => { _nearbyCakes.Edit(l => l.AddOrUpdate(cakes)); }); //Observable.FromAsync(async () => await _nearbyCakes.FromCache(_cacheKey, EqualityComparer<CakeDto>.Default)).Subscribe().DisposeWith(_cd); }
public PaymentViewModel( PaymentNavigation paymentNavigation, IAppUserModelService appUserModelService = null, IBakerModelService bakerModelService = null, IPaymentApiService paymentApiService = null) { _appUserModelService = appUserModelService ?? Locator.Current.GetService <IAppUserModelService>(); _bakerModelService = bakerModelService ?? Locator.Current.GetService <IBakerModelService>(); _paymentApiService = paymentApiService ?? Locator.Current.GetService <IPaymentApiService>(); PayWithVippsCommand = ReactiveCommand.CreateFromTask(PayWithVipps); var canGoToReceiptObservable = this.WhenAnyValue(vm => vm.PaymentSuccessfull) .Select(ps => ps) .StartWith(false); canGoToReceiptObservable.ToProperty(this, vm => vm.GoNextEnabled, out _goNextEnabled); GoNextCommand = ReactiveCommand.CreateFromTask(GoToReceipt, canGoToReceiptObservable); Prepare(paymentNavigation); }