Initialize discussion filter after notes app
Also sets default selectedValue for discussion filter when not logged in
This commit is contained in:
parent
a3b3da7277
commit
c307bd4736
|
@ -22,7 +22,7 @@ export default {
|
||||||
},
|
},
|
||||||
selectedValue: {
|
selectedValue: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: DISCUSSION_FILTERS_DEFAULT_VALUE,
|
||||||
required: false,
|
required: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,12 +6,16 @@ export default store => {
|
||||||
|
|
||||||
if (discussionFilterEl) {
|
if (discussionFilterEl) {
|
||||||
const { defaultFilter, notesFilters } = discussionFilterEl.dataset;
|
const { defaultFilter, notesFilters } = discussionFilterEl.dataset;
|
||||||
const selectedValue = defaultFilter ? parseInt(defaultFilter, 10) : null;
|
|
||||||
const filterValues = notesFilters ? JSON.parse(notesFilters) : {};
|
const filterValues = notesFilters ? JSON.parse(notesFilters) : {};
|
||||||
const filters = Object.keys(filterValues).map(entry => ({
|
const filters = Object.keys(filterValues).map(entry => ({
|
||||||
title: entry,
|
title: entry,
|
||||||
value: filterValues[entry],
|
value: filterValues[entry],
|
||||||
}));
|
}));
|
||||||
|
const props = { filters };
|
||||||
|
|
||||||
|
if (defaultFilter) {
|
||||||
|
props.selectedValue = parseInt(defaultFilter, 10);
|
||||||
|
}
|
||||||
|
|
||||||
return new Vue({
|
return new Vue({
|
||||||
el: discussionFilterEl,
|
el: discussionFilterEl,
|
||||||
|
@ -21,12 +25,7 @@ export default store => {
|
||||||
},
|
},
|
||||||
store,
|
store,
|
||||||
render(createElement) {
|
render(createElement) {
|
||||||
return createElement('discussion-filter', {
|
return createElement('discussion-filter', { props });
|
||||||
props: {
|
|
||||||
filters,
|
|
||||||
selectedValue,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,8 @@ import createStore from './stores';
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
const store = createStore();
|
const store = createStore();
|
||||||
|
|
||||||
initDiscussionFilters(store);
|
// eslint-disable-next-line no-new
|
||||||
|
new Vue({
|
||||||
return new Vue({
|
|
||||||
el: '#js-vue-notes',
|
el: '#js-vue-notes',
|
||||||
components: {
|
components: {
|
||||||
notesApp,
|
notesApp,
|
||||||
|
@ -49,4 +48,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
initDiscussionFilters(store);
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Fix error shown when loading links to specific comments
|
||||||
|
merge_request: 26092
|
||||||
|
author:
|
||||||
|
type: fixed
|
|
@ -0,0 +1,33 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe 'User opens link to comment', :js do
|
||||||
|
let(:project) { create(:project, :public) }
|
||||||
|
let(:note) { create(:note_on_issue, project: project) }
|
||||||
|
|
||||||
|
context 'authenticated user' do
|
||||||
|
let(:user) { create(:user) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in(user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'switches to all activity and does not show error message' do
|
||||||
|
create(:user_preference, user: user, issue_notes_filter: UserPreference::NOTES_FILTERS[:only_activity])
|
||||||
|
|
||||||
|
visit Gitlab::UrlBuilder.build(note)
|
||||||
|
|
||||||
|
expect(page.find('#discussion-filter-dropdown')).to have_content('Show all activity')
|
||||||
|
expect(page).not_to have_content('Something went wrong while fetching comments')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'anonymous user' do
|
||||||
|
it 'does not show error message' do
|
||||||
|
visit Gitlab::UrlBuilder.build(note)
|
||||||
|
|
||||||
|
expect(page).not_to have_content('Something went wrong while fetching comments')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue