aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2025-01-27 19:31:30 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2025-01-27 19:31:30 +0100
commit7e483a2d21694f50fbf39a7ff597640ea24c4136 (patch)
tree05f6b1c0221ce08d642d904174996af7ff4c7ec3
parent6dc83b96c40d094ccb3a8b8dfa74fec263e2852d (diff)
downloadnextcloud-server-7e483a2d21694f50fbf39a7ff597640ea24c4136.tar.gz
nextcloud-server-7e483a2d21694f50fbf39a7ff597640ea24c4136.zip
refactor: Drop `query-string` dependency in favor of native `URLSearchParams`
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
-rw-r--r--apps/files/src/router/router.ts5
-rw-r--r--apps/files_sharing/src/router/index.ts6
-rw-r--r--core/src/views/Login.vue27
-rw-r--r--package-lock.json51
-rw-r--r--package.json1
5 files changed, 21 insertions, 69 deletions
diff --git a/apps/files/src/router/router.ts b/apps/files/src/router/router.ts
index de81755d234..76a131a19f0 100644
--- a/apps/files/src/router/router.ts
+++ b/apps/files/src/router/router.ts
@@ -6,7 +6,6 @@ import type { RawLocation, Route } from 'vue-router'
import type { ErrorHandler } from 'vue-router/types/router.d.ts'
import { generateUrl } from '@nextcloud/router'
-import queryString from 'query-string'
import Router from 'vue-router'
import Vue from 'vue'
@@ -42,7 +41,9 @@ const router = new Router({
// Custom stringifyQuery to prevent encoding of slashes in the url
stringifyQuery(query) {
- const result = queryString.stringify(query).replace(/%2F/gmi, '/')
+ const params = new URLSearchParams(Object.entries(query))
+ const result = params.toString().replace(/%2F/gmi, '/')
+ // Only for vue-router 3 (vue2) we need to prepend a `?`
return result ? ('?' + result) : ''
},
})
diff --git a/apps/files_sharing/src/router/index.ts b/apps/files_sharing/src/router/index.ts
index 6a417975e32..f8855bb7c2d 100644
--- a/apps/files_sharing/src/router/index.ts
+++ b/apps/files_sharing/src/router/index.ts
@@ -7,7 +7,6 @@ import type { ErrorHandler } from 'vue-router/types/router.d.ts'
import { loadState } from '@nextcloud/initial-state'
import { generateUrl } from '@nextcloud/router'
-import queryString from 'query-string'
import Router from 'vue-router'
import Vue from 'vue'
@@ -44,9 +43,10 @@ const router = new Router({
},
],
- // Custom stringifyQuery to prevent encoding of slashes in the url
stringifyQuery(query) {
- const result = queryString.stringify(query).replace(/%2F/gmi, '/')
+ const params = new URLSearchParams(Object.entries(query))
+ const result = params.toString().replace(/%2F/gmi, '/')
+ // Only for vue-router 3 (vue2) we need to prepend a `?`
return result ? ('?' + result) : ''
},
})
diff --git a/core/src/views/Login.vue b/core/src/views/Login.vue
index a13109bb766..79bfa6fd089 100644
--- a/core/src/views/Login.vue
+++ b/core/src/views/Login.vue
@@ -105,7 +105,6 @@
<script>
import { loadState } from '@nextcloud/initial-state'
-import queryString from 'query-string'
import LoginForm from '../components/login/LoginForm.vue'
import PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'
@@ -113,17 +112,7 @@ import ResetPassword from '../components/login/ResetPassword.vue'
import UpdatePassword from '../components/login/UpdatePassword.vue'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'
-
-const query = queryString.parse(location.search)
-if (query.clear === '1') {
- try {
- window.localStorage.clear()
- window.sessionStorage.clear()
- console.debug('Browser storage cleared')
- } catch (e) {
- console.error('Could not clear browser storage', e)
- }
-}
+import logger from '../logger'
export default {
name: 'Login',
@@ -165,6 +154,20 @@ export default {
}
},
+ beforeCreate() {
+ const clear = window.location.searchParams.get('clear')
+
+ if (clear === '1') {
+ try {
+ window.localStorage.clear()
+ window.sessionStorage.clear()
+ logger.debug('Browser storage cleared')
+ } catch (error) {
+ logger.error('Could not clear browser storage', { error })
+ }
+ }
+ },
+
methods: {
passwordResetFinished() {
this.resetPasswordTarget = ''
diff --git a/package-lock.json b/package-lock.json
index e2f0e2a9489..06ef09d2c53 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -64,7 +64,6 @@
"p-queue": "^7.4.1",
"path": "^0.12.7",
"pinia": "^2.3.0",
- "query-string": "^9.1.0",
"regenerator-runtime": "^0.14.1",
"select2": "3.5.1",
"snap.js": "^2.0.9",
@@ -10227,15 +10226,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/decode-uri-component": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.4.1.tgz",
- "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==",
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- }
- },
"node_modules/deep-eql": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
@@ -13276,18 +13266,6 @@
"node": ">=8"
}
},
- "node_modules/filter-obj": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz",
- "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==",
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/finalhandler": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -20550,23 +20528,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/query-string": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.1.0.tgz",
- "integrity": "sha512-t6dqMECpCkqfyv2FfwVS1xcB6lgXW/0XZSaKdsCNGYkqMO76AFiJEg4vINzoDKcZa6MS7JX+OHIjwh06K5vczw==",
- "license": "MIT",
- "dependencies": {
- "decode-uri-component": "^0.4.1",
- "filter-obj": "^5.1.0",
- "split-on-first": "^3.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/querystring-es3": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
@@ -22712,18 +22673,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/split-on-first": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz",
- "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/splitpanes": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/splitpanes/-/splitpanes-2.4.1.tgz",
diff --git a/package.json b/package.json
index 24227bfc7f9..63af3090326 100644
--- a/package.json
+++ b/package.json
@@ -95,7 +95,6 @@
"p-queue": "^7.4.1",
"path": "^0.12.7",
"pinia": "^2.3.0",
- "query-string": "^9.1.0",
"regenerator-runtime": "^0.14.1",
"select2": "3.5.1",
"snap.js": "^2.0.9",