@@ -194,20 +194,21 @@ export default {
194
194
reject ( getters . getCopy ( 'ERROR_FILE_LOAD' ) ) ;
195
195
} ;
196
196
197
- reader . onload = readerEvent => {
197
+ reader . onload = async readerEvent => {
198
198
const fileData = readerEvent . target . result ;
199
199
const instruments = JSON . parse ( window . atob ( fileData ) ) ;
200
200
201
201
// check if we're dealing with valid instruments
202
202
203
203
if ( Array . isArray ( instruments ) ) {
204
204
let amountImported = 0 ;
205
- instruments . forEach ( async instrument => {
205
+ for ( let i = 0 ; i < instruments . length ; ++ i ) {
206
+ const instrument = instruments [ i ] ;
206
207
if ( InstrumentValidator . isValid ( instrument ) ) {
207
208
await dispatch ( 'saveInstrument' , instrument ) ;
208
209
++ amountImported ;
209
210
}
210
- } ) ;
211
+ }
211
212
resolve ( amountImported ) ;
212
213
} else {
213
214
resolve ( getters . getCopy ( 'ERROR_INSTRUMENT_IMPORT' ) ) ;
@@ -218,13 +219,19 @@ export default {
218
219
} ) ;
219
220
} ) ;
220
221
} ,
221
- exportInstruments ( { state } ) {
222
- return new Promise ( ( resolve , reject ) => {
222
+ exportInstruments ( { state, getters , dispatch } ) {
223
+ return new Promise ( async ( resolve , reject ) => {
223
224
if ( Array . isArray ( state . instruments ) && state . instruments . length > 0 ) {
225
+ // retrieve all instrument data
226
+ const instruments = [ ] ;
227
+ for ( let i = 0 ; i < state . instruments . length ; ++ i ) {
228
+ const ins = state . instruments [ i ] ;
229
+ const instrument = await dispatch ( 'loadInstrument' , getters . getInstrumentByPresetName ( ins . presetName ) ) ;
230
+ instruments . push ( instrument ) ;
231
+ }
224
232
225
233
// encode instrument data
226
-
227
- const data = window . btoa ( JSON . stringify ( state . instruments ) ) ;
234
+ const data = window . btoa ( JSON . stringify ( instruments ) ) ;
228
235
229
236
// download file to disk
230
237
0 commit comments