Skip to content

Commit 3cc0d2e

Browse files
committed
fix(viewerAction): replace the history entry when closing the viewer
Opening a file replaces the folder's history entry with one that carries `openfile`. Closing pushed a new entry on top of it instead of replacing it, so the entry carrying `openfile` was left behind: going back after closing reopened the file that had just been closed instead of leaving the folder, and further back navigation bounced between the leftover entries. Closing now replaces the current entry, mirroring what opening does. Signed-off-by: ELHart05 <o.allaoua@esi-sba.dz>
1 parent 33dc36b commit 3cc0d2e

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

playwright/e2e/navigation.spec.ts

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
55

6-
import { expect, setupFilesPage, test } from '../support/fixtures.ts'
7-
import { getRowForFile, openFile } from '../support/filesUtils.ts'
8-
import { getViewer } from '../support/viewerUtils.ts'
6+
import { createRandomUser, expect, loginUser, setupFilesPage, test } from '../support/fixtures.ts'
7+
import { getRowForFile, navigateToFolder, openFile } from '../support/filesUtils.ts'
8+
import { getCloseButton, getViewer } from '../support/viewerUtils.ts'
9+
import { createFolder, uploadFile } from '../support/webdav.ts'
910

1011
test.describe('Browser navigation', () => {
1112
test('Navigating back to the files overview', async ({ browser }) => {
@@ -22,4 +23,28 @@ test.describe('Browser navigation', () => {
2223

2324
await page.close()
2425
})
26+
27+
test('Navigating back after closing leaves the folder the file was opened from', async ({ browser }) => {
28+
const page = await browser.newPage()
29+
const user = await createRandomUser()
30+
await createFolder(user, '/Photos')
31+
await uploadFile(user, 'image.png', 'image/png', '/Photos/image1.png')
32+
await loginUser(page, user)
33+
await page.goto('apps/files')
34+
35+
await navigateToFolder(page, 'Photos')
36+
await openFile(page, 'image1.png')
37+
await expect(getViewer(page)).toBeVisible()
38+
39+
await getCloseButton(page).click()
40+
await expect(getViewer(page)).toHaveCount(0)
41+
42+
// Closing must not stack an extra entry on top of the folder: one step back
43+
// leaves the folder instead of reopening the file that was just closed.
44+
await page.goBack()
45+
await expect(getViewer(page)).toHaveCount(0)
46+
await expect(getRowForFile(page, 'Photos')).toBeVisible()
47+
48+
await page.close()
49+
})
2550
})

src/files_actions/viewerAction.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,11 @@ async function execAction({ nodes, view, folder }): Promise<boolean|null> {
6969
const newQuery = { ...window.OCP?.Files?.Router?.query }
7070
delete newQuery.openfile
7171
delete newQuery.editing
72-
window.OCP?.Files?.Router?.goToRoute(null, window.OCP?.Files?.Router?.params, newQuery)
72+
// Replace rather than push: opening the file already replaced the folder's
73+
// history entry, so closing has to give it back. Pushing leaves the entry
74+
// carrying `openfile` behind, and going back then reopens the file that was
75+
// just closed instead of leaving the folder.
76+
window.OCP?.Files?.Router?.goToRoute(null, window.OCP?.Files?.Router?.params, newQuery, true)
7377
}
7478

7579
if (window.OCP?.Files?.Router) {

0 commit comments

Comments
 (0)