Skip to content
Prev Previous commit
Next Next commit
Check if data is exportable and display warnings
Signed-off-by: Christopher Ng <[email protected]>
(cherry picked from commit 83f977f)
  • Loading branch information
Pytal committed Jun 10, 2022
commit 41c35eeddd812e365201bb7219d3e3b6750d8a7d
4 changes: 2 additions & 2 deletions src/admin-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ import Vue from 'vue'
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
import '@nextcloud/dialogs/styles/toast.scss'

import logger from './logger'
import AdminSettings from './views/Admin/Settings'
import logger from './shared/logger.js'
import AdminSettings from './views/Admin/Settings.vue'

Vue.mixin({ props: { logger }, methods: { t, n } })

Expand Down
15 changes: 13 additions & 2 deletions src/components/ExportSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,8 @@ import InformationOutline from 'vue-material-design-icons/InformationOutline'
import Modal from '@nextcloud/vue/dist/Components/Modal'
import PackageDown from 'vue-material-design-icons/PackageDown'

import { queueExportJob, cancelJob } from '../services/migrationService.js'
import { queueExportJob, cancelJob, checkExportability } from '../services/migrationService.js'
import { handleWarning } from '../shared/utils.js'

export default {
name: 'ExportSection',
Expand Down Expand Up @@ -192,12 +193,22 @@ export default {

watch: {
sortedMigrators: {
deep: true,
immediate: true,
handler(migrators, oldMigrators) {
this.selectedMigrators = migrators.map(({ id }) => id)
},
},

selectedMigrators: {
immediate: false,
async handler(migrators, oldMigrators) {
try {
await checkExportability(migrators)
} catch (error) {
handleWarning(error)
}
},
},
},

methods: {
Expand Down
4 changes: 2 additions & 2 deletions src/personal-settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ import Vue from 'vue'
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
import '@nextcloud/dialogs/styles/toast.scss'

import logger from './logger'
import PersonalSettings from './views/Personal/Settings'
import logger from './shared/logger.js'
import PersonalSettings from './views/Personal/Settings.vue'

Vue.prototype.t = t
Vue.prototype.n = n
Expand Down
3 changes: 2 additions & 1 deletion src/logger.js → src/shared/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
*
*/

import { APP_ID } from './shared/constants'
import { getLoggerBuilder } from '@nextcloud/logger'

import { APP_ID } from './constants.js'

export default getLoggerBuilder()
.setApp(APP_ID)
.detectUser()
Expand Down
26 changes: 26 additions & 0 deletions src/shared/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,32 @@
*
*/

import { showWarning, showError } from '@nextcloud/dialogs'

import logger from './logger.js'

/**
* @param {AxiosError} error Error object
*
* @return {void}
*/
export const handleWarning = (error) => {
const warningMessage = error.response.data.ocs?.meta?.message || 'Unknown warning'
logger.warn(warningMessage, { error })
showWarning(warningMessage)
}

/**
* @param {AxiosError} error Error object
*
* @return {void}
*/
export const handleError = (error) => {
const errorMessage = error.response.data.ocs?.meta?.message || 'Unknown error'
logger.error(errorMessage, { error })
showError(errorMessage)
}

/**
* @param {string} name Name of the query parameter
* @param {string[]} values Array of values
Expand Down