Split NoteableDiscussion component
NoteableDiscussion tries to do many different things at many different abstraction levels. For example it is responsible for distinction of rendering a diff discussion and a regular discussion (high abstraction level) but also for the loading icon of a resolve discussion button (low abstraction level). This leads to a high amount of properties, methods and much nesting in the template. As a consequence we had many regressions and merge conflicts caused by this component.
We should split the component into smaller subcomponents:
-
DiffDiscussion(<div v-if="shouldRenderDiffs" class="discussion-header note-wrapper">)-
DiffDiscussionHeader
-
-
DiscussionBody(<div v-if="shouldShowDiscussions" class="discussion-body">)-
DiscussionNotes/DiscussionComments(<div class="discussion-notes"><ul class="notes">) -
ReplyPlaceholder(<button>Reply...) -
DiscussionActions-
ResolveDiscussionButton(<div v-if="discussion.resolvable"><button @click="resolveHandler();">) -
ResolveWithIssueButton(<div v-if="!discussionResolved"><a :href="discussion.resolve_with_issue_path">) -
JumpToNextDiscussionButton(<div v-if="shouldShowJumpToNextDiscussion"><button>)
-
-
As a side effect, the corresponding tests get easier to write and better to maintain.
Edited by Inactive Account