[UII] Use local storage for tours in Fleet and Integrations#183102
Merged
jen-huang merged 4 commits intoelastic:mainfrom May 10, 2024
Merged
[UII] Use local storage for tours in Fleet and Integrations#183102jen-huang merged 4 commits intoelastic:mainfrom
jen-huang merged 4 commits intoelastic:mainfrom
Conversation
…l storage when determining whether to show the agent activity tour
Contributor
|
Pinging @elastic/fleet (Team:Fleet) |
🤖 GitHub commentsExpand to view the GitHub comments
Just comment with:
|
💚 Build Succeeded
Metrics [docs]Async chunks
Page load bundle
History
To update your PR or re-run it, just comment with: cc @jen-huang |
kibanamachine
pushed a commit
to kibanamachine/kibana
that referenced
this pull request
May 10, 2024
…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)
Contributor
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
kibanamachine
added a commit
that referenced
this pull request
May 10, 2024
…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>
This was referenced May 14, 2024
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
uiSettingand attempted to write a new value to/internal/kibana/settingsafter dismissing the tour.uiSettingsbacks 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:uiSetting'shideAnnouncementsis true, never show these tours - this is a global setting intended to surpress these kind of tours and messages, see [Discover] AddhideAnnouncementsadvanced setting #135030storageservice) to determine whether to show these tours or notuiSettingsuseStartServices)You can test this by:
You can clear these
fleet.*local settings to trigger the tours again, or use another browser / incognito mode: