Skip to content

Conversation

@ankita-akamai
Copy link
Contributor

@ankita-akamai ankita-akamai commented Jan 8, 2026

Description 📝

Add delete action for user alert channels.

Changes 🔄

  • Add delete action to the notification channel action menu for user channels
  • Implement delete confirmation dialog using TypeToConfirmDialog component
  • Add delete mutation hook (useDeleteNotificationChannel) with optimistic cache updates
  • Disable delete action when a channel has associated alerts, with a tooltip explaining why
  • Add success and error snackbar notifications for delete operations
  • Add unit tests and mocks.

Scope 🚢

Upon production release, changes in this PR will be visible to:

  • All customers
  • Some customers (e.g. in Beta or Limited Availability)
  • No customers / Not applicable

Target release date 🗓️

28 Jan 2026

Preview 📷

image image image image

How to test 🧪

Verification steps

https://www.figma.com/design/26kXnWVNU5tK2xQdDdISuC/Custom-Alerts?node-id=7418-38705&t=YhSM9MnUVbY3hAMv-1

  • Navigate to Monitor > Alerts > Notification Channels
  • Open the action menu (three dots) for a user-created notification channel
  • Verify "Delete" action is visible in the menu
  • Click "Delete" and verify the confirmation dialog appears
  • Type the channel label to confirm deletion
  • Verify success snackbar appears after successful deletion
  • Test with a channel that has associated alerts - verify delete is disabled with tooltip
  • Test with a system channel - verify delete action is not shown
  • Test error handling by simulating a failed delete request
Author Checklists

As an Author, to speed up the review process, I considered 🤔

👀 Doing a self review
❔ Our contribution guidelines
🤏 Splitting feature into small PRs
➕ Adding a changeset
🧪 Providing/improving test coverage
🔐 Removing all sensitive information from the code and PR description
🚩 Using a feature flag to protect the release
👣 Providing comprehensive reproduction steps
📑 Providing or updating our documentation
🕛 Scheduling a pair reviewing session
📱 Providing mobile support
♿ Providing accessibility support


  • I have read and considered all applicable items listed above.

As an Author, before moving this PR from Draft to Open, I confirmed ✅

  • All tests and CI checks are passing
  • TypeScript compilation succeeded without errors
  • Code passes all linting rules

@ankita-akamai ankita-akamai self-assigned this Jan 8, 2026
@ankita-akamai ankita-akamai marked this pull request as ready for review January 8, 2026 08:01
@ankita-akamai ankita-akamai requested a review from a team as a code owner January 8, 2026 08:01
data-qa-notification-channel-action-cell={`notification-channel-${id}`}
>
<NotificationChannelActionMenu
alertsCount={alerts.length}
Copy link
Contributor

@santoshp210-akamai santoshp210-akamai Jan 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a dependency on this line. Yesterday I merged a PR to the release branch directly. #13254. It contains the changes regarding the latest API specification changes for Notification Channels. So this will break when the API changes.

So will hold off on merging this PR until the release is back-merged .

React.useState<NotificationChannel | null>(null);
const [deleteState, setDeleteState] = React.useState({
isDialogOpen: false,
isDeleting: false,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Managing isDeleting in state is okay but may be unnecessary. The useDeleteNotificationChannel mutation hook will return an isPending value that could be used instead to track the loading state.

@github-project-automation github-project-automation bot moved this from Review to Approved in Cloud Manager Jan 13, 2026
@linode-gh-bot
Copy link
Collaborator

Cloud Manager UI test results

🔺 2 failing tests on test run #7 ↗︎

❌ Failing✅ Passing↪️ Skipped🕐 Duration
2 Failing853 Passing11 Skipped46m 10s

Details

Failing Tests
SpecTest
advanced-configuration.spec.tsCloud Manager Cypress Tests→Update database clusters→Advanced configurations for a g7-premium-2 MySQL v8.x 2-node cluster » Initial advanced configurations state of an active database clusters
clone-linode.spec.tsCloud Manager Cypress Tests→clone linode » can clone a Linode from Linode details page

Troubleshooting

Use this command to re-run the failing tests:

pnpm cy:run -s "cypress/e2e/core/databases/advanced-configuration.spec.ts,cypress/e2e/core/linodes/clone-linode.spec.ts"

@ankita-akamai ankita-akamai merged commit d549891 into linode:develop Jan 14, 2026
34 of 35 checks passed
@github-project-automation github-project-automation bot moved this from Approved to Merged in Cloud Manager Jan 14, 2026
abailly-akamai added a commit that referenced this pull request Jan 27, 2026
* upcoming: [DI-29113] - Support for User Channel Details in Alert flows (#13246)

* upcoming: [DI-29113] - Support for User Channel Details in Alert flows

* add changeset

* add support for new alerts object in Notification Channel

* changesets

---------

Co-authored-by: Ankita <ankitaan@akamai.com>

* Revert "upcoming: [DI-29113] - Support for User Channel Details in Alert flow…" (#13252)

This reverts commit e77c677.

* change: [UIE-9919] - Address post-demo feedback for Network Load Balancers (#13250)

* change: [UIE-9919] - Address post-demo feedback(points 1-3)

* Added changeset: NLB post-demo feedback-fix empty state title casing,rename LKE-E to Cluster and adjust column visibility for smaller screens to prioritize IPv6

* change: [UIE-9919] - Address post-demo feedback(points 4,5) (#13251)

* change: [UIE-9919] - Address post-demo feedback(points 4,5)

* Added changeset: NLB post-demo feedback-Resolve special character filtering issue in Nodes table IPv6 column and add NLB to GoTo quick navigation

* chore: [UIE-9913] - IAM: Cleanup `iamRbacPrimaryNavChanges` feature flag (#13232)

* Save progress

* wrap up initial cleanup

* fix tests

* fix tests

* Added changeset: IAM: Cleanup `iamRbacPrimaryNavChanges` feature flag

* feedback @bnussman-akamai

* small work break fix

* fix: [UIE-9841] - Hide dual stack option if no IPv6 prefixes available in create VPC flow (#13245)

* change: [UIE-9908] - Update Generational Plans default sort to show newest (G8) -> oldest (G6) (#13234)

* Update GP default sort to show newest (G8) -> oldest (G6)

* Minor comment updates

* Added changeset: Update Generational Plans default sort to show newest (G8) -> oldest (G6)

* Make generation plan ranking more scalable

* Update some e2e tests

* Update more e2e test cases

* Update e2e tests from stackscripts and marketplace

* change: [UIE-9890] - changes related to private IP field in create linode flow (#13253)

* change: [UIE-9919] - Address post-demo feedback(points 6,7) (#13258)

* change: [UIE-9919] - Address post-demo feedback(points 6,7)

* Added changeset: NLB post-demo feedback-Optimize table col widths and add back button

* Address review comments.

* Update packages/manager/.changeset/pr-13258-changed-1767876909544.md

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

---------

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

* change: [UIE-9920] - Billing: Disable "Make payment" button for Akamai users (#13243)

* disable make payment button for akamai users

* Added changeset: Billing: Disable 'Make payment'button for Akamai users

* remove dupe changeset

* upcoming: [M3-9225] - Add API queries for MarketplaceV2 (#13255)

* upcoming: [M3-9225] - Add API queries for MarketplaceV2

* Added changeset: Add API queries for MarketplaceV2

* PR feedback

* fixed api url and factories

* added queries for /marketplace/types

* PR feedback @pmakode-akamai

* fix: [UIE-9933], [UIE-9935] - IAM: UX copy updates, breadcrumbs fix (#13259)

* fix: [UIE-9933], [UIE-9935] - IAM: UX copy updates, breadcrumbs fix

* Added changeset: IAM Delegation: UX copy update, wrong breadcrumb fix

* change: [UIE-9860] - Change the default selection of network interface type to linode interface in Linode create flow (#13221)

* chore: [UIE-9926] - Bump `jspdf` to 4.0.0 (#13248)

* bump jspdf to 4.0.0

* types and test

* oops buffer

* Added changeset: Bump jspdf to 4.0.0

* try CI without global

* feat: [UIE-9931] - IAM: fix payload for updateChildAccountDelegates (#13260)

* feat: [UIE-9931] - IAM: fix payload for updateChildAccountDelegates

* update updateChildAccountDelegates

* changesets

* upcoming: [UIE-9817] - Add Breadcrumb to Marketplace Product Landing Page (#13257)

* Add breadcrumb

* Add beta chip to Partner Referral breadcrumb

* Added changeset: Add Breadcrumb to Marketplace product landing page

* Keep label plural

* upcoming: [UIE-9826] - Add reusable Product Selection Card component for Marketplace (#13247)

* Add Marketplace ProductCard component

* More changes

* Some clean up

* Add tests and some changes

* Added changeset: Add reusable Product Selection Card component for Marketplace

* Update Marketplace feature folder structure

* Add color tokens for badge as per ux mocks

* Clean up logo styles

* Remove usage of fontWeight

* Refactor: simplify component props

* Update description truncation from 268 to 200 characters

* Make some of the props required and update tests

* More refactoring and cleanup

* Add logo URL to tests base data

* fix: [UIE-9952] - IAM - Fix hydration error on User Detail pages (#13265)

* fix console error

* Added changeset: IAM hydration error on User Detail pages

* change: [UIE-9942] - IAM - Replace `view_account` with fine-grained permissions (#13262)

* save progress

* remaining instances

* cleanup and tests

* test: [UIE-9996] - Fix `chooseRegion` mock region test failures when passing override region (#13277)

* Fix issue when checking override region capabilities when test depends on mock regions

* Added changeset: Fix issue in 'chooseRegion' util when specifying an override region

* upcoming: [DI-29059] - Add delete action for user alert channels (#13256)

* upcoming: [DI-29059] - Add delete action, related handlers, tests

* upcoming: [DI-29059] - Fix tc

* upcoming: [DI-29059] - Update type

* upcoming: [DI-29059] - Update the statements according to latest figma

* upcoming: [DI-29059] - Add changesets

* upcoming: [DI-29059] - Address suggestions for delete state

* upcoming: [DI-29059] - Update as per dev

---------

Co-authored-by: santoshp210-akamai <159890961+santoshp210-akamai@users.noreply.github.com>

* change: [UIE-9861] - Handle Incompatibility of linode interfaces in create LKE flow (#13272)

* change: [UIE-9859] - Improvements in Add Network interface drawer (#13264)

* feat: [UIE-9934] - IAM: reset to prev page when removing last role (#13268)

* feat: [UIE-9934] - IAM: reset to prev page when removing last role

* Added changeset: IAM: removing entity/role can cause an empty page

* upcoming: [UIE-9327] - Add service URIs to Database summary tab (#13261)

## Description 📝
- Display general Service URI for all databases under Connection details in the summary tab
- If applicable, display PgBouncer connection details Service URI for postgres clusters with at least one connection pool

## How to test 🧪

### Prerequisites

(How to setup test environment)

- Ensure the Database PgBouncer feature flag is enabled and turn on the legacy MSW

### Verification steps

(How to verify changes)

- [ ] Go to a mysql Database cluster's summary page and confirm that a general mysql service URI displays under Connection Details. There should not be a PgBouncer section.
- [ ] Go to a postgres Database cluster's summary page and confirm that a general postgres service URI displays under Connection Details. There should be a PgBouncer section

* test: fix previous month calculation tests for year boundaries (#13240)

* test: fix previous month calculation tests for year boundaries

* Fix[DI-29231] failure specification

* Fix[DI-29231] failure specification

* Update packages/manager/.changeset/pr-13240-tests-1767941254923.md

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

* fix previous month calculation tests for year boundaries

* fix previous month calculation tests for year boundaries

* Merge branch 'develop' into time-range-spec-fix_linode_January_03

* Add back scrollbar logic after earlier removal

* Add back scrollbar logic after earlier removal

* add Cypress spec for custom date/time picker with range and timezone

* add Cypress spec for custom date/time picker with range and timezone

* add Cypress spec for custom date/time picker with range and timezone

* add Cypress spec for custom date/time picker with range and timezone

---------

Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>

* change: [UIE-9945] - Implement UX and user feedback for linode interfaces feature in Account settings page (#13280)

* fix: [UIE-9943], [UIE-9944], [UIE-9950], [UIE-9951], [UIE-9954] - IAM: UI fix for Parent/Child (#13275)

* fix: [UIE-9943], [UIE-9944], [UIE-9951], [UIE-9954] - Parent/Child UI fix

* fix: [UIE-9950] - Parent/Child dialog fix

* e2e fix

* changeset

* fix: [UIE-10011] - IAM Parent/Child selected roles drawer fix (#13282)

* fix: [UIE-10011] - Parent/Child selected roles drawer fix

* Added changeset: IAM Delegation: User selector not working in Assign Role/Roles drawer

* fix: [UIE-10017] - Account Delegations text fix

* chore: [UIE-9953] - IAM - Clean up beta flag + BETA/LA logic (#13266)

* clean up beta flag + beta/la logic

* more tests

* oops skip

* Added changeset: IAM - Clean up beta flag + BETA/LA logic

* fix: [UIE-9987] - IAM Parent/Child - Various fixes to Parent Account Flow (#13278)

* Enhanced SwitchAccount drawer

* tests

* e2e failur

* Added changeset: IAM Parent/Child - Various fixes to Parent Account Flow

* upcoming: [UIE-9814] - Implement the main product grid with category grouping and load more functionality (#13267)

* upcoming: [UIE-9814] - Implement the main product grid with category grouping and load more functionality

* loading skeleton + small fixes

* PR feedback

* Add card UI changes: background color, logo, grid sizing, and mock logo icon

* changed the fitler logic

* spacing changes..

* Add defensive check for type chip rendering

* styling fixes

* ....missed this

* Added changeset: Implement the main product grid with category grouping

* added unit tests

* fixed card height and boxshadow on hover

* ...missed fontsize fix for the card chip

* Clean up card styles and reduce duplication

* Some changes

* minor fix

Co-authored-by: Purvesh Makode <pmakode@akamai.com>

* breadcrumb fix

* add check for marketplaceV2

---------

Co-authored-by: pmakode-akamai <pmakode@akamai.com>

* fix: [UIE-10043] - Copy in Plans Panel generational plans tooltip (#13289)

* fix typo

* Added changeset: Copy in Plans Panel generational plans tooltip

* casing

* upcoming: [DI-29061] - Notification Channel Show Details - Overview, Settings (#13273)

* feat: [UIE-9988] - IAM Delegation: fix payload for changing role flow (#13279)

* feat: [UIE-9988] - IAM Delegation: fix payload for changing role flow

* Added changeset: IAM Delegation: fix payload for changing role flow

* chore: [UIE-9949] - Update to linode/design-language-system to v5.3.2 (#13293)

* chore: [UIE-9949] - Update to linode/design-language-system to v5.3.2

* Added changeset: Update design-language-system to v5.3.2

* feat [OCA-1602] - Add Mistral 7B Instruct with Open WebUI and Chroma Marketplace Apps (#13270)

* feat: add chromadb and mistral-7b instruct with open webui

* changelog

* add AI category

* mistral color correct

* Added changeset: Add Mistral 7B instruct and ChromaDB to the Marketplace

* fix: [DI-29314] - Wrong time range sent in metrics payload on preference reload in CloudPulse metrics (#13287)

* [DI-29167] - Time range preferences bug fix

* Update dependencies in GlobalFilters component

* fix: [DI-29314] - changeset and code refactoring

* fix: [DI-29314] -  code refactoring

* upcoming: [DI-29061] - Notification Channel Show Details - Associated Alerts (#13294)

* upcoming: [DI-29061] - Notification Channel Show Details - Associated Alerts

* fix linting issue

* service label sorting

* add changesets

* update changeset

* fix: [DI-29215] - sort service type column on label (#13295)

* fix: [DI-29215] - sort service type column on label

* add changeset

* fix: [UIE-10041] - IAM routing cleanup (#13288)

* routing tighhtening

* Added changeset: IAM routing cleanup

* change: STORIF-165 - Updated content usage status format. (#13296)

* fix: [DI-29215] - End character validation for specific characters (#13297)

* fix: [DI-29215] - End character validation for specific characters

* add changesets

* upcoming: [DI-29177] - Exclude account/region alerts in api payload while updating alerts for a linode and fix state reset issue on save (#13301)

* upcoming: [DI-29177] - Remove account/region alerts from update linode payload

* upcoming: [DI-29177] - Add tc

* upcoming: [DI-29177] - Update tc

* upcoming: [DI-29177] - Update payload for create flow

* Revert "upcoming: [DI-29177] - Update payload for create flow"

This reverts commit 122d252.

* upcoming: [DI-29177] - Initial payload for account and region alerts isnt required

* upcoming: [DI-29177] - Remove immediate state

* upcoming: [DI-29177] - Add changeset

* upcoming: [DI-28506] - Filter linode resources based on associated aclp alerts (#13163)

* upcoming: [DI-28506] - filter linode resources based on alerts

* upcoming: [DI-28506] - Update comment

* upcoming: [DI-28506] - move utils from shared to alerting specific file

* upcoming: [DI-28506] - Update mock

* upcoming: [DI-28506] - Add changeset

* upcoming: [DI-28506] - add copilot suggestion

* refine selector (#13091)

Co-authored-by: Banks Nussman <115251059+bnussman-akamai@users.noreply.github.com>

* upcoming: [UIE-9781] - Add CRUD MSW mocks for Locks(Linodes is in scope). (#13286)

* upcoming: [UIE-9781] - Add CRUD MSW mocks for  Resource Locking feature(RESPROT2)

* Added changeset: Add MSW crud for Resource Locking feature(RESPROT2)

* Refactored the types to re-use Entity and entityFactory.

* Address review comments by Ganesh

* Added changeset: Added locks property to Linode interface,added lock create and delete event keys, refactored Lock types

* fix: [UIE-10016] - Show notice in add interface drawer when adding Public Internet interface to Linode with VPC (#13302)

* change: [DPS-35018] - Logs: Add new status - Provisioning (#13284)

* change: [DPS-35018] - Logs: Add new status - Provisioning

* Added changeset: Logs Stream - Provisioning status

* change: [DPS-36291] - Text changes after tech writing review (#13291)

* change: [DPS-36291] - Text changes after tech writing review

* Added changeset: Logs texts updates after tech writing review

* change: [UIE-10012] - Implement UX and user feedback for linode interfaces feature in Create linode page (#13281)

* change: [UIE-10012] - Implement UX and user feedback for linode interfaces feature in Create linode page

* Added changeset: Apply UX and user feedback for linode interfaces feature in Account settings page

* fix: UIE-9998 - Reset Private IP value on switching between linode interface and config profile interface in Create linode form

* Update spacings within VPC panel in create linode panel

* Auto assign VPC IPv6 similar to VPC IPv4 by default in VPC panel

* Add divider below VLAN section in networking panel

* feat: [UIE-10051] - IAM Delegation: allow sending an empty array (#13300)

* feat: [UIE-10051] - IAM Delegation: allow sending an empty array

* Added changeset: IAM DElegation: remove restriction to update user delegation with empty array, update the delegations after reopening a drawer

* small drawer refactor

---------

Co-authored-by: Alban Bailly <abailly@akamai.com>

* feat: [UIE-10006] - IAM Delegation: reset to prev page when changing role (#13285)

* feat: [UIE-10006] - IAM Delegation: reset to prev page when changing role

* Added changeset: IAM: changing entity/role can cause an empty page

* Cloud version 1.158.0, API v4 version 0.156.0, Validation version 0.81.0, Queries version 0.20.0

* Update release date

* upcoming: [UIE-10042] - Fix error handling in ChildAccountList component (#13299)

* Add check to useIsIAMDelegationEnabled

* better handling

* update relevant tests

* Added changeset: Check if IAM Parent/Child is enabled dynamically

* remaining test

* handle child accounts and delegates

* reduce ticket scope

* reduce ticket scope

* add iamIsEnabled check

* tests

* new: STORIF-232 - BlockStorageContextualMetrics feature flag added. (#13324)

* new: STORIF-231 - ObjectStorageContextualMetrics feature flag added. (#13323)

---------

Co-authored-by: santoshp210-akamai <159890961+santoshp210-akamai@users.noreply.github.com>
Co-authored-by: Ankita <ankitaan@akamai.com>
Co-authored-by: Tanushree Bhattacharji <tbhattac@akamai.com>
Co-authored-by: grevanak-akamai <145482092+grevanak-akamai@users.noreply.github.com>
Co-authored-by: Purvesh Makode <pmakode@akamai.com>
Co-authored-by: Dajahi Wiley <114682940+dwiley-akamai@users.noreply.github.com>
Co-authored-by: Harsh Shankar Rao <hrao@akamai.com>
Co-authored-by: mpolotsk-akamai <157619599+mpolotsk-akamai@users.noreply.github.com>
Co-authored-by: aaleksee-akamai <aaleksee@akamai.com>
Co-authored-by: Joe D'Amore <jdamore@akamai.com>
Co-authored-by: jdamore-linode <97627410+jdamore-linode@users.noreply.github.com>
Co-authored-by: Hana Xu <115299789+hana-akamai@users.noreply.github.com>
Co-authored-by: agorthi-akamai <agorthi@akamai.com>
Co-authored-by: n0vabyte <94801247+n0vabyte@users.noreply.github.com>
Co-authored-by: venkatmano-akamai <vmangalr@akamai.com>
Co-authored-by: Dmytro Chyrva <dchyrva@akamai.com>
Co-authored-by: dmcintyr-akamai <dmcintyr@akamai.com>
Co-authored-by: Banks Nussman <115251059+bnussman-akamai@users.noreply.github.com>
Co-authored-by: kagora-akamai <kagora@akamai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants