Update issue epic links in real-time
What does this MR do and why?
Issues can have an epic link that is visible in the sidebar. The state for this was previously fetched once when we mount the Vue component, which meant that if someone changes or removes the epic while the page is already loaded, this state could become stale.
This MR enables "live" updates for the epic link widget so that whenever someone changes the issue's epic elsewhere on the site, it will update immediately. This should work for Issue
s, when their epic is changed from one of the following places:
- The issue sidebar
- Via a slash command
- By adding or removing it via the epic page
I am not sure if there are other places where issues can have their epic changed, so I'd appreciate reviewers to point this out to me.
Screenshots or screen recordings
Screencast_from_2023-03-16_16-04-45
How to set up and validate locally
- Enable the
real_time_issue_epic_links
FF - Open two browser tabs with the single issue page
- Change the epic in one (sidebar, slash commands should all work), it should update in the other tab
Safety
- The change is guarded by the
real_time_issue_epic_links
FF, both in FE and BE - We already maintain a websocket connection on the issue and boards page, so this will be re-used. The new event will lead to a new
PubSub
channel being created in redis. There will also be an additional PubSub channel per each connection in order to transmit the results of the GQL query subscribed to this event.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #395184 (closed)