From f52224cac933ca1eb659876270b6cd8a1d25c93c Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Fri, 18 Sep 2026 14:47:28 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(frontend)=20fix=20redirect=20after?= =?UTF-8?q?=20deleting=20a=20document?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We fixed the redirect behavior after deleting a document to ensure the user stays on the correct page after deleting a document. We added a test to avoid regression in the redirect behavior. --- CHANGELOG.md | 1 + .../e2e/__tests__/app-impress/doc-trashbin.spec.ts | 9 ++++++++- .../docs/doc-management/components/DocToolBox.tsx | 2 +- .../doc-management/components/ModalRemoveDoc.tsx | 12 ++++-------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba5323559..4195356b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to ### Fixed - 🐛(export) keep image aspect ratio in PDF columns #2670 +- 🐛(frontend) fix redirect after deleting a document #2706 ## [v5.7.0] - 2026-09-15 diff --git a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts index 8423551bb..b5397a208 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/doc-trashbin.spec.ts @@ -25,7 +25,7 @@ test.describe('Doc Trashbin', () => { }) => { const [title1] = await createDoc(page, 'my-trash-doc-1', browserName, 1); const [title2] = await createDoc(page, 'my-trash-doc-2', browserName, 1); - await verifyDocName(page, title2); + await page.getByRole('button', { name: 'Share' }).click(); await addNewMember(page, 0, 'Editor'); await page.getByRole('button', { name: 'close' }).click(); @@ -33,10 +33,17 @@ test.describe('Doc Trashbin', () => { await page.getByRole('button', { name: 'Back to homepage' }).click(); // Delete the first document - Is not displayed + await page.getByRole('link', { name: 'My docs' }).click(); const row1 = await getGridRow(page, title1); await clickInDocOptionMenu(page, row1, 'Delete'); await page.getByRole('button', { name: 'Delete document' }).click(); await expect(row1.getByText(title1)).toBeHidden(); + await expect( + page.getByRole('heading', { + name: 'My docs', + level: 2, + }), + ).toBeVisible(); // Star the second document - Is displayed in the starred list const row2 = await getGridRow(page, title2); diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/DocToolBox.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/DocToolBox.tsx index 45e10c880..2db55df05 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/components/DocToolBox.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/DocToolBox.tsx @@ -386,7 +386,7 @@ const DocToolBoxComponent = ({ treeContext?.treeData.getParentId(doc.id) || treeContext?.root?.id; - if (isTopParent) { + if (isTopParent && isCurrentDoc) { void router.push(`/`); } else if (parentId) { void router.push(`/docs/${parentId}`).then(() => { diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx index 3a7c61c7e..b3dc76452 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx @@ -74,15 +74,11 @@ export const ModalRemoveDoc = ({ const keyboardAction = useKeyboardAction(); - const handleClose = () => { - onClose(); - }; - const handleDelete = () => { removeDoc({ docId: doc.id }); }; - const handleCloseKeyDown = keyboardAction(handleClose); + const handleCloseKeyDown = keyboardAction(onClose); const handleDeleteKeyDown = keyboardAction(handleDelete); return ( @@ -90,7 +86,7 @@ export const ModalRemoveDoc = ({ isOpen closeOnClickOutside hideCloseButton - onClose={handleClose} + onClose={onClose} aria-label={t('Delete a doc')} rightActions={ <> @@ -100,7 +96,7 @@ export const ModalRemoveDoc = ({ variant="secondary" fullWidth autoFocus - onClick={handleClose} + onClick={onClose} onKeyDown={handleCloseKeyDown} > {t('Cancel')} @@ -131,7 +127,7 @@ export const ModalRemoveDoc = ({