Import data.

This commit is contained in:
HenriT
2021-02-16 18:34:04 +02:00
parent 6cadfed54c
commit 26ccd9365e
7 changed files with 167 additions and 30 deletions

41
src/store/data.js Normal file
View File

@ -0,0 +1,41 @@
import localForage from 'localforage';
import { download } from '../utils/helpers';
export default {
namespaced: true,
state: {
isImportModalOpen: false,
},
mutations: {
isImportModalOpen(state, isOpen) {
state.isImportModalOpen = isOpen;
},
},
actions: {
async exportJson() {
let results = [];
const keys = await localForage.keys();
keys.forEach((key) => {
results.push(localForage.getItem(key));
});
results = await Promise.all(results);
const data = {};
keys.forEach((key, index) => {
data[key] = results[index];
});
download(JSON.stringify(data), 'serverless-invoices.json', 'application/json');
},
async importJson({ dispatch }, data) {
const results = [];
Object.keys(data).forEach((key) => {
results.push(localForage.setItem(key, data[key]));
});
await Promise.all(results);
await dispatch('teams/terminate', null, { root: true });
return dispatch('teams/init', null, { root: true });
},
},
getters: {},
};

View File

@ -12,8 +12,7 @@ import clients from '@/store/clients';
import invoices from '@/store/invoices';
import teams from '@/store/teams';
import themes from '@/store/themes';
import localForage from 'localforage';
import { download } from '../utils/helpers';
import data from '@/store/data';
Vue.use(Vuex);
@ -34,27 +33,9 @@ export default new Vuex.Store({
invoices,
teams,
themes,
data,
},
state: {},
mutations: {},
actions: {
async exportJson() {
let results = [];
const keys = await localForage.keys();
keys.forEach((key) => {
results.push(localForage.getItem(key));
});
results = await Promise.all(results);
const data = {};
keys.forEach((key, index) => {
data[key] = results[index];
});
download(JSON.stringify(data), 'serverless-invoices.json', 'application/json');
},
importJson() {
},
},
actions: {},
});

View File

@ -7,9 +7,11 @@ export default {
mutations: {},
actions: {
async init({ dispatch }) {
dispatch('clients/terminate', null, { root: true });
dispatch('bankAccounts/terminate', null, { root: true });
dispatch('invoices/terminate', null, { root: true });
await Promise.all([
dispatch('clients/terminate', null, { root: true }),
dispatch('bankAccounts/terminate', null, { root: true }),
dispatch('invoices/terminate', null, { root: true }),
]);
await dispatch('getTeam');
@ -17,6 +19,9 @@ export default {
dispatch('bankAccounts/init', null, { root: true });
dispatch('invoices/init', null, { root: true });
},
async terminate() {
return Team.deleteAll();
},
async getTeam() {
const team = await TeamService.getTeam();
await Team.create({ data: team });