mirror of
				https://github.com/mokuappio/serverless-invoices.git
				synced 2025-10-31 09:51:08 -04:00 
			
		
		
		
	Import data.
This commit is contained in:
		
							
								
								
									
										41
									
								
								src/store/data.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/store/data.js
									
									
									
									
									
										Normal 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: {}, | ||||
| }; | ||||
| @ -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: {}, | ||||
| }); | ||||
|  | ||||
| @ -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 }); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user