diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 2275c04bc7a..daf04d01d18 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -451,8 +451,16 @@ Cypress.Commands.add('showHiddenFiles', (value = true) => { }) Cypress.Commands.add('createDescription', (folder) => { - cy.uploadFile('empty.md', 'text/markdown', `${folder}/Readme.md`) + const url = '**/remote.php/dav/files/**' + cy.intercept({ method: 'PUT', url }) + .as('addDescription') + cy.visit(`apps/files?dir=/${encodeURIComponent(folder)}`) + cy.get('[data-cy-files-list] tr[data-cy-files-list-row-name="Readme.md"]').should('not.exist') + cy.get('[data-cy-upload-picker] button.action-item__menutoggle').click() + cy.get('li.upload-picker__menu-entry button').contains('Add description').click() + + cy.wait('@addDescription') }) Cypress.on( diff --git a/src/components/Menu/ToolBarLogic.js b/src/components/Menu/ToolBarLogic.js index f88fc38f12c..6219149efbe 100644 --- a/src/components/Menu/ToolBarLogic.js +++ b/src/components/Menu/ToolBarLogic.js @@ -16,7 +16,7 @@ export default defineComponent({ watch: { visibleEntries() { this.$nextTick(() => { - if (this.activeMenuEntry > this.visibleEntries.length || this.visibleEntries[this.activeMenuEntry].disabled) { + if (this.activeMenuEntry > this.visibleEntries.length || this.visibleEntries[this.activeMenuEntry]?.disabled) { this.setNextMenuEntry() } }) diff --git a/src/helpers/files.js b/src/helpers/files.js index 37c83888dc3..d444faf5398 100644 --- a/src/helpers/files.js +++ b/src/helpers/files.js @@ -147,7 +147,7 @@ const registerFileActionFallback = () => { } -const addMenuRichWorkspace = () => { +export const addMenuRichWorkspace = () => { const descriptionFile = t('text', 'Readme') + '.' + loadState('text', 'default_file_extension') addNewFileMenuEntry({ id: 'rich-workspace-init', @@ -177,7 +177,7 @@ const addMenuRichWorkspace = () => { }) const fileid = parseInt(response.headers['oc-fileid']) const file = new File({ - source, + source: context.source + '/' + encodeURIComponent(descriptionFile), id: fileid, mtime: new Date(), mime: 'text/markdown', @@ -185,11 +185,13 @@ const addMenuRichWorkspace = () => { permissions: Permission.ALL, root: context?.root || '/files/' + getCurrentUser()?.uid, }) - context._children.push(file.fileid) showSuccess(t('text', 'Created "{name}"', { name: descriptionFile })) + emit('files:node:created', file) - emit('Text::showRichWorkspace', { autofocus: true }) + setTimeout(() => { + emit('Text::showRichWorkspace', { autofocus: true }) + }, 200) }, }) } @@ -205,7 +207,6 @@ export const FilesWorkspaceHeader = new Header({ }, render(el, folder, view) { - addMenuRichWorkspace() const hasRichWorkspace = !!folder.attributes['rich-workspace-file'] import('vue').then((module) => { diff --git a/src/init.js b/src/init.js index 32d6fa78470..e39e8aadde9 100644 --- a/src/init.js +++ b/src/init.js @@ -1,6 +1,6 @@ import { registerFileListHeaders, registerDavProperty } from '@nextcloud/files' import { loadState } from '@nextcloud/initial-state' -import { FilesWorkspaceHeader } from './helpers/files.js' +import { addMenuRichWorkspace, FilesWorkspaceHeader } from './helpers/files.js' import { linkTo } from '@nextcloud/router' __webpack_nonce__ = window.btoa(OC.requestToken) // eslint-disable-line @@ -12,5 +12,6 @@ registerDavProperty('nc:rich-workspace', { nc: 'http://nextcloud.org/ns' }) registerDavProperty('nc:rich-workspace-file', { nc: 'http://nextcloud.org/ns' }) if (workspaceAvailable) { + addMenuRichWorkspace() registerFileListHeaders(FilesWorkspaceHeader) } diff --git a/src/views/RichWorkspace.vue b/src/views/RichWorkspace.vue index 6fee98ff201..879d064340f 100644 --- a/src/views/RichWorkspace.vue +++ b/src/views/RichWorkspace.vue @@ -22,7 +22,6 @@