Vue MR Page - Data structure update
What does this MR do?
It updates the MR Vue application to use a new datastructure by merging and updating diffs + discussions instead of linking through dynamic getters. By doing this the performance is greatly improved especially on interacting with it, creating new comments, etc.
Also it is faster now as discussions are added async after the diff is rendered.
I tested the updated functionality against this feature set:
-
Load comments to diff structure through requestIdleCallback -
Polling -
Post comment to discussion -
Temp Comments -
Post new thread -
Delete Comment -
Delete Thread -
Resolve discussion -
Show Avatars on Collapsed discussion -
Collapsed files - http://localhost:3000/documentcloud/underscore/merge_requests/4/diffs?view=parallel -
Load more discussions display -
Line numbers
Are there points in the code the reviewer needs to double check?
That everything still works + performance greatly improved.
Why was this MR needed?
To improve the performance while interacting with an MR (posting takes now on the client side even on a 10.000 line MR ~120ms during tests)
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated -
API support added -
Tests added for this feature/bug - Conforms to the code review guidelines
-
Has been reviewed by a UX Designer -
Has been reviewed by a Frontend maintainer -
Has been reviewed by a Backend maintainer -
Has been reviewed by a Database specialist
-
-
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the database guides -
If you have multiple commits, please combine them into a few logically organized commits by squashing them -
Internationalization required/considered -
End-to-end tests pass ( package-and-qa
manual pipeline job)
What are the relevant issue numbers?
Edited by Tim Zallmann