From 58cda9cc7fb79ca9df6746de7f9662bc08dc156a Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 13 Oct 2017 12:29:40 +0200 Subject: initial commit --- src/stores/PaymentStore.js | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/stores/PaymentStore.js (limited to 'src/stores/PaymentStore.js') diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js new file mode 100644 index 000000000..9e348d14e --- /dev/null +++ b/src/stores/PaymentStore.js @@ -0,0 +1,47 @@ +import { action, observable, computed } from 'mobx'; + +import Store from './lib/Store'; +import CachedRequest from './lib/CachedRequest'; +import Request from './lib/Request'; +import { gaEvent } from '../lib/analytics'; + +export default class PaymentStore extends Store { + @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); + @observable createHostedPageRequest = new Request(this.api.payment, 'getHostedPage'); + @observable createDashboardUrlRequest = new Request(this.api.payment, 'getDashboardUrl'); + @observable ordersDataRequest = new CachedRequest(this.api.payment, 'getOrders'); + + constructor(...args) { + super(...args); + + this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this)); + this.actions.payment.createDashboardUrl.listen(this._createDashboardUrl.bind(this)); + } + + @computed get plan() { + if (this.plansRequest.isError) { + return {}; + } + return this.plansRequest.execute().result || {}; + } + + @computed get orders() { + return this.ordersDataRequest.execute().result || []; + } + + @action _createHostedPage({ planId }) { + const request = this.createHostedPageRequest.execute(planId); + + gaEvent('Payment', 'createHostedPage', planId); + + return request; + } + + @action _createDashboardUrl() { + const request = this.createDashboardUrlRequest.execute(); + + gaEvent('Payment', 'createDashboardUrl'); + + return request; + } +} -- cgit v1.2.3-54-g00ecf