diff options
Diffstat (limited to 'js/app/Config.js')
-rw-r--r-- | js/app/Config.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/js/app/Config.js b/js/app/Config.js index 415fd9d3b..69d12f9d2 100644 --- a/js/app/Config.js +++ b/js/app/Config.js @@ -44,7 +44,38 @@ app.config(function ($routeProvider, $provide, $httpProvider) { } }; }); + $provide.factory('ConnectionErrorInterceptor', function ($q, $timeout) { + var timer; + return { + responseError: function (response) { + var messages = { + 0: t('news', 'Request failed, network connection ' + + 'unavailable!'), + 401: t('news', 'Request unauthorized. Are you logged in?'), + 403: t('news', 'Request forbidden. Are you an admin?'), + 412: t('news', 'Token expired or app not enabled! ' + + 'Try to reload the page!'), + 500: t('news', 'Internal server error! Please check your ' + + 'data/owncloud.log file for additional ' + + 'information!') + }; + // status 0 is a network error + if (response.status in messages) { + if (timer) { + $timeout.cancel(timer); + } + OC.Notification.hide(); + OC.Notification.showHtml(messages[response.status]); + timer = $timeout(function () { + OC.Notification.hide(); + }, 5000); + } + return $q.reject(response); + } + }; + }); $httpProvider.interceptors.push('CSRFInterceptor'); + $httpProvider.interceptors.push('ConnectionErrorInterceptor'); // routing var getItemResolve = function (type) { |