X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/ab07f7df6cc4b60768d385064a970d05db8234eb..refs/pull/479/head:/resources/assets/js/global.js diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 28d1e3b0c..ee7cf3cc1 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -9,6 +9,31 @@ window.baseUrl = function(path) { return basePath + '/' + path; }; +// Global Event System +class EventManager { + constructor() { + this.listeners = {}; + } + + emit(eventName, eventData) { + if (typeof this.listeners[eventName] === 'undefined') return this; + let eventsToStart = this.listeners[eventName]; + for (let i = 0; i < eventsToStart.length; i++) { + let event = eventsToStart[i]; + event(eventData); + } + return this; + } + + listen(eventName, callback) { + if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = []; + this.listeners[eventName].push(callback); + return this; + } +} + +window.Events = new EventManager(); + const Vue = require("vue"); const axios = require("axios"); @@ -18,8 +43,17 @@ let axiosInstance = axios.create({ 'baseURL': window.baseUrl('') } }); +axiosInstance.interceptors.request.use(resp => { + return resp; +}, err => { + if (typeof err.response === "undefined" || typeof err.response.data === "undefined") return Promise.reject(err); + if (typeof err.response.data.error !== "undefined") window.Events.emit('error', err.response.data.error); + if (typeof err.response.data.message !== "undefined") window.Events.emit('error', err.response.data.message); +}); window.$http = axiosInstance; + Vue.prototype.$http = axiosInstance; +Vue.prototype.$events = window.Events; // AngularJS - Create application and load components @@ -37,31 +71,6 @@ const Translations = require("./translations"); let translator = new Translations(window.translations); window.trans = translator.get.bind(translator); -// Global Event System -class EventManager { - constructor() { - this.listeners = {}; - } - - emit(eventName, eventData) { - if (typeof this.listeners[eventName] === 'undefined') return this; - let eventsToStart = this.listeners[eventName]; - for (let i = 0; i < eventsToStart.length; i++) { - let event = eventsToStart[i]; - event(eventData); - } - return this; - } - - listen(eventName, callback) { - if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = []; - this.listeners[eventName].push(callback); - return this; - } -} - -window.Events = new EventManager(); -Vue.prototype.$events = window.Events; require("./vues/vues"); require("./components");