Bug #27970
closedToast notifications not working when permissions are missing
Description
Steps to reproduce:
1. Log in as / impersonate a user with only Viewer permissions
2. Navigate to /subscriptions
Expected behavior: Toast alert appears on screen with permission error.
Actual behavior: No toast is shown.
See screenshot attached; looks like the data shape added to Redux is a bit odd with multiple "message" keys.
Open the browser dev tools (Ctrl+Shift+I) and you'll see the following:
Warning: Failed prop type: Invalid prop `message` supplied to `AlertBody`, expected a ReactNode.
in AlertBody (created by ToastsList)
in ToastsList (created by Connect(ToastsList))
in Connect(ToastsList) (created by I18nProviderWrapper(Connect(ToastsList)))
in IntlProvider (created by I18nProviderWrapper(Connect(ToastsList)))
in I18nProviderWrapper(Connect(ToastsList)) (created by StoreProvider(I18nProviderWrapper(Connect(ToastsList))))
in Provider (created by StoreProvider(I18nProviderWrapper(Connect(ToastsList))))
in StoreProvider(I18nProviderWrapper(Connect(ToastsList)))
r chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/backend.js:6
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:252655
printWarning
checkPropTypes foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:252717
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:326884
validatePropTypes
createElementWithValidation foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:327057
bundle.js:10857
(anonymous)
ToastsList bundle.js:10839
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:290436
renderWithHooks
updateFunctionComponent foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:292253
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:293826
beginWork$1
beginWork$$1 foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:298521
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:297536
performUnitOfWork
workLoopSync foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:297513
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:297206
renderRoot
runRootCallback foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:296882
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:286681
(anonymous)
unstable_runWithPriority foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:340474
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:286633
runWithPriority$2
flushSyncCallbackQueueImpl foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:286677
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:286666
flushSyncCallbackQueue
scheduleUpdateOnFiber foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:296759
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:288428
enqueueSetState
../vendor-core/node_modules/react/cjs/react.development.js.Component.setState foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:325413
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:310666
onStateChange
dispatch foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338969
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338406
e
(anonymous)
(anonymous) foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338458
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338516
dispatch
(anonymous) katello.js:8368
katello.js:8367
(anonymous)
(anonymous) katello.js:8387
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338455
(anonymous)
dispatch foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:338516
katello.js:33931
_callee$
tryCatch foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:375985
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:376211
invoke
prototype.<computed> foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:376037
katello.js:33893
step
(anonymous) @ katello.js:33893
Show 10 more frames
foreman-vendor.bundle-v1.4.0-development-70f7bba7929e06fae0ca.js:289141 Uncaught Invariant Violation: Objects are not valid as a React child (found: object with keys {message, details, missing_permissions}). If you meant to render a collection of children, use an array instead.
in span (created by AlertBody)
in AlertBody (created by ToastsList)
in div (created by Alert)
in Alert (created by ToastNotification)
in ToastNotification (created by ToastsList)
in div (created by ToastNotificationList)
in ToastNotificationList (created by ToastsList)
in ToastsList (created by Connect(ToastsList))
in Connect(ToastsList) (created by I18nProviderWrapper(Connect(ToastsList)))
in IntlProvider (created by I18nProviderWrapper(Connect(ToastsList)))
in I18nProviderWrapper(Connect(ToastsList)) (created by StoreProvider(I18nProviderWrapper(Connect(ToastsList))))
in Provider (created by StoreProvider(I18nProviderWrapper(Connect(ToastsList))))
in StoreProvider(I18nProviderWrapper(Connect(ToastsList)))
Files