Use automerge for defaults and ensure correct typing.

Review Request #13895 — Created May 24, 2024 and submitted — Latest diff uploaded

Information

Review Board
release-7.x

Reviewers

This change accomplishes 3 things related to the defaults member for
models.

First, it fixes up the typing for the defaults definitions in all the
models that we've implemented so far to be Result<Partial<AttrsType>>.

Second, for things that inherit from base classes, we now rely on
automerge instead of manually calling _.defaults().

Finally, we had a few instances where the defaults were including
objects or arrays but were implemented as a plain object instead of a
function. We've had problems in the past where these weren't deep
copied, and multiple objects ended up sharing the same object or array
value. These have been fixed up to always be a function that returns new
data.

Ran js-tests.

Diff Revision 1 (Latest)

Commits

First Last Summary ID Author
Use automerge for defaults and ensure correct typing.
This change accomplishes 3 things related to the `defaults` member for models. First, it fixes up the typing for the `defaults` definitions in all the models that we've implemented so far to be `Result<Partial<AttrsType>>`. Second, for things that inherit from base classes, we now rely on automerge instead of manually calling `_.defaults()`. Finally, we had a few instances where the defaults were including objects or arrays but were implemented as a plain object instead of a function. We've had problems in the past where these weren't deep copied, and multiple objects ended up sharing the same object or array value. These have been fixed up to always be a function that returns new data. Testing Done: Ran js-tests.
26d5a9fa4229acd5ea7cc66c239feb00fe058c08 David Trowbridge

Files

reviewboard/static/rb/js/common/actions/models/actionModel.ts
reviewboard/static/rb/js/common/actions/models/menuActionModel.ts
reviewboard/static/rb/js/common/models/userSessionModel.ts
reviewboard/static/rb/js/reviews/models/abstractCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/abstractReviewableModel.ts
reviewboard/static/rb/js/reviews/models/commentEditorModel.ts
reviewboard/static/rb/js/reviews/models/commentIssueManagerModel.ts
reviewboard/static/rb/js/reviews/models/diffCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/diffCommentsHintModel.ts
reviewboard/static/rb/js/reviews/models/diffFileModel.ts
reviewboard/static/rb/js/reviews/models/diffReviewableModel.ts
reviewboard/static/rb/js/reviews/models/diffViewerPageModel.ts
reviewboard/static/rb/js/reviews/models/fileAttachmentCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/fileAttachmentReviewableModel.ts
reviewboard/static/rb/js/reviews/models/imageReviewableModel.ts
reviewboard/static/rb/js/reviews/models/regionCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/reviewRequestEditorModel.ts
reviewboard/static/rb/js/reviews/models/reviewablePageModel.ts
reviewboard/static/rb/js/reviews/models/screenshotCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/screenshotReviewableModel.ts
reviewboard/static/rb/js/reviews/models/textBasedReviewableModel.ts
reviewboard/static/rb/js/reviews/models/textCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/unifiedBannerModel.ts
reviewboard/static/rb/js/ui/models/contentViewport.ts
reviewboard/static/rb/js/ui/views/dndUploaderView.ts
reviewboard/static/rb/js/common/actions/models/actionModel.ts
reviewboard/static/rb/js/common/actions/models/menuActionModel.ts
reviewboard/static/rb/js/common/models/userSessionModel.ts
reviewboard/static/rb/js/reviews/models/abstractCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/abstractReviewableModel.ts
reviewboard/static/rb/js/reviews/models/commentEditorModel.ts
reviewboard/static/rb/js/reviews/models/commentIssueManagerModel.ts
reviewboard/static/rb/js/reviews/models/diffCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/diffCommentsHintModel.ts
reviewboard/static/rb/js/reviews/models/diffFileModel.ts
reviewboard/static/rb/js/reviews/models/diffReviewableModel.ts
reviewboard/static/rb/js/reviews/models/diffViewerPageModel.ts
reviewboard/static/rb/js/reviews/models/fileAttachmentCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/fileAttachmentReviewableModel.ts
reviewboard/static/rb/js/reviews/models/imageReviewableModel.ts
reviewboard/static/rb/js/reviews/models/regionCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/reviewRequestEditorModel.ts
reviewboard/static/rb/js/reviews/models/reviewablePageModel.ts
reviewboard/static/rb/js/reviews/models/screenshotCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/screenshotReviewableModel.ts
reviewboard/static/rb/js/reviews/models/textBasedReviewableModel.ts
reviewboard/static/rb/js/reviews/models/textCommentBlockModel.ts
reviewboard/static/rb/js/reviews/models/unifiedBannerModel.ts
reviewboard/static/rb/js/ui/models/contentViewport.ts
reviewboard/static/rb/js/ui/views/dndUploaderView.ts
Loading...