Skip to content

Commit

Permalink
fix(files): properly show file not found error
Browse files Browse the repository at this point in the history
Signed-off-by: skjnldsv <[email protected]>
  • Loading branch information
skjnldsv committed Feb 19, 2025
1 parent 2bf47d1 commit 0adfdd5
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 4 deletions.
16 changes: 13 additions & 3 deletions apps/files/src/views/FilesList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -493,14 +493,24 @@ export default defineComponent({
},
},

mounted() {
this.fetchContent()

async mounted() {
subscribe('files:node:deleted', this.onNodeDeleted)
subscribe('files:node:updated', this.onUpdatedNode)

// reload on settings change
subscribe('files:config:updated', this.fetchContent)

// Finally, fetch the current directory contents
await this.fetchContent()
if (this.fileId) {
// If we have a fileId, let's check if the file exists
const node = this.dirContents.find(node => node.fileid.toString() === this.fileId.toString())
// If the file isn't in the current directory nor if
// the current directory is the file, we show an error
if (!node && this.currentFolder.fileid.toString() !== this.fileId.toString()) {
showError(t('files', 'The file could not be found'))
}
}
},

unmounted() {
Expand Down
43 changes: 42 additions & 1 deletion cypress/e2e/files/files.cy.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,57 @@
import type { User } from "@nextcloud/cypress"

/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
describe('Files', { testIsolation: true }, () => {
let currentUser: User

beforeEach(() => {
cy.createRandomUser().then((user) => {
cy.login(user)
currentUser = user
})
})

it('Login with a user and open the files app', () => {
cy.login(currentUser)
cy.visit('/apps/files')
cy.get('[data-cy-files-list] [data-cy-files-list-row-name="welcome.txt"]').should('be.visible')
})

it('Opens a valid file shows it as active', () => {
cy.uploadContent(currentUser, new Blob(), 'text/plain', '/original.txt').then((response) => {
const fileId = Number.parseInt(response.headers['oc-fileid'] ?? '0')

cy.login(currentUser)
cy.visit('/apps/files/files/' + fileId)

cy.get(`[data-cy-files-list-row-fileid=${fileId}]`)
.should('be.visible')
cy.get(`[data-cy-files-list-row-fileid=${fileId}]`)
.invoke('attr', 'data-cy-files-list-row-name').should('eq', 'original.txt')
cy.get(`[data-cy-files-list-row-fileid=${fileId}]`)
.invoke('attr', 'class').should('contain', 'active')
cy.contains('The file could not be found').should('not.exist')
})
})

it('Opens a valid folder shows its content', () => {
cy.mkdir(currentUser, '/folder').then(() => {
cy.login(currentUser)
cy.visit('/apps/files/files?dir=/folder')

cy.get('[data-cy-files-content-breadcrumbs]').contains('folder').should('be.visible')
cy.contains('The file could not be found').should('not.exist')
})
})

it('Opens an unknown file show an error', () => {
cy.intercept('PROPFIND', /\/remote.php\/dav\//).as('propfind')
cy.login(currentUser)
cy.visit('/apps/files/files/123456')

cy.wait('@propfind')
cy.contains('The file could not be found').should('be.visible')
})
})

0 comments on commit 0adfdd5

Please sign in to comment.