Discussions API - Missing fields for MR Multiline comments
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Summary
When comparing multiline comments created by the UI vs. the API, the following fields are missing from an API created discussion:
old_line
new_line
Steps to reproduce
Example payload
{
"position": {
"position_type": "text",
"base_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"start_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"head_sha": "0ce15e42c906d9d39956485098f309e60fc6776a",
"old_path": "main.rs",
"new_path": "main.rs",
"new_line":"20",
"line_range": {
"start": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_16",
"type": "new"
},
"end": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_20",
"type": "new"
}
}
},
"body": "Multi-line API"
}
Example Project
https://gitlab.com/gitlab-gold/jiocastillo/rust-test/-/merge_requests/2
What is the current bug behavior?
The missing fields cause the Comment on lines x to y
UI component to not render.
Sources:
What is the expected correct behavior?
The Comment on lines x to y
UI component to be rendered.
Relevant logs and/or screenshots
UI | API |
---|---|
![]() |
![]() |
JSON objects obtained from the List project merge request discussion items endpoint:
UI Notes Object
"notes": [
{
"id": 1271401407,
"type": "DiffNote",
"body": "Multi-line UI",
"attachment": null,
"author": {
"id": 11346989,
"username": "j.castillo",
"name": "Jiovanni Castillo",
"state": "active",
"avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/11346989/avatar.png",
"web_url": "https://gitlab.com/j.castillo"
},
"created_at": "2023-02-09T01:18:59.762Z",
"updated_at": "2023-02-09T01:18:59.762Z",
"system": false,
"noteable_id": 204410955,
"noteable_type": "MergeRequest",
"commit_id": null,
"position": {
"base_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"start_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"head_sha": "0ce15e42c906d9d39956485098f309e60fc6776a",
"old_path": "main.rs",
"new_path": "main.rs",
"position_type": "text",
"old_line": null,
"new_line": 20,
"line_range": {
"start": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_16",
"type": "new",
"old_line": null,
"new_line": 16
},
"end": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_20",
"type": "new",
"old_line": null,
"new_line": 20
}
}
},
"resolvable": true,
"resolved": false,
"resolved_by": null,
"resolved_at": null,
"confidential": false,
"internal": false,
"noteable_iid": 2,
"commands_changes": {}
}
]
API Notes Object
"notes": [
{
"id": 1287288045,
"type": "DiffNote",
"body": "Multi-line API",
"attachment": null,
"author": {
"id": 11346989,
"username": "j.castillo",
"name": "Jiovanni Castillo",
"state": "active",
"avatar_url": "https://gitlab.com/uploads/-/system/user/avatar/11346989/avatar.png",
"web_url": "https://gitlab.com/j.castillo"
},
"created_at": "2023-02-21T19:57:15.423Z",
"updated_at": "2023-02-21T19:57:15.423Z",
"system": false,
"noteable_id": 204410955,
"noteable_type": "MergeRequest",
"commit_id": null,
"position": {
"base_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"start_sha": "484301b317d46853efe93175a062a9c0ff12ff51",
"head_sha": "0ce15e42c906d9d39956485098f309e60fc6776a",
"old_path": "main.rs",
"new_path": "main.rs",
"position_type": "text",
"old_line": null,
"new_line": 20,
"line_range": {
"start": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_16",
"type": "new"
},
"end": {
"line_code": "d28144c4832d52a64a74ddd6d29c1c182d228e1f_3_20",
"type": "new"
}
}
},
"resolvable": true,
"resolved": false,
"resolved_by": null,
"resolved_at": null,
"confidential": false,
"internal": false,
"noteable_iid": 2,
"commands_changes": {}
}
]
Possible fixes
- Populate the fields when creating a discussion via API.
- Modify the
getLineNumber
function to use the line codeold
ornew
values if the fields are not present
let lineNumber = !oldLine ? lineRange[key].line_code.split('_')[1] : oldLine;
if (lineType === 'new' || otherLineType === 'new') lineNumber = !newLine ? lineRange[key].line_code.split('_')[2] : newLine;
Reported by customer in Zendesk ticket(internal)
Edited by 🤖 GitLab Bot 🤖