Skip to content

Commit 07d64dd

Browse files
authored
Merge pull request #1463 from nextcloud/show-preview-import-error
enh: display error popup when import preview fails
2 parents d96669a + 64116a4 commit 07d64dd

File tree

1 file changed

+41
-56
lines changed

1 file changed

+41
-56
lines changed

src/modules/modals/Import.vue

Lines changed: 41 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,17 @@
9494

9595
<!-- show loading -->
9696
<div v-if="loading && !waitForReload">
97-
<NcEmptyContent :name="t('tables', 'Importing data from ') + importFileName" :description="t('tables', 'This might take a while...')">
98-
<template #icon>
99-
<NcIconTimerSand />
100-
</template>
101-
</NcEmptyContent>
97+
<div v-if="!importFailed">
98+
<NcEmptyContent :name="t('tables', 'Importing data from ') + importFileName"
99+
:description="t('tables', 'This might take a while...')">
100+
<template #icon>
101+
<NcIconTimerSand />
102+
</template>
103+
</NcEmptyContent>
104+
</div>
105+
<div v-else>
106+
<NcEmptyContent :name="t('tables', 'Failed')" :description="errorMessage" />
107+
</div>
102108
</div>
103109

104110
<div v-if="waitForReload">
@@ -110,7 +116,7 @@
110116

111117
<script>
112118
import { NcDialog, NcButton, NcCheckboxRadioSwitch, NcEmptyContent, NcLoadingIcon } from '@nextcloud/vue'
113-
import { getFilePickerBuilder, FilePickerType, showError, showWarning } from '@nextcloud/dialogs'
119+
import { getFilePickerBuilder, FilePickerType, showWarning } from '@nextcloud/dialogs'
114120
import RowFormWrapper from '../../shared/components/ncTable/partials/rowTypePartials/RowFormWrapper.vue'
115121
import permissionsMixin from '../../shared/components/ncTable/mixins/permissionsMixin.js'
116122
import IconFolder from 'vue-material-design-icons/Folder.vue'
@@ -164,6 +170,7 @@ export default {
164170
createMissingColumns: true,
165171
pathError: false,
166172
loading: false,
173+
importFailed: false,
167174
result: null,
168175
preview: null,
169176
columnsConfig: [],
@@ -177,6 +184,7 @@ export default {
177184
'application/vnd.oasis.opendocument.spreadsheet',
178185
],
179186
selectedUploadFile: null,
187+
errorMessage: t('tables', 'Could not import data due to unknown errors.'),
180188
}
181189
},
182190
@@ -281,21 +289,14 @@ export default {
281289
if (res.status === 200) {
282290
this.preview = res.data
283291
this.loading = false
284-
} else if (res.status === 401) {
285-
console.debug('error while importing', res)
286-
showError(t('tables', 'Could not import, not authorized. Are you logged in?'))
287-
} else if (res.status === 403) {
288-
console.debug('error while importing', res)
289-
showError(t('tables', 'Could not import, missing needed permission.'))
290-
} else if (res.status === 404) {
291-
console.debug('error while importing', res)
292-
showError(t('tables', 'Could not import, needed resources were not found.'))
293292
} else {
294-
showError(t('tables', 'Could not import data due to unknown errors.'))
295-
console.debug('error while importing', res)
293+
this.handleResponse(res, null)
294+
this.importFailed = true
296295
}
297296
} catch (e) {
297+
this.errorMessage = t('tables', 'Could not import data due to unknown errors.')
298298
console.error(e)
299+
this.importFailed = true
299300
return false
300301
}
301302
},
@@ -315,21 +316,14 @@ export default {
315316
if (res.status === 200) {
316317
this.preview = res.data
317318
this.loading = false
318-
} else if (res.status === 401) {
319-
console.debug('error while importing', res)
320-
showError(t('tables', 'Could not import, not authorized. Are you logged in?'))
321-
} else if (res.status === 403) {
322-
console.debug('error while importing', res)
323-
showError(t('tables', 'Could not import, missing needed permission.'))
324-
} else if (res.status === 404) {
325-
console.debug('error while importing', res)
326-
showError(t('tables', 'Could not import, needed resources were not found.'))
327319
} else {
328-
showError(t('tables', 'Could not import data due to unknown errors.'))
329-
console.debug('error while importing', res)
320+
this.handleResponse(res, null)
321+
this.importFailed = true
330322
}
331323
} catch (e) {
324+
this.errorMessage = t('tables', 'Could not import data due to unknown errors.')
332325
console.error(e)
326+
this.importFailed = true
333327
return false
334328
}
335329
},
@@ -389,22 +383,10 @@ export default {
389383
this.result = res.data
390384
} else {
391385
console.debug('error while importing', res)
392-
showError(t('tables', res.data?.message || 'Could not import data due to unknown errors.'))
386+
this.errorMessage = t('tables', res.data?.message || 'Could not import data due to unknown errors.')
393387
}
394388
} catch (e) {
395-
if (e.response?.status === 401) {
396-
console.debug('error while importing', e)
397-
showError(t('tables', 'Could not import, not authorized. Are you logged in?'))
398-
} else if (e.response?.status === 403) {
399-
console.debug('error while importing', e)
400-
showError(t('tables', 'Could not import, missing needed permission.'))
401-
} else if (e.response?.status === 404) {
402-
console.debug('error while importing', e)
403-
showError(t('tables', 'Could not import, needed resources were not found.'))
404-
} else {
405-
console.debug('error while importing', e)
406-
showError(t('tables', e.response.data?.message || 'Could not import data due to unknown errors.'))
407-
}
389+
this.handleResponse(e.response, e)
408390
}
409391
this.loading = false
410392
},
@@ -427,22 +409,10 @@ export default {
427409
this.result = res.data
428410
} else {
429411
console.debug('error while importing', res)
430-
showError(t('tables', res.data?.message || 'Could not import data due to unknown errors.'))
412+
this.errorMessage = t('tables', res.data?.message || 'Could not import data due to unknown errors.')
431413
}
432414
} catch (e) {
433-
if (e.response?.status === 401) {
434-
console.debug('error while importing', e)
435-
showError(t('tables', 'Could not import, not authorized. Are you logged in?'))
436-
} else if (e.response?.status === 403) {
437-
console.debug('error while importing', e)
438-
showError(t('tables', 'Could not import, missing needed permission.'))
439-
} else if (e.response?.status === 404) {
440-
console.debug('error while importing', e)
441-
showError(t('tables', 'Could not import, needed resources were not found.'))
442-
} else {
443-
console.debug('error while importing', e)
444-
showError(t('tables', e.response?.data?.message || 'Could not import data due to unknown errors.'))
445-
}
415+
this.handleResponse(e.response, e)
446416
}
447417
this.loading = false
448418
},
@@ -488,6 +458,21 @@ export default {
488458
onUpdateColumnsConfig(event) {
489459
this.columnsConfig = event
490460
},
461+
handleResponse(res, e) {
462+
if (res?.status === 401) {
463+
console.debug('error while importing', e || res)
464+
this.errorMessage = t('tables', 'Could not import, not authorized. Are you logged in?')
465+
} else if (res?.status === 403) {
466+
console.debug('error while importing', e || res)
467+
this.errorMessage = t('tables', 'Could not import, missing needed permission.')
468+
} else if (res?.status === 404) {
469+
console.debug('error while importing', e || res)
470+
this.errorMessage = t('tables', 'Could not import, needed resources were not found.')
471+
} else {
472+
console.debug('error while importing', e || res)
473+
this.errorMessage = t('tables', e?.response?.data?.message || 'Could not import data due to unknown errors.')
474+
}
475+
},
491476
},
492477
493478
}

0 commit comments

Comments
 (0)