[Discover] Add hideAnnouncements advanced setting#135030
[Discover] Add hideAnnouncements advanced setting#135030dimaanj merged 5 commits intoelastic:mainfrom
hideAnnouncements advanced setting#135030Conversation
|
@elasticmachine merge upstream -- failure seems to be unrelated |
|
@dimaanj this should be ready for review, right? |
|
Pinging @elastic/kibana-data-discovery (Team:DataDiscovery) |
|
@elasticmachine merge upstream |
kertal
left a comment
There was a problem hiding this comment.
LGTM 👍 , tested a-la-carte and works as expected
💚 Build SucceededMetrics [docs]Public APIs missing comments
Async chunks
Page load bundle
History
To update your PR or re-run it, just comment with: cc @dimaanj |
|
Nice! How can we set this from kibana.dev.yml? |
|
think it should work with overrides in kibana.yml? https://www.elastic.co/guide/en/kibana/master/ui-settings-service.html#uisettings-overrides |
## Summary Resolves #180659. The original bug reported an error being throw when trying to dismiss the agent activity tour while logged in as a user with limited access. This was happening because the tour was backed by a `uiSetting` and attempted to write a new value to `/internal/kibana/settings` after dismissing the tour. `uiSettings` backs the global Kibana advanced settings used by all users in an instance. Therefore only users with access to Management > Advanced settings are allowed to write to it. The tours that we use in Fleet and Integrations is not the right use case for `uiSettings`. This PR changes the logic for the two tours (agent activity and add agent) so that: - If `uiSetting`'s `hideAnnouncements` is true, never show these tours - this is a global setting intended to surpress these kind of tours and messages, see #135030 - Otherwise read from and write to local storage (using Kibana's `storage` service) to determine whether to show these tours or not - Never attempt to write to `uiSettings` - Normalize the code pattern used by hooks related to the inactive agents tour (they were already using local storage but not from `useStartServices`) You can test this by: 1. Opening actions menu in an agent list row, add a new tag to the agent, and dismiss the Agent activity tour. Refresh the page, perform the action again, and tour should not show 2. From Integrations, add an integration to a new policy without adding an agent, after returning to the integration policies list, dismiss the Add agent activity tour. Refresh the page, perform the action again, and tour should not show You can clear these `fleet.*` local settings to trigger the tours again, or use another browser / incognito mode: <img width="694" alt="image" src="https://github.com/elastic/kibana/assets/1965714/817f48fc-2a6a-411d-8242-f855f862c622">
…183102) ## Summary Resolves elastic#180659. The original bug reported an error being throw when trying to dismiss the agent activity tour while logged in as a user with limited access. This was happening because the tour was backed by a `uiSetting` and attempted to write a new value to `/internal/kibana/settings` after dismissing the tour. `uiSettings` backs the global Kibana advanced settings used by all users in an instance. Therefore only users with access to Management > Advanced settings are allowed to write to it. The tours that we use in Fleet and Integrations is not the right use case for `uiSettings`. This PR changes the logic for the two tours (agent activity and add agent) so that: - If `uiSetting`'s `hideAnnouncements` is true, never show these tours - this is a global setting intended to surpress these kind of tours and messages, see elastic#135030 - Otherwise read from and write to local storage (using Kibana's `storage` service) to determine whether to show these tours or not - Never attempt to write to `uiSettings` - Normalize the code pattern used by hooks related to the inactive agents tour (they were already using local storage but not from `useStartServices`) You can test this by: 1. Opening actions menu in an agent list row, add a new tag to the agent, and dismiss the Agent activity tour. Refresh the page, perform the action again, and tour should not show 2. From Integrations, add an integration to a new policy without adding an agent, after returning to the integration policies list, dismiss the Add agent activity tour. Refresh the page, perform the action again, and tour should not show You can clear these `fleet.*` local settings to trigger the tours again, or use another browser / incognito mode: <img width="694" alt="image" src="https://github.com/elastic/kibana/assets/1965714/817f48fc-2a6a-411d-8242-f855f862c622"> (cherry picked from commit 8cf79b7)
…183102) (#183159) # Backport This will backport the following commits from `main` to `8.14`: - [[UII] Use local storage for tours in Fleet and Integrations (#183102)](#183102) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Jen Huang","email":"its.jenetic@gmail.com"},"sourceCommit":{"committedDate":"2024-05-10T14:20:43Z","message":"[UII] Use local storage for tours in Fleet and Integrations (#183102)\n\n## Summary\r\n\r\nResolves https://github.com/elastic/kibana/issues/180659.\r\n\r\nThe original bug reported an error being throw when trying to dismiss\r\nthe agent activity tour while logged in as a user with limited access.\r\n\r\nThis was happening because the tour was backed by a `uiSetting` and\r\nattempted to write a new value to `/internal/kibana/settings` after\r\ndismissing the tour. `uiSettings` backs the global Kibana advanced\r\nsettings used by all users in an instance. Therefore only users with\r\naccess to Management > Advanced settings are allowed to write to it.\r\n\r\nThe tours that we use in Fleet and Integrations is not the right use\r\ncase for `uiSettings`. This PR changes the logic for the two tours\r\n(agent activity and add agent) so that:\r\n\r\n- If `uiSetting`'s `hideAnnouncements` is true, never show these tours -\r\nthis is a global setting intended to surpress these kind of tours and\r\nmessages, see https://github.com/elastic/kibana/pull/135030\r\n- Otherwise read from and write to local storage (using Kibana's\r\n`storage` service) to determine whether to show these tours or not\r\n- Never attempt to write to `uiSettings`\r\n- Normalize the code pattern used by hooks related to the inactive\r\nagents tour (they were already using local storage but not from\r\n`useStartServices`)\r\n\r\nYou can test this by:\r\n\r\n1. Opening actions menu in an agent list row, add a new tag to the\r\nagent, and dismiss the Agent activity tour. Refresh the page, perform\r\nthe action again, and tour should not show\r\n2. From Integrations, add an integration to a new policy without adding\r\nan agent, after returning to the integration policies list, dismiss the\r\nAdd agent activity tour. Refresh the page, perform the action again, and\r\ntour should not show\r\n\r\nYou can clear these `fleet.*` local settings to trigger the tours again,\r\nor use another browser / incognito mode:\r\n\r\n<img width=\"694\" alt=\"image\"\r\nsrc=\"https://github.com/elastic/kibana/assets/1965714/817f48fc-2a6a-411d-8242-f855f862c622\">","sha":"8cf79b71f26b324a27a45e6a3729cbcfb64643bb","branchLabelMapping":{"^v8.15.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Fleet","v8.14.0","v8.15.0"],"title":"[UII] Use local storage for tours in Fleet and Integrations","number":183102,"url":"https://github.com/elastic/kibana/pull/183102","mergeCommit":{"message":"[UII] Use local storage for tours in Fleet and Integrations (#183102)\n\n## Summary\r\n\r\nResolves https://github.com/elastic/kibana/issues/180659.\r\n\r\nThe original bug reported an error being throw when trying to dismiss\r\nthe agent activity tour while logged in as a user with limited access.\r\n\r\nThis was happening because the tour was backed by a `uiSetting` and\r\nattempted to write a new value to `/internal/kibana/settings` after\r\ndismissing the tour. `uiSettings` backs the global Kibana advanced\r\nsettings used by all users in an instance. Therefore only users with\r\naccess to Management > Advanced settings are allowed to write to it.\r\n\r\nThe tours that we use in Fleet and Integrations is not the right use\r\ncase for `uiSettings`. This PR changes the logic for the two tours\r\n(agent activity and add agent) so that:\r\n\r\n- If `uiSetting`'s `hideAnnouncements` is true, never show these tours -\r\nthis is a global setting intended to surpress these kind of tours and\r\nmessages, see https://github.com/elastic/kibana/pull/135030\r\n- Otherwise read from and write to local storage (using Kibana's\r\n`storage` service) to determine whether to show these tours or not\r\n- Never attempt to write to `uiSettings`\r\n- Normalize the code pattern used by hooks related to the inactive\r\nagents tour (they were already using local storage but not from\r\n`useStartServices`)\r\n\r\nYou can test this by:\r\n\r\n1. Opening actions menu in an agent list row, add a new tag to the\r\nagent, and dismiss the Agent activity tour. Refresh the page, perform\r\nthe action again, and tour should not show\r\n2. From Integrations, add an integration to a new policy without adding\r\nan agent, after returning to the integration policies list, dismiss the\r\nAdd agent activity tour. Refresh the page, perform the action again, and\r\ntour should not show\r\n\r\nYou can clear these `fleet.*` local settings to trigger the tours again,\r\nor use another browser / incognito mode:\r\n\r\n<img width=\"694\" alt=\"image\"\r\nsrc=\"https://github.com/elastic/kibana/assets/1965714/817f48fc-2a6a-411d-8242-f855f862c622\">","sha":"8cf79b71f26b324a27a45e6a3729cbcfb64643bb"}},"sourceBranch":"main","suggestedTargetBranches":["8.14"],"targetPullRequestStates":[{"branch":"8.14","label":"v8.14.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.15.0","branchLabelMappingKey":"^v8.15.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/183102","number":183102,"mergeCommit":{"message":"[UII] Use local storage for tours in Fleet and Integrations (#183102)\n\n## Summary\r\n\r\nResolves https://github.com/elastic/kibana/issues/180659.\r\n\r\nThe original bug reported an error being throw when trying to dismiss\r\nthe agent activity tour while logged in as a user with limited access.\r\n\r\nThis was happening because the tour was backed by a `uiSetting` and\r\nattempted to write a new value to `/internal/kibana/settings` after\r\ndismissing the tour. `uiSettings` backs the global Kibana advanced\r\nsettings used by all users in an instance. Therefore only users with\r\naccess to Management > Advanced settings are allowed to write to it.\r\n\r\nThe tours that we use in Fleet and Integrations is not the right use\r\ncase for `uiSettings`. This PR changes the logic for the two tours\r\n(agent activity and add agent) so that:\r\n\r\n- If `uiSetting`'s `hideAnnouncements` is true, never show these tours -\r\nthis is a global setting intended to surpress these kind of tours and\r\nmessages, see https://github.com/elastic/kibana/pull/135030\r\n- Otherwise read from and write to local storage (using Kibana's\r\n`storage` service) to determine whether to show these tours or not\r\n- Never attempt to write to `uiSettings`\r\n- Normalize the code pattern used by hooks related to the inactive\r\nagents tour (they were already using local storage but not from\r\n`useStartServices`)\r\n\r\nYou can test this by:\r\n\r\n1. Opening actions menu in an agent list row, add a new tag to the\r\nagent, and dismiss the Agent activity tour. Refresh the page, perform\r\nthe action again, and tour should not show\r\n2. From Integrations, add an integration to a new policy without adding\r\nan agent, after returning to the integration policies list, dismiss the\r\nAdd agent activity tour. Refresh the page, perform the action again, and\r\ntour should not show\r\n\r\nYou can clear these `fleet.*` local settings to trigger the tours again,\r\nor use another browser / incognito mode:\r\n\r\n<img width=\"694\" alt=\"image\"\r\nsrc=\"https://github.com/elastic/kibana/assets/1965714/817f48fc-2a6a-411d-8242-f855f862c622\">","sha":"8cf79b71f26b324a27a45e6a3729cbcfb64643bb"}}]}] BACKPORT--> Co-authored-by: Jen Huang <its.jenetic@gmail.com>
Summary
Closes #133275
This PR adds new
hideAnnouncementsAdvanced setting. By default it'sfalsefor most users, but disabling it can be helpful for:Checklist