aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/src
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2024-05-17 10:03:38 +0200
committerFerdinand Thiessen <opensource@fthiessen.de>2024-05-17 10:03:38 +0200
commita8f4b25ae834778e120ea011a3c98aa77ef90c51 (patch)
treecb756350e23b26991d9b533a2c16522daa6cc3e5 /apps/files/src
parent7bc4ccba6ad85c31a1e500023a9514059d584548 (diff)
downloadnextcloud-server-a8f4b25ae834778e120ea011a3c98aa77ef90c51.tar.gz
nextcloud-server-a8f4b25ae834778e120ea011a3c98aa77ef90c51.zip
fix(files): Drop `xml2js` dependency and use browser native DOMParser
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/files/src')
-rw-r--r--apps/files/src/views/FilesList.vue32
1 files changed, 16 insertions, 16 deletions
diff --git a/apps/files/src/views/FilesList.vue b/apps/files/src/views/FilesList.vue
index f5bb45ede1d..82be9afabde 100644
--- a/apps/files/src/views/FilesList.vue
+++ b/apps/files/src/views/FilesList.vue
@@ -121,14 +121,13 @@ import type { Upload } from '@nextcloud/upload'
import type { UserConfig } from '../types.ts'
import type { View, ContentsWithRoot } from '@nextcloud/files'
+import { getCapabilities } from '@nextcloud/capabilities'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import { Folder, Node, Permission } from '@nextcloud/files'
-import { getCapabilities } from '@nextcloud/capabilities'
+import { translate as t } from '@nextcloud/l10n'
import { join, dirname } from 'path'
import { orderBy } from 'natural-orderby'
-import { Parser } from 'xml2js'
import { showError } from '@nextcloud/dialogs'
-import { translate, translatePlural } from '@nextcloud/l10n'
import { Type } from '@nextcloud/sharing'
import { UploadPicker } from '@nextcloud/upload'
import { loadState } from '@nextcloud/initial-state'
@@ -469,6 +468,8 @@ export default defineComponent({
},
methods: {
+ t,
+
async fetchContent() {
this.loading = true
const dir = this.dir
@@ -569,17 +570,19 @@ export default defineComponent({
}
// Else we try to parse the response error message
- try {
- const parser = new Parser({ trim: true, explicitRoot: false })
- const response = await parser.parseStringPromise(upload.response?.data)
- const message = response['s:message'][0] as string
- if (typeof message === 'string' && message.trim() !== '') {
- // The server message is also translated
- showError(this.t('files', 'Error during upload: {message}', { message }))
- return
+ if (typeof upload.response?.data === 'string') {
+ try {
+ const parser = new DOMParser()
+ const doc = parser.parseFromString(upload.response.data, 'text/xml')
+ const message = doc.getElementsByTagName('s:message')[0]?.textContent ?? ''
+ if (message.trim() !== '') {
+ // The server message is also translated
+ showError(t('files', 'Error during upload: {message}', { message }))
+ return
+ }
+ } catch (error) {
+ logger.error('Could not parse message', { error })
}
- } catch (error) {
- logger.error('Error while parsing', { error })
}
// Finally, check the status code if we have one
@@ -632,9 +635,6 @@ export default defineComponent({
toggleGridView() {
this.userConfigStore.update('grid_view', !this.userConfig.grid_view)
},
-
- t: translate,
- n: translatePlural,
},
})
</script>