Browse Source

fix(files): encoded source path on actions requests

Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
tags/v28.0.0beta1
John Molakvoæ 9 months ago
parent
commit
d79e26b25a
No account linked to committer's email address
83 changed files with 140 additions and 139 deletions
  1. 1
    1
      apps/files/src/actions/deleteAction.ts
  2. 2
    2
      apps/files/src/actions/moveOrCopyAction.ts
  3. 4
    3
      apps/files/src/components/FileEntry.vue
  4. 1
    1
      apps/files/src/newMenu/newFolder.ts
  5. 1
    2
      apps/files/src/services/Files.ts
  6. 1
    1
      apps/files_trashbin/src/actions/restoreAction.ts
  7. 1
    1
      apps/files_trashbin/src/services/trashbin.ts
  8. 2
    2
      dist/5912-5912.js
  9. 1
    1
      dist/5912-5912.js.map
  10. 2
    2
      dist/comments-comments-app.js
  11. 1
    1
      dist/comments-comments-app.js.map
  12. 2
    2
      dist/comments-init.js
  13. 1
    1
      dist/comments-init.js.map
  14. 2
    2
      dist/core-common.js
  15. 1
    1
      dist/core-common.js.map
  16. 2
    2
      dist/core-login.js
  17. 1
    1
      dist/core-login.js.map
  18. 2
    2
      dist/core-main.js
  19. 1
    1
      dist/core-main.js.map
  20. 2
    2
      dist/core-profile.js
  21. 1
    1
      dist/core-profile.js.map
  22. 2
    2
      dist/core-unified-search.js
  23. 1
    1
      dist/core-unified-search.js.map
  24. 2
    2
      dist/dav-settings-personal-availability.js
  25. 1
    1
      dist/dav-settings-personal-availability.js.map
  26. 2
    2
      dist/federatedfilesharing-vue-settings-admin.js
  27. 1
    1
      dist/federatedfilesharing-vue-settings-admin.js.map
  28. 2
    2
      dist/federatedfilesharing-vue-settings-personal.js
  29. 1
    1
      dist/federatedfilesharing-vue-settings-personal.js.map
  30. 2
    2
      dist/files-init.js
  31. 1
    1
      dist/files-init.js.map
  32. 2
    2
      dist/files-main.js
  33. 1
    1
      dist/files-main.js.map
  34. 2
    2
      dist/files-personal-settings.js
  35. 1
    1
      dist/files-personal-settings.js.map
  36. 2
    2
      dist/files-reference-files.js
  37. 1
    1
      dist/files-reference-files.js.map
  38. 2
    2
      dist/files-sidebar.js
  39. 1
    1
      dist/files-sidebar.js.map
  40. 2
    2
      dist/files_external-init.js
  41. 1
    1
      dist/files_external-init.js.map
  42. 2
    2
      dist/files_reminders-main.js
  43. 1
    1
      dist/files_reminders-main.js.map
  44. 2
    2
      dist/files_sharing-files_sharing_tab.js
  45. 1
    1
      dist/files_sharing-files_sharing_tab.js.map
  46. 2
    2
      dist/files_sharing-init.js
  47. 1
    1
      dist/files_sharing-init.js.map
  48. 2
    2
      dist/files_sharing-personal-settings.js
  49. 1
    1
      dist/files_sharing-personal-settings.js.map
  50. 2
    2
      dist/files_trashbin-main.js
  51. 1
    1
      dist/files_trashbin-main.js.map
  52. 2
    2
      dist/files_versions-files_versions.js
  53. 1
    1
      dist/files_versions-files_versions.js.map
  54. 2
    2
      dist/settings-vue-settings-admin-basic-settings.js
  55. 1
    1
      dist/settings-vue-settings-admin-basic-settings.js.map
  56. 2
    2
      dist/settings-vue-settings-admin-delegation.js
  57. 1
    1
      dist/settings-vue-settings-admin-delegation.js.map
  58. 2
    2
      dist/settings-vue-settings-admin-security.js
  59. 1
    1
      dist/settings-vue-settings-admin-security.js.map
  60. 2
    2
      dist/settings-vue-settings-apps-users-management.js
  61. 1
    1
      dist/settings-vue-settings-apps-users-management.js.map
  62. 2
    2
      dist/settings-vue-settings-personal-info.js
  63. 1
    1
      dist/settings-vue-settings-personal-info.js.map
  64. 2
    2
      dist/settings-vue-settings-personal-password.js
  65. 1
    1
      dist/settings-vue-settings-personal-password.js.map
  66. 2
    2
      dist/settings-vue-settings-personal-security.js
  67. 1
    1
      dist/settings-vue-settings-personal-security.js.map
  68. 2
    2
      dist/sharebymail-vue-settings-admin-sharebymail.js
  69. 1
    1
      dist/sharebymail-vue-settings-admin-sharebymail.js.map
  70. 2
    2
      dist/systemtags-init.js
  71. 1
    1
      dist/systemtags-init.js.map
  72. 2
    2
      dist/theming-personal-theming.js
  73. 1
    1
      dist/theming-personal-theming.js.map
  74. 2
    2
      dist/updatenotification-updatenotification.js
  75. 1
    1
      dist/updatenotification-updatenotification.js.map
  76. 2
    2
      dist/user_status-menu.js
  77. 1
    1
      dist/user_status-menu.js.map
  78. 2
    2
      dist/weather_status-weather-status.js
  79. 1
    1
      dist/weather_status-weather-status.js.map
  80. 2
    2
      dist/workflowengine-workflowengine.js
  81. 1
    1
      dist/workflowengine-workflowengine.js.map
  82. 17
    16
      package-lock.json
  83. 1
    1
      package.json

+ 1
- 1
apps/files/src/actions/deleteAction.ts View File

@@ -44,7 +44,7 @@ export const action = new FileAction({

async exec(node: Node) {
try {
await axios.delete(node.source)
await axios.delete(node.encodedSource)

// Let's delete even if it's moved to the trashbin
// since it has been removed from the current view

+ 2
- 2
apps/files/src/actions/moveOrCopyAction.ts View File

@@ -86,7 +86,7 @@ export const handleCopyMoveNodeTo = async (node: Node, destination: Folder, meth
}

const relativePath = join(destination.path, node.basename)
const destinationUrl = generateRemoteUrl(`dav/files/${getCurrentUser()?.uid}${relativePath}`)
const destinationUrl = generateRemoteUrl(encodePath(`dav/files/${getCurrentUser()?.uid}${relativePath}`))
logger.debug(`${method} ${node.basename} to ${destinationUrl}`)

// Set loading state
@@ -97,7 +97,7 @@ export const handleCopyMoveNodeTo = async (node: Node, destination: Folder, meth
try {
await axios({
method: method === MoveCopyAction.COPY ? 'COPY' : 'MOVE',
url: encodeURI(node.source),
url: node.encodedSource,
headers: {
Destination: encodeURI(destinationUrl),
Overwrite: overwrite ? undefined : 'F',

+ 4
- 3
apps/files/src/components/FileEntry.vue View File

@@ -845,7 +845,7 @@ export default Vue.extend({
// Rename and move the file
async onRename() {
const oldName = this.source.basename
const oldSource = this.source.source
const oldEncodedSource = this.source.encodedSource
const newName = this.newName.trim?.() || ''
if (newName === '') {
showError(this.t('files', 'Name cannot be empty'))
@@ -870,12 +870,13 @@ export default Vue.extend({
// Update node
this.source.rename(newName)

logger.debug('Moving file to', { destination: this.source.encodedSource, oldEncodedSource })
try {
await axios({
method: 'MOVE',
url: oldSource,
url: oldEncodedSource,
headers: {
Destination: encodeURI(this.source.source),
Destination: this.source.encodedSource,
},
})


+ 1
- 1
apps/files/src/newMenu/newFolder.ts View File

@@ -70,7 +70,7 @@ export const entry = {
async handler(context: Folder, content: Node[]) {
const contentNames = content.map((node: Node) => node.basename)
const name = getUniqueName(t('files', 'New folder'), contentNames)
const { fileid, source } = await createNewFolder(context.source, name)
const { fileid, source } = await createNewFolder(context.encodedSource, encodeURIComponent(name))

// Create the folder in the store
const folder = new Folder({

+ 1
- 2
apps/files/src/services/Files.ts View File

@@ -30,7 +30,6 @@ import { getCurrentUser } from '@nextcloud/auth'
import { getClient, rootPath } from './WebdavClient'
import { hashCode } from '../utils/hashUtils'
import logger from '../logger'
import { encodePath } from '@nextcloud/paths'

const client = getClient()

@@ -45,7 +44,7 @@ export const resultToNode = function(node: FileStat): File | Folder {
const permissions = davParsePermissions(props?.permissions)
const owner = getCurrentUser()?.uid as string

const source = generateRemoteUrl(encodePath('dav' + rootPath + node.filename))
const source = generateRemoteUrl('dav' + rootPath + node.filename)
const id = props?.fileid < 0
? hashCode(source)
: props?.fileid as number || 0

+ 1
- 1
apps/files_trashbin/src/actions/restoreAction.ts View File

@@ -54,7 +54,7 @@ registerFileAction(new FileAction({
const destination = generateRemoteUrl(encodePath(`dav/trashbin/${getCurrentUser()?.uid}/restore/${node.basename}`))
await axios({
method: 'MOVE',
url: node.source,
url: node.encodedSource,
headers: {
destination,
},

+ 1
- 1
apps/files_trashbin/src/services/trashbin.ts View File

@@ -46,7 +46,7 @@ const resultToNode = function(node: FileStat): File | Folder {

const nodeData = {
id: node.props?.fileid as number || 0,
source: generateRemoteUrl(encodePath('dav' + rootPath + node.filename)),
source: generateRemoteUrl('dav' + rootPath + node.filename),
// do not show the mtime column
// mtime: new Date(node.lastmod),
mime: node.mime as string,

+ 2
- 2
dist/5912-5912.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/5912-5912.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/comments-comments-app.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/comments-comments-app.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/comments-init.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/comments-init.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-common.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-common.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-login.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-login.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-profile.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-profile.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/core-unified-search.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/core-unified-search.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/dav-settings-personal-availability.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/dav-settings-personal-availability.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/federatedfilesharing-vue-settings-admin.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/federatedfilesharing-vue-settings-admin.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/federatedfilesharing-vue-settings-personal.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/federatedfilesharing-vue-settings-personal.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-init.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-init.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-personal-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-reference-files.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-reference-files.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files-sidebar.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files-sidebar.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_external-init.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_external-init.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_reminders-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_reminders-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_sharing-files_sharing_tab.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-files_sharing_tab.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_sharing-init.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-init.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_sharing-personal-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_sharing-personal-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_trashbin-main.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_trashbin-main.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/files_versions-files_versions.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/files_versions-files_versions.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-basic-settings.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-basic-settings.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-delegation.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-delegation.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-admin-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-admin-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-apps-users-management.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-apps-users-management.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-info.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-info.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-password.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-password.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/settings-vue-settings-personal-security.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/settings-vue-settings-personal-security.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/sharebymail-vue-settings-admin-sharebymail.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/sharebymail-vue-settings-admin-sharebymail.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/systemtags-init.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/systemtags-init.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/theming-personal-theming.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/theming-personal-theming.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/updatenotification-updatenotification.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/updatenotification-updatenotification.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/user_status-menu.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/user_status-menu.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/weather_status-weather-status.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/weather_status-weather-status.js.map
File diff suppressed because it is too large
View File


+ 2
- 2
dist/workflowengine-workflowengine.js
File diff suppressed because it is too large
View File


+ 1
- 1
dist/workflowengine-workflowengine.js.map
File diff suppressed because it is too large
View File


+ 17
- 16
package-lock.json View File

@@ -19,7 +19,7 @@
"@nextcloud/capabilities": "^1.0.4",
"@nextcloud/dialogs": "^5.0.0-beta.4",
"@nextcloud/event-bus": "^3.1.0",
"@nextcloud/files": "^3.0.0-beta.22",
"@nextcloud/files": "^3.0.0-beta.25",
"@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^2.1.0",
"@nextcloud/logger": "^2.5.0",
@@ -3396,15 +3396,15 @@
"integrity": "sha512-rxzuSL2RSt/pWWnFnUFQi5GJArm2tHMhx20Gee3Ydn+xT2bqbR4syfgdPrq2b+j+n5LjC7C8Fb1QDM6LKeF0cA=="
},
"node_modules/@nextcloud/auth": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.1.0.tgz",
"integrity": "sha512-wf5xQrWQu6fkl3MGegVdyR5mh/EdSQKJByH3m2Url2K2xbML9Y4Y7LAff9jjJAcMt2MkzzJEM463ZBbgTqs0lg==",
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.2.1.tgz",
"integrity": "sha512-zYtgrg9NMZfN8kmL5JPCsh5jDhpTCEslhnZWMvbhTiQ7hrOnji/67ok6VMK0CTJ1a92Vr67Ow72lW7YRX69zEA==",
"dependencies": {
"@nextcloud/event-bus": "^3.1.0"
},
"engines": {
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
"node": "^20.0.0",
"npm": "^9.0.0"
}
},
"node_modules/@nextcloud/axios": {
@@ -3662,13 +3662,14 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/@nextcloud/files": {
"version": "3.0.0-beta.22",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.22.tgz",
"integrity": "sha512-Y/F3d3sigGJf/2HOTy8PLMgyQnVtMsQVUM+ul7GXgfdMPEVOpQViU9t6K37UjDAVu5v4CvKA++BVKt09KSGxwA==",
"version": "3.0.0-beta.25",
"resolved": "https://registry.npmjs.org/@nextcloud/files/-/files-3.0.0-beta.25.tgz",
"integrity": "sha512-Bw0PRxb3P4wAEybhubFWmlnVihDi2CTc/tQXayWvAz3cAUh8zBK2drnhsF7UQgJGJTZ4l2sdBhgXONUwab75kw==",
"dependencies": {
"@nextcloud/auth": "^2.1.0",
"@nextcloud/auth": "^2.2.1",
"@nextcloud/l10n": "^2.2.0",
"@nextcloud/logger": "^2.5.0",
"@nextcloud/logger": "^2.7.0",
"@nextcloud/paths": "^2.1.0",
"@nextcloud/router": "^2.1.2",
"is-svg": "^5.0.0",
"webdav": "^5.3.0"
@@ -3704,16 +3705,16 @@
}
},
"node_modules/@nextcloud/logger": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.5.0.tgz",
"integrity": "sha512-vJx5YxPyS9/tg3YoqA8CBN7YTZFHfuhMKJIIWFV28phxXqKhGwKVKh+/Ir8ZIPweIM5n8VNT6JOJq1JjGiMg2w==",
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/@nextcloud/logger/-/logger-2.7.0.tgz",
"integrity": "sha512-DSJg9H1jT2zfr7uoP4tL5hKncyY+LOuxJzLauj0M/f6gnpoXU5WG1Zw8EFPOrRWjkC0ZE+NCqrMnITgdRRpXJQ==",
"dependencies": {
"@nextcloud/auth": "^2.0.0",
"core-js": "^3.6.4"
},
"engines": {
"node": "^16.0.0",
"npm": "^7.0.0 || ^8.0.0"
"node": "^20.0.0",
"npm": "^9.0.0"
}
},
"node_modules/@nextcloud/moment": {

+ 1
- 1
package.json View File

@@ -46,7 +46,7 @@
"@nextcloud/capabilities": "^1.0.4",
"@nextcloud/dialogs": "^5.0.0-beta.4",
"@nextcloud/event-bus": "^3.1.0",
"@nextcloud/files": "^3.0.0-beta.22",
"@nextcloud/files": "^3.0.0-beta.25",
"@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^2.1.0",
"@nextcloud/logger": "^2.5.0",

Loading…
Cancel
Save