NMS-20119: Destination Paths tab - #8711
Conversation
|
@marshallmassengill review requested — stacks on #8709 (only the top commit is new here). |
d767dd2 to
e4746e4
Compare
778a24f to
0f5e70c
Compare
marshallmassengill
left a comment
There was a problem hiding this comment.
Deleting the last destination path still corrupts the config. NotificationConfigRestService.java:256 has a 404 check and no size guard. Reloading on save failure instead would also cover addPath and replacePath, which diverge the same way on any I/O failure.
TAB_LOADERS['destination-paths'] returns literal true. ConfigureNotificationsDialog.vue:95. All three fetches swallow errors, so one failure latches the tab and leaves the pickers empty for the page's life. Third of three siblings with this bug, which argues for fixing the contract in the base rather than in each tab.
Commands outside ENABLED_METHODS can be removed but not re-added, so editing a legacy textPage target is one-way. And getOnCallRoles actually depends on the GroupManager change, so the merge plan's "split it out, it runs in parallel" is wrong; #8711 needs it first.
18b8166 to
e94de66
Compare
Adds the Destination Paths tab: path list with a test-trigger action, and an editor covering initial delay, targets (users, groups, on-call roles, email addresses) with per-target commands, intervals and auto-notify, and escalations — the Browser notification method is selectable end to end. The /rest/notification-config destination-path mutation, commands and on-call-roles endpoints wrap the same destinationPaths.xml, notificationCommands.xml and groups.xml factories the legacy wizard uses. GroupManager now rebuilds its role map on every parse so removing the last role in groups.xml is not masked by a stale cache. Depends on the Notifications page base PR.
… error A destination path that uses a command outside the enabled set (e.g. textPage) now keeps that command selectable while editing, so removing it is no longer a one-way trip; brand-new paths still cannot add disabled commands. The destination-paths tab loader now reports real success: the path, command and user/group lookups return null on failure and the store surfaces a boolean, so a failed fetch retries instead of latching the tab with empty pickers for the life of the page.
Migrate the Destination Paths tab — the paths table, the path editor dialog, and the target-row editor — onto the Onms-* seam wrappers so the page passes the no-direct-primevue lint rule. iftalabel stays on PrimeVue (no wrapper). Behaviour and markup are otherwise unchanged.
e94de66 to
fb1bd78
Compare
The target row editor edited its `row` prop in place, which the parent relies on (it reads the fields back from its own array). Switch `row` to defineModel so the two-way flow is explicit and the vue/no-mutating-props errors clear, with no behaviour change.
NMS-20119 (NMS-20100 epic): adds the Destination Paths tab to the Configure Notifications dialog. Stacked on #8709, so this PR shows only its own commit.