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 18, 2025
1 parent 7841905 commit e0e031e
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 5 deletions.
18 changes: 14 additions & 4 deletions apps/files/src/views/FilesList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -486,16 +486,26 @@ export default defineComponent({
},
},

mounted() {
this.fetchContent()

async mounted() {
subscribe('files:node:deleted', this.onNodeDeleted)
subscribe('files:node:updated', this.onUpdatedNode)
subscribe('nextcloud:unified-search.search', this.onSearch)
subscribe('nextcloud:unified-search.reset', this.resetSearch)

// reload on settings change
// Reload on settings change
this.unsubscribeStoreCallback = this.userConfigStore.$subscribe(() => this.fetchContent(), { deep: true })

// 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,3 +1,5 @@
import type { User } from "@nextcloud/cypress"

/**
* @copyright Copyright (c) 2022 John Molakvoæ <[email protected]>
*
Expand All @@ -20,14 +22,53 @@
*
*/
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 e0e031e

Please sign in to comment.