From 7029ba1ce0af1d6e3a85379c1f3c9cd4090764f4 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Tue, 22 Aug 2023 13:19:36 +0530 Subject: [PATCH 1/4] delete popup added for entity delete action Signed-off-by: AmbrishRamachandiran --- .changeset/gorgeous-coins-attack.md | 5 +++++ .../UnregisterEntityDialog.tsx | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .changeset/gorgeous-coins-attack.md diff --git a/.changeset/gorgeous-coins-attack.md b/.changeset/gorgeous-coins-attack.md new file mode 100644 index 0000000000..d500459225 --- /dev/null +++ b/.changeset/gorgeous-coins-attack.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Added delete alert popup when user delete the entity diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 6c4984129e..7ffc5200af 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -85,7 +85,21 @@ const Contents = ({ setBusy(true); try { await state.deleteEntity(); + const entityArray = [entity].flat(); + const entityNames = entityArray.map( + item => item.metadata.title ?? item.metadata.name, + ); onConfirm(); + const message = + entityNames.length === 1 + ? `Removed entity '${entityNames[0]}'` + : `Removed entities: '${entityNames.join("', '")}'`; + + alertApi.post({ + message, + severity: 'success', + display: 'transient', + }); } catch (err) { assertError(err); alertApi.post({ message: err.message }); @@ -94,7 +108,7 @@ const Contents = ({ } } }, - [alertApi, onConfirm, state], + [alertApi, onConfirm, state, entity], ); const DialogActionsPanel = () => ( From 6f691871c5e689c7a5049e083605d342e2f8cb84 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Tue, 22 Aug 2023 16:19:03 +0530 Subject: [PATCH 2/4] delete popup added for entity delete action Signed-off-by: AmbrishRamachandiran --- .../UnregisterEntityDialog/UnregisterEntityDialog.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 7ffc5200af..97581643ce 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -85,15 +85,14 @@ const Contents = ({ setBusy(true); try { await state.deleteEntity(); - const entityArray = [entity].flat(); - const entityNames = entityArray.map( - item => item.metadata.title ?? item.metadata.name, - ); + const entityNames = [entity] + .flat() + .map(item => item.metadata.title ?? item.metadata.name); onConfirm(); const message = entityNames.length === 1 - ? `Removed entity '${entityNames[0]}'` - : `Removed entities: '${entityNames.join("', '")}'`; + ? `Removed entity ${entityNames[0]}` + : `Removed entities: ${entityNames.join("', '")}`; alertApi.post({ message, From 2a27eebdaa4fd35433f166db487ef9870ee864e1 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Fri, 25 Aug 2023 14:35:39 +0530 Subject: [PATCH 3/4] review comments addresed Signed-off-by: AmbrishRamachandiran --- .../UnregisterEntityDialog/UnregisterEntityDialog.tsx | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx index 97581643ce..56689c71ce 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.tsx @@ -85,17 +85,10 @@ const Contents = ({ setBusy(true); try { await state.deleteEntity(); - const entityNames = [entity] - .flat() - .map(item => item.metadata.title ?? item.metadata.name); + const entityName = entity.metadata.title ?? entity.metadata.name; onConfirm(); - const message = - entityNames.length === 1 - ? `Removed entity ${entityNames[0]}` - : `Removed entities: ${entityNames.join("', '")}`; - alertApi.post({ - message, + message: `Removed entity ${entityName}`, severity: 'success', display: 'transient', }); From cdd81a01b6e1770714abe43eed6f3c31ca09c334 Mon Sep 17 00:00:00 2001 From: AmbrishRamachandiran Date: Fri, 25 Aug 2023 15:26:15 +0530 Subject: [PATCH 4/4] review comments addresed Signed-off-by: AmbrishRamachandiran --- .../UnregisterEntityDialog.test.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx index baa4b3732c..7f139854f6 100644 --- a/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx +++ b/plugins/catalog-react/src/components/UnregisterEntityDialog/UnregisterEntityDialog.test.tsx @@ -48,6 +48,10 @@ describe('UnregisterEntityDialog', () => { }, }; + beforeEach(() => { + jest.spyOn(alertApi, 'post').mockImplementation(() => {}); + }); + const entity = { apiVersion: 'backstage.io/v1alpha1', kind: 'Component', @@ -346,6 +350,11 @@ describe('UnregisterEntityDialog', () => { await waitFor(() => { expect(deleteEntity).toHaveBeenCalled(); expect(onConfirm).toHaveBeenCalled(); + expect(alertApi.post).toHaveBeenCalledWith({ + message: 'Removed entity n', + severity: 'success', + display: 'transient', + }); }); }); });