@modyo/cli
Version:
Modyo Command Line Interface
113 lines (111 loc) • 3.27 kB
JavaScript
/* 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);
},
},
});