Skip to content

Commit 495d397

Browse files
authored
Merge pull request #45387 from nextcloud/fix/xml2js
fix(files): Drop `xml2js` dependency and use browser native DOMParser
2 parents 7bc4ccb + ecb149e commit 495d397

16 files changed

Lines changed: 42 additions & 60 deletions

apps/files/src/views/FilesList.vue

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,13 @@ import type { Upload } from '@nextcloud/upload'
121121
import type { UserConfig } from '../types.ts'
122122
import type { View, ContentsWithRoot } from '@nextcloud/files'
123123
124+
import { getCapabilities } from '@nextcloud/capabilities'
124125
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
125126
import { Folder, Node, Permission } from '@nextcloud/files'
126-
import { getCapabilities } from '@nextcloud/capabilities'
127+
import { translate as t } from '@nextcloud/l10n'
127128
import { join, dirname } from 'path'
128129
import { orderBy } from 'natural-orderby'
129-
import { Parser } from 'xml2js'
130130
import { showError } from '@nextcloud/dialogs'
131-
import { translate, translatePlural } from '@nextcloud/l10n'
132131
import { Type } from '@nextcloud/sharing'
133132
import { UploadPicker } from '@nextcloud/upload'
134133
import { loadState } from '@nextcloud/initial-state'
@@ -469,6 +468,8 @@ export default defineComponent({
469468
},
470469
471470
methods: {
471+
t,
472+
472473
async fetchContent() {
473474
this.loading = true
474475
const dir = this.dir
@@ -569,17 +570,19 @@ export default defineComponent({
569570
}
570571
571572
// Else we try to parse the response error message
572-
try {
573-
const parser = new Parser({ trim: true, explicitRoot: false })
574-
const response = await parser.parseStringPromise(upload.response?.data)
575-
const message = response['s:message'][0] as string
576-
if (typeof message === 'string' && message.trim() !== '') {
577-
// The server message is also translated
578-
showError(this.t('files', 'Error during upload: {message}', { message }))
579-
return
573+
if (typeof upload.response?.data === 'string') {
574+
try {
575+
const parser = new DOMParser()
576+
const doc = parser.parseFromString(upload.response.data, 'text/xml')
577+
const message = doc.getElementsByTagName('s:message')[0]?.textContent ?? ''
578+
if (message.trim() !== '') {
579+
// The server message is also translated
580+
showError(t('files', 'Error during upload: {message}', { message }))
581+
return
582+
}
583+
} catch (error) {
584+
logger.error('Could not parse message', { error })
580585
}
581-
} catch (error) {
582-
logger.error('Error while parsing', { error })
583586
}
584587
585588
// Finally, check the status code if we have one
@@ -632,9 +635,6 @@ export default defineComponent({
632635
toggleGridView() {
633636
this.userConfigStore.update('grid_view', !this.userConfig.grid_view)
634637
},
635-
636-
t: translate,
637-
n: translatePlural,
638638
},
639639
})
640640
</script>

dist/7883-7883.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/7883-7883.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-common.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-common.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-unsupported-browser-redirect.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-unsupported-browser-redirect.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-unsupported-browser.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/core-unsupported-browser.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files-main.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)