Incrementally prepare Issuable sidebar for unified asynchronous updates
Support for new slash commands will require Issuable sidebar blocks to stay up-to-date asyncronously. We need to expand this behavior to the rest of the sidebar blocks as soon as possible, for a consistent UX. Users should not need to keep track of which Issuable sidebar blocks are fresh and which may be stale.
One reason this hasn't been done yet is that the code in the issuable sidebar is not very DRY and not easy to work with. This issue is a checklist for a gradual approach for keeping the issuable sidebar state fresh.
-
Refactor sidebar blocks' js to be more OO and testable -
MilestoneSelect -
LabelsSelect -
IssuableContext -
Subscription -
DueDateSelectors -
Sidebar
-
-
Add 'render' methods for each that will update the DOM in response to state changes -
Use a common pub/sub resource to get/put updates ( Issuable Resource
) -
Ascertain steps required for componentizing sidebar blocks and updating with a Vue instance -
Ascertain steps required for integrating DropLab -
Fully implement a unidirectional data flow through from Vue parent to child components