2018-10-19 05:15:28 +00:00
|
|
|
import Vue from 'vue';
|
2020-10-08 17:55:26 +00:00
|
|
|
import { BootstrapVue } from 'bootstrap-vue';
|
2020-08-26 23:31:39 +00:00
|
|
|
import 'bootstrap-vue/dist/bootstrap-vue.css';
|
2018-10-25 06:33:15 +00:00
|
|
|
import VueAxios from 'vue-axios';
|
|
|
|
import VueFire from 'vuefire';
|
2018-10-19 05:15:28 +00:00
|
|
|
import VueI18n from 'vue-i18n';
|
2020-10-14 00:10:52 +00:00
|
|
|
import ModalHeader from '@/components/ModalHeader';
|
2018-10-25 06:33:15 +00:00
|
|
|
import axios from 'axios';
|
2018-11-05 02:28:29 +00:00
|
|
|
import VueAnalytics from 'vue-analytics';
|
2018-11-08 03:41:27 +00:00
|
|
|
import Raven from 'raven-js';
|
|
|
|
import RavenVue from 'raven-js/plugins/vue';
|
2021-02-01 20:46:20 +00:00
|
|
|
import VueObserveVisibility from 'vue-observe-visibility';
|
2020-08-18 18:56:10 +00:00
|
|
|
import App from '@/App';
|
|
|
|
import messages from '@/i18n/';
|
|
|
|
import store from '@/store/';
|
|
|
|
import router from '@/router';
|
2020-08-25 23:36:39 +00:00
|
|
|
import bootstrapSettings from '@/bootstrapSettings';
|
2018-10-19 05:15:28 +00:00
|
|
|
|
|
|
|
const EventBus = new Vue();
|
|
|
|
|
|
|
|
Object.defineProperties(Vue.prototype, {
|
2019-11-08 19:56:03 +00:00
|
|
|
$bus: {
|
|
|
|
get() {
|
|
|
|
return EventBus;
|
2018-10-19 05:15:28 +00:00
|
|
|
},
|
2019-11-08 19:56:03 +00:00
|
|
|
},
|
2018-10-19 05:15:28 +00:00
|
|
|
});
|
|
|
|
|
2021-02-01 20:46:20 +00:00
|
|
|
Vue.use(VueObserveVisibility);
|
2020-08-25 23:36:39 +00:00
|
|
|
Vue.use(BootstrapVue, bootstrapSettings);
|
2019-06-18 21:15:14 +00:00
|
|
|
Vue.use(VueAnalytics, { id: 'UA-120053966-1', router });
|
2018-10-25 06:33:15 +00:00
|
|
|
Vue.use(VueAxios, axios);
|
|
|
|
Vue.use(VueFire);
|
|
|
|
Vue.use(VueI18n);
|
2020-10-14 00:10:52 +00:00
|
|
|
Vue.component('modal-header', ModalHeader);
|
2018-10-19 05:15:28 +00:00
|
|
|
|
2021-01-26 16:25:34 +00:00
|
|
|
if (window.location.hostname.includes('gamebrary')) {
|
2019-11-08 19:56:03 +00:00
|
|
|
Raven
|
|
|
|
.config('https://15928bc58e7b45ac93878da6d8146064@sentry.io/1315568')
|
|
|
|
.addPlugin(RavenVue, Vue)
|
|
|
|
.install();
|
2018-11-08 03:41:27 +00:00
|
|
|
}
|
|
|
|
|
2018-10-19 05:15:28 +00:00
|
|
|
Vue.config.productionTip = false;
|
|
|
|
|
|
|
|
router.beforeEach((to, from, next) => {
|
2020-09-28 23:27:32 +00:00
|
|
|
if (to.meta && to.meta.title) {
|
|
|
|
document.title = `${to.meta.title} - Gamebrary`;
|
2019-11-08 19:56:03 +00:00
|
|
|
}
|
2020-09-28 23:27:32 +00:00
|
|
|
|
|
|
|
next();
|
2018-10-19 05:15:28 +00:00
|
|
|
});
|
|
|
|
|
2019-06-22 12:43:51 +00:00
|
|
|
const vuexStorage = localStorage && localStorage.vuex
|
2019-11-08 19:56:03 +00:00
|
|
|
? JSON.parse(localStorage.vuex)
|
2020-08-26 23:31:39 +00:00
|
|
|
: {};
|
|
|
|
|
2021-01-26 16:26:14 +00:00
|
|
|
if (vuexStorage && vuexStorage.user && window.FS && window.location.hostname.includes('gamebrary')) {
|
2019-11-08 19:56:03 +00:00
|
|
|
const { displayName, email, dateJoined } = vuexStorage.user;
|
2019-06-25 17:58:06 +00:00
|
|
|
|
2019-11-08 19:56:03 +00:00
|
|
|
window.FS.identify(vuexStorage.user.uid, { displayName, email, dateJoined });
|
2019-06-25 17:58:06 +00:00
|
|
|
}
|
|
|
|
|
2019-06-22 12:58:38 +00:00
|
|
|
const locale = vuexStorage && vuexStorage.settings && vuexStorage.settings.language
|
2019-11-08 19:56:03 +00:00
|
|
|
? vuexStorage.settings.language
|
|
|
|
: 'en';
|
2019-05-18 14:21:40 +00:00
|
|
|
|
2019-06-18 23:46:29 +00:00
|
|
|
const i18n = new VueI18n({ locale, messages });
|
2018-10-19 05:15:28 +00:00
|
|
|
|
|
|
|
/* eslint-disable no-new */
|
|
|
|
new Vue({
|
2019-11-08 19:56:03 +00:00
|
|
|
el: '#app',
|
|
|
|
router,
|
|
|
|
i18n,
|
|
|
|
store,
|
|
|
|
components: { App },
|
|
|
|
template: '<App/>',
|
2018-10-19 05:15:28 +00:00
|
|
|
});
|
2019-11-08 20:34:06 +00:00
|
|
|
|