gitlab-org--gitlab-foss/app/assets/javascripts/dispatcher.js
Sean McGivern 52d578229a Start performance bar eagerly
On the issues page (for instance), we have an `Issue` class. The constructor for
that class makes some calls to get things like related branches using Axios.
However, those calls were happening before the performance bar app was mounted,
and so the interceptor wasn't configured - meaning we missed out on the
performance data for those calls.

This changes the performance bar app to be loaded eagerly instead of lazily,
which solves that problem - related branches calls will now show up in the
performance bar.

The downside is that now the performance bar app is always imported, even when
it's not used. However, it appears to be part of the main app bundle anyway, so
this shouldn't affect the size of our assets.
2018-06-27 12:04:25 +01:00

89 lines
2.2 KiB
JavaScript

/* eslint-disable consistent-return, no-new */
import $ from 'jquery';
import GfmAutoComplete from './gfm_auto_complete';
import { convertPermissionToBoolean } from './lib/utils/common_utils';
import GlFieldErrors from './gl_field_errors';
import Shortcuts from './shortcuts';
import SearchAutocomplete from './search_autocomplete';
import performanceBar from './performance_bar';
function initSearch() {
// Only when search form is present
if ($('.search').length) {
return new SearchAutocomplete();
}
}
function initFieldErrors() {
$('.gl-show-field-errors').each((i, form) => {
new GlFieldErrors(form);
});
}
function initPageShortcuts(page) {
const pagesWithCustomShortcuts = [
'projects:activity',
'projects:artifacts:browse',
'projects:artifacts:file',
'projects:blame:show',
'projects:blob:show',
'projects:commit:show',
'projects:commits:show',
'projects:find_file:show',
'projects:issues:edit',
'projects:issues:index',
'projects:issues:new',
'projects:issues:show',
'projects:merge_requests:creations:diffs',
'projects:merge_requests:creations:new',
'projects:merge_requests:edit',
'projects:merge_requests:index',
'projects:merge_requests:show',
'projects:network:show',
'projects:show',
'projects:tree:show',
'groups:show',
];
if (pagesWithCustomShortcuts.indexOf(page) === -1) {
new Shortcuts();
}
}
function initGFMInput() {
$('.js-gfm-input:not(.js-vue-textarea)').each((i, el) => {
const gfm = new GfmAutoComplete(
gl.GfmAutoComplete && gl.GfmAutoComplete.dataSources,
);
const enableGFM = convertPermissionToBoolean(
el.dataset.supportsAutocomplete,
);
gfm.setup($(el), {
emojis: true,
members: enableGFM,
issues: enableGFM,
milestones: enableGFM,
mergeRequests: enableGFM,
labels: enableGFM,
});
});
}
function initPerformanceBar() {
if (document.querySelector('#js-peek')) {
performanceBar({ container: '#js-peek' });
}
}
export default () => {
initSearch();
initFieldErrors();
const page = $('body').attr('data-page');
if (page) {
initPageShortcuts(page);
initGFMInput();
initPerformanceBar();
}
};