-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
feat(sharing): Allow to set default view mode for public shares #50739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| /** | ||
| * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors | ||
| * SPDX-License-Identifier: AGPL-3.0-or-later | ||
| */ | ||
| import type { Folder, Node } from '@nextcloud/files' | ||
|
|
||
| declare module '@nextcloud/event-bus' { | ||
| export interface NextcloudEvents { | ||
| // mapping of 'event name' => 'event type' | ||
| 'files:list:updated': { folder: Folder, contents: Node[] } | ||
| 'files:config:updated': { key: string, value: boolean } | ||
| } | ||
| } | ||
|
|
||
| export {} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| /*! | ||
| * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors | ||
| * SPDX-License-Identifier: AGPL-3.0-or-later | ||
| */ | ||
| import type { User } from '@nextcloud/cypress' | ||
| import { getRowForFile } from '../../files/FilesUtils.ts' | ||
| import { createShare, setupData } from './setup-public-share.ts' | ||
|
|
||
| describe('files_sharing: Public share - setting the default view mode', () => { | ||
|
|
||
| let user: User | ||
|
|
||
| beforeEach(() => { | ||
| cy.createRandomUser() | ||
| .then(($user) => (user = $user)) | ||
| .then(() => setupData(user, 'shared')) | ||
| }) | ||
|
|
||
| it('is by default in list view', () => { | ||
| const context = { user } | ||
| createShare(context, 'shared') | ||
| .then((url) => { | ||
| cy.logout() | ||
| cy.visit(url!) | ||
|
|
||
| // See file is visible | ||
| getRowForFile('foo.txt').should('be.visible') | ||
| // See we are in list view | ||
| cy.findByRole('button', { name: 'Switch to grid view' }) | ||
| .should('be.visible') | ||
| .and('not.be.disabled') | ||
| }) | ||
| }) | ||
|
|
||
| it('can be toggled by user', () => { | ||
| const context = { user } | ||
| createShare(context, 'shared') | ||
| .then((url) => { | ||
| cy.logout() | ||
| cy.visit(url!) | ||
|
|
||
| // See file is visible | ||
| getRowForFile('foo.txt') | ||
| .should('be.visible') | ||
| // See we are in list view | ||
| .find('.files-list__row-icon') | ||
| .should(($el) => expect($el.outerWidth()).to.be.lessThan(99)) | ||
|
|
||
| // See the grid view toggle | ||
| cy.findByRole('button', { name: 'Switch to grid view' }) | ||
| .should('be.visible') | ||
| .and('not.be.disabled') | ||
| // And can change to grid view | ||
| .click() | ||
|
|
||
| // See we are in grid view | ||
| getRowForFile('foo.txt') | ||
| .find('.files-list__row-icon') | ||
| .should(($el) => expect($el.outerWidth()).to.be.greaterThan(99)) | ||
|
|
||
| // See the grid view toggle is now the list view toggle | ||
| cy.findByRole('button', { name: 'Switch to list view' }) | ||
| .should('be.visible') | ||
| .and('not.be.disabled') | ||
| }) | ||
| }) | ||
|
|
||
| it('can be changed to default grid view', () => { | ||
| const context = { user } | ||
| createShare(context, 'shared') | ||
| .then((url) => { | ||
| // Can set the "grid" view checkbox | ||
| cy.findByRole('list', { name: 'Link shares' }) | ||
| .findAllByRole('listitem') | ||
| .first() | ||
| .findByRole('button', { name: /Actions/i }) | ||
| .click() | ||
| cy.findByRole('menuitem', { name: /Customize link/i }).click() | ||
| cy.findByRole('checkbox', { name: /Show files in grid view/i }) | ||
| .scrollIntoView() | ||
| cy.findByRole('checkbox', { name: /Show files in grid view/i }) | ||
| .should('not.be.checked') | ||
| .check({ force: true }) | ||
|
|
||
| // Wait for the share update | ||
| cy.intercept('PUT', '**/ocs/v2.php/apps/files_sharing/api/v1/shares/*').as('updateShare') | ||
| cy.findByRole('button', { name: 'Update share' }).click() | ||
| cy.wait('@updateShare').its('response.statusCode').should('eq', 200) | ||
|
|
||
| // Logout and visit the share | ||
| cy.logout() | ||
| cy.visit(url!) | ||
|
|
||
| // See file is visible | ||
| getRowForFile('foo.txt').should('be.visible') | ||
| // See we are in list view | ||
| cy.findByRole('button', { name: 'Switch to list view' }) | ||
| .should('be.visible') | ||
| .and('not.be.disabled') | ||
| }) | ||
| }) | ||
| }) |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 1031-1031.js.license |
This file was deleted.
This file was deleted.
This file was deleted.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Uh oh!
There was an error while loading. Please reload this page.