UNPKG

@modyo/cli

Version:

Modyo Command Line Interface

113 lines (111 loc) 3.27 kB
/* eslint no-param-reassign: ["error", {"ignorePropertyModificationsFor": ["state"] }] */ import Vuex from 'vuex'; import axios from 'axios'; export default new Vuex.Store({ state: { accounts: [], fromAccount: null, amount: 0, cards: [], toCard: null, setIsLoadingCards: false, isLoadingAccounts: false, paramCardID: false, paramClientId: 1, isInternational: false, amountOption: '', sendVoucher: false, }, mutations: { SET_IS_LOADING_ACCOUNTS(state, data) { state.isLoadingAccounts = data; }, SET_ACCOUNTS(state, data) { state.accounts = data; }, SET_AMOUNT(state, data) { state.amount = data; }, SET_FROM_ACCOUNT(state, data) { state.fromAccount = data; }, SET_IS_LOADING_CARDS(state, data) { state.is_loading_cards = data; }, SET_PARAM_CARD_ID(state, data) { state.paramCardID = data; }, SET_PARAM_CLIENT_ID(state, data) { state.paramClientId = data; }, SET_SEND_VOUCHER(state, data) { state.sendVoucher = data; }, SET_IS_INTERNATIONAL(state, data) { state.isInternational = data; }, SET_CARDS(state, data) { state.cards = data; }, SET_TO_CARD(state, data) { state.toCard = data; }, SET_AMOUNT_OPTION(state, data) { state.amountOption = data; }, }, actions: { DO_DATA_INITIALIZATION(context) { return new Promise(((resolve, reject) => { context.dispatch('GET_ACCOUNTS') .then(() => { const fromAccount = context.state.accounts.find(account => account.id === context.state.paramAccountId) || null; context.commit('SET_FROM_ACCOUNT', fromAccount); }) .catch((error) => { reject(error); }); context.dispatch('GET_CARDS') .then((cards) => { const toCard = context.state.cards.find(card => card.id === context.state.paramCardId) || null; context.commit('SET_TO_CARD', toCard); localStorage.clear(); resolve(cards); }) .catch((error) => { reject(error); }); })); }, GET_ACCOUNTS(context) { context.commit('SET_IS_LOADING_ACCOUNTS', true); context.commit('SET_ACCOUNTS', []); return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/accounts`, { params: { 'filter[order]': 'accountType', }, }) .then((accounts) => { context.commit('SET_ACCOUNTS', accounts.data); context.commit('SET_IS_LOADING_ACCOUNTS', false); return accounts; }) .catch(err => err); }, GET_CARDS(context) { context.commit('SET_IS_LOADING_CARDS', true); context.commit('SET_CARDS', []); axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/creditCards`, { params: { 'filter[order]': 'cardType', }, }) .then((response) => { context.commit('SET_CARDS', response.data); context.commit('SET_IS_LOADING_CARDS', false); return response; }, err => err); }, }, });