Commit c1c0c0c2 authored by Constance Okoghenun's avatar Constance Okoghenun

Display "commented" only for commit discussions on merge requests

Add commit prop to NoteableNote component and pass it from
NoteableDiscussion
parent eec16ee2
...@@ -212,6 +212,16 @@ export default { ...@@ -212,6 +212,16 @@ export default {
return this.line; return this.line;
}, },
commit() {
if (!this.discussion.for_commit) {
return null;
}
return {
id: this.discussion.commit_id,
url: this.discussion.discussion_path,
};
},
}, },
watch: { watch: {
isReplying() { isReplying() {
...@@ -376,6 +386,7 @@ Please check your network connection and try again.`; ...@@ -376,6 +386,7 @@ Please check your network connection and try again.`;
:is="componentName(initialDiscussion)" :is="componentName(initialDiscussion)"
:note="componentData(initialDiscussion)" :note="componentData(initialDiscussion)"
:line="line" :line="line"
:commit="commit"
:help-page-path="helpPagePath" :help-page-path="helpPagePath"
@handleDeleteNote="deleteNoteHandler" @handleDeleteNote="deleteNoteHandler"
> >
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
import $ from 'jquery'; import $ from 'jquery';
import { mapGetters, mapActions } from 'vuex'; import { mapGetters, mapActions } from 'vuex';
import { escape } from 'underscore'; import { escape } from 'underscore';
import { truncateSha } from '~/lib/utils/text_utility';
import { s__, sprintf } from '~/locale';
import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue'; import TimelineEntryItem from '~/vue_shared/components/notes/timeline_entry_item.vue';
import Flash from '../../flash'; import Flash from '../../flash';
import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue'; import userAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
...@@ -37,6 +39,11 @@ export default { ...@@ -37,6 +39,11 @@ export default {
required: false, required: false,
default: '', default: '',
}, },
commit: {
type: Object,
required: false,
default: () => null,
},
}, },
data() { data() {
return { return {
...@@ -73,6 +80,24 @@ export default { ...@@ -73,6 +80,24 @@ export default {
isTarget() { isTarget() {
return this.targetNoteHash === this.noteAnchorId; return this.targetNoteHash === this.noteAnchorId;
}, },
actionText() {
if (this.commit) {
const { id, url } = this.commit;
const linkStart = `<a class="commit-sha monospace" href="${escape(url)}">`;
const linkEnd = '</a>';
return sprintf(
s__('MergeRequests|commented on commit %{linkStart}%{commitId}%{linkEnd}'),
{
commitId: truncateSha(id),
linkStart,
linkEnd,
},
false,
);
}
return '<span class="d-none d-sm-inline">&middot;</span>';
},
}, },
created() { created() {
...@@ -205,8 +230,9 @@ export default { ...@@ -205,8 +230,9 @@ export default {
:author="author" :author="author"
:created-at="note.created_at" :created-at="note.created_at"
:note-id="note.id" :note-id="note.id"
action-text="commented" >
/> <span v-html="actionText"></span>
</note-header>
<note-actions <note-actions
:author-id="author.id" :author-id="author.id"
:note-id="note.id" :note-id="note.id"
......
...@@ -85,7 +85,7 @@ module NotesHelper ...@@ -85,7 +85,7 @@ module NotesHelper
diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params) diffs_project_merge_request_path(discussion.project, discussion.noteable, path_params)
elsif discussion.for_commit? elsif discussion.for_commit?
anchor = discussion.line_code if discussion.diff_discussion? anchor = discussion.diff_discussion? ? discussion.line_code : "note_#{discussion.first_note.id}"
project_commit_path(discussion.project, discussion.noteable, anchor: anchor) project_commit_path(discussion.project, discussion.noteable, anchor: anchor)
end end
......
...@@ -88,5 +88,15 @@ describe 'Merge request > User sees discussions', :js do ...@@ -88,5 +88,15 @@ describe 'Merge request > User sees discussions', :js do
expect(page).to have_content "started a discussion on commit #{note.commit_id[0...7]}" expect(page).to have_content "started a discussion on commit #{note.commit_id[0...7]}"
end end
end end
context 'a commit non-diff discussion' do
let(:note) { create(:discussion_note_on_commit, project: project) }
it 'displays correct header' do
page.within(find("#note_#{note.id}", match: :first)) do
expect(page).to have_content "commented on commit #{note.commit_id[0...7]}"
end
end
end
end end
end end
...@@ -185,8 +185,8 @@ describe NotesHelper do ...@@ -185,8 +185,8 @@ describe NotesHelper do
context 'for a non-diff discussion' do context 'for a non-diff discussion' do
let(:discussion) { create(:discussion_note_on_commit, project: project).to_discussion } let(:discussion) { create(:discussion_note_on_commit, project: project).to_discussion }
it 'returns the commit path' do it 'returns the commit path with the note anchor' do
expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit)) expect(helper.discussion_path(discussion)).to eq(project_commit_path(project, commit, anchor: "note_#{discussion.first_note.id}"))
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment