Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/files_sharing/src/actions/openInFilesAction.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,6 @@ describe('Open in files action execute tests', () => {
// Silent action
expect(exec).toBe(null)
expect(goToRouteMock).toBeCalledTimes(1)
expect(goToRouteMock).toBeCalledWith(null, { fileid: 1, view: 'files' }, { dir: '/Foo', openfile: 'true' })
expect(goToRouteMock).toBeCalledWith(null, { fileid: '1', view: 'files' }, { dir: '/Foo', openfile: 'true' })
})
})
16 changes: 13 additions & 3 deletions apps/files_sharing/src/actions/openInFilesAction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
*/
import type { Node } from '@nextcloud/files'

import { registerFileAction, FileAction, DefaultType } from '@nextcloud/files'
import { registerFileAction, FileAction, DefaultType, FileType } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'

import { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares'
Expand All @@ -41,10 +41,20 @@ export const action = new FileAction({
].includes(view.id),

async exec(node: Node) {
const isFolder = node.type === FileType.Folder

window.OCP.Files.Router.goToRoute(
null, // use default route
{ view: 'files', fileid: node.fileid },
{ dir: node.dirname, openfile: 'true' },
{
view: 'files',
fileid: String(node.fileid),
},
{
// If this node is a folder open the folder in files
dir: isFolder ? node.path : node.dirname,
// otherwise if this is a file, we should open it
openfile: isFolder ? undefined : 'true',
},
)
return null
},
Expand Down
59 changes: 59 additions & 0 deletions cypress/e2e/files_sharing/files-shares-view.cy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { User } from '@nextcloud/cypress'
import { createShare } from './filesSharingUtils.ts'
import { getRowForFile } from '../files/FilesUtils.ts'

describe('files_sharing: Files view', { testIsolation: true }, () => {
let user: User
let sharee: User

beforeEach(() => {
cy.createRandomUser().then(($user) => {
user = $user
})
cy.createRandomUser().then(($user) => {
sharee = $user
})
})

/**
* Regression test of https://github.com/nextcloud/server/issues/46108
*/
it('opens a shared folder when clicking on it', () => {
cy.mkdir(user, '/folder')
cy.uploadContent(user, new Blob([]), 'text/plain', '/folder/file')
cy.login(user)
cy.visit('/apps/files')

// share the folder
createShare('folder', sharee.userId, { read: true, download: true })
// visit the own shares
cy.visit('/apps/files/sharingout')
// see the shared folder
getRowForFile('folder').should('be.visible')
// click on the folder should open it in files
getRowForFile('folder').findByRole('button', { name: 'folder' }).click()
// See the URL has changed
cy.url().should('match', /apps\/files\/files\/.+dir=\/folder/)
// Content of the shared folder
getRowForFile('file').should('be.visible')

cy.logout()
// Now for the sharee
cy.login(sharee)

// visit shared files view
cy.visit('/apps/files/sharingin')
// see the shared folder
getRowForFile('folder').should('be.visible')
// click on the folder should open it in files
getRowForFile('folder').findByRole('button', { name: 'folder' }).click()
// See the URL has changed
cy.url().should('match', /apps\/files\/files\/.+dir=\/folder/)
// Content of the shared folder
getRowForFile('file').should('be.visible')
})
})
Loading