@modyo/cli
Version:
Modyo Command Line Interface
176 lines (159 loc) • 4.52 kB
JavaScript
/* eslint no-param-reassign: ["error", {"ignorePropertyModificationsFor": ["state"] }] */
import Vuex from 'vuex';
import axios from 'axios';
export default new Vuex.Store({
state: {
accounts: [],
amount: 0,
banks: [],
fromAccount: false,
toAccount: {},
toOthers: false,
toPayee: false,
scheduled: false,
isLoadingAccounts: false,
isLoadingContacts: true,
isContact: false,
selectedContact: false,
contacts: [],
paramClientId: 1,
paramAccountId: parseInt(getURLParams('account'), 10),
paramOthers: getURLParams('others'),
fromDate: null,
toDate: null,
frequency: '',
thirdState: false,
payee: {
},
},
mutations: {
SET_TO_OTHERS(state, data) {
state.toOthers = data;
},
SET_AMOUNT(state, data) {
state.amount = data;
},
SET_SCHEDULED(state, data) {
state.scheduled = data;
},
SET_IS_CONTACT(state, data) {
state.isContact = data;
},
SET_LOADING_ACCOUNTS(state, data) {
state.isLoadingAccounts = data;
},
SET_LOADING_CONTACTS(state, data) {
state.isLoadingContacts = data;
},
SET_TO_PAYEE(state, data) {
state.toPayee = data;
},
SET_ACCOUNTS(state, data) {
state.accounts = data;
},
SET_CONTACTS(state, data) {
state.contacts = data;
},
SET_FROM_ACCOUNT(state, data) {
state.fromAccount = data;
},
SET_TO_ACCOUNT(state, data) {
state.toAccount = data;
},
SET_BANKS(state, data) {
state.banks = data;
},
SET_PARAM_CLIENT_ID(state, data) {
state.paramClientId = data;
},
SET_PARAM_ACCOUNT_ID(state, data) {
state.paramAccountId = data;
},
SET_PARAM_OTHERS(state, data) {
state.paramOthers = data;
},
SET_FROM_DATE(state, data) {
state.fromDate = data;
},
SET_TO_DATE(state, data) {
state.toDate = data;
},
SET_FREQUENCY(state, data) {
state.frequency = data;
},
SET_THIRD_STATE(state, data) {
state.thirdState = data;
},
},
actions: {
INITIALIZE_DATA(context) {
return new Promise(((resolve, reject) => {
context.dispatch('GET_ACCOUNTS').then(() => {
context.dispatch('GET_CONTACTS').then((contacts) => {
if (context.state.paramOthers === 'yes') {
context.commit('SET_TO_OTHERS', true);
}
localStorage.clear();
resolve(contacts);
})
.catch(error => reject(error));
})
.catch(error => reject(error));
}));
},
GET_ACCOUNTS(context) {
return new Promise(((resolve, reject) => {
context.commit('SET_LOADING_ACCOUNTS', true);
context.commit('SET_ACCOUNTS', []);
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_FROM_ACCOUNT',
context.state.accounts.find(account => account.id === context.state.paramAccountId),
);
context.commit('SET_LOADING_ACCOUNTS', false);
resolve(accounts);
})
.catch(err => reject(err));
}));
},
GET_CONTACTS(context) {
return new Promise(((resolve, reject) => {
context.commit('SET_LOADING_CONTACTS', true);
context.commit('SET_CONTACTS', null);
axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/payees`, {
params: {
'filter[include]': 'bank',
'filter[order]': 'fullname',
},
})
.then((contacts) => {
context.commit('SET_CONTACTS', contacts.data);
context.commit('SET_LOADING_CONTACTS', false);
resolve();
})
.catch(err => reject(err));
}));
},
GET_BANKS(context) {
return new Promise(((resolve, reject) => {
axios.get('https://api-bank.herokuapp.com/api/v1/banks', {
params: {
'filter[order]': 'name ASC',
},
})
.then((banks) => {
context.commit('SET_BANKS', banks.data);
localStorage.clear();
resolve(banks);
})
.catch(error => reject(error));
}));
},
},
});