Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import Vue from 'vue'; import VueApollo from 'vue-apollo'; import { apolloProvider } from '~/graphql_shared/issuable_client'; import { convertToGraphQLId } from '~/graphql_shared/utils'; import { parseBoolean } from '~/lib/utils/common_utils'; import { getLocationHash } from '~/lib/utils/url_utility'; import NotesApp from './components/notes_app.vue'; import { store } from './stores'; import { getNotesFilterData } from './utils/get_notes_filter_data'; export default ({ editorAiActions = [] } = {}) => { const el = document.getElementById('js-vue-notes'); if (!el) { return; } Vue.use(VueApollo); const notesFilterProps = getNotesFilterData(el); const showTimelineViewToggle = parseBoolean(el.dataset.showTimelineViewToggle); const notesDataset = el.dataset; const parsedUserData = JSON.parse(notesDataset.currentUserData); const noteableData = JSON.parse(notesDataset.noteableData); let currentUserData = {}; noteableData.noteableType = notesDataset.noteableType; noteableData.targetType = notesDataset.targetType; noteableData.discussion_locked = parseBoolean(noteableData.discussion_locked); if (parsedUserData) { currentUserData = { id: parsedUserData.id, name: parsedUserData.name, username: parsedUserData.username, avatar_url: parsedUserData.avatar_path || parsedUserData.avatar_url, path: parsedUserData.path, can_add_timeline_events: parseBoolean(notesDataset.canAddTimelineEvents), }; } const notesData = JSON.parse(notesDataset.notesData); store.dispatch('setNotesData', notesData); store.dispatch('setNoteableData', noteableData); store.dispatch('setUserData', currentUserData); store.dispatch('setTargetNoteHash', getLocationHash()); store.dispatch('fetchNotes'); // eslint-disable-next-line no-new new Vue({ el, name: 'NotesRoot', components: { NotesApp, }, store, apolloProvider, provide: { showTimelineViewToggle, reportAbusePath: notesDataset.reportAbusePath, newCommentTemplatePaths: JSON.parse(notesDataset.newCommentTemplatePaths), resourceGlobalId: convertToGraphQLId(noteableData.noteableType, noteableData.id), editorAiActions: editorAiActions.map((factory) => factory(noteableData)), newCustomEmojiPath: notesDataset.newCustomEmojiPath, }, data() { return { noteableData, currentUserData, notesData: JSON.parse(notesDataset.notesData), }; }, render(createElement) { return createElement('notes-app', { props: { noteableData: this.noteableData, notesData: this.notesData, userData: this.currentUserData, ...notesFilterProps, }, }); }, }); }; |