UNPKG

@modyo/cli

Version:

Modyo Command Line Interface

176 lines (159 loc) 4.52 kB
/* 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)); })); }, }, });