From 6b6802a27a32e2a3d35ea31963129c03aaddbe58 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 16 Jan 2015 16:47:57 -0700 Subject: [PATCH 1/2] refactor(config): move httpInterceptor from website/app.js to habitrpg-shared/config.js. Will merge in mobile soon --- script/config.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 script/config.js diff --git a/script/config.js b/script/config.js new file mode 100644 index 0000000000..3008aff167 --- /dev/null +++ b/script/config.js @@ -0,0 +1,45 @@ +'use strict'; +angular.module('habitrpg').config(['$httpProvider', function($httpProvider){ + $httpProvider.interceptors.push(['$q', '$rootScope', function($q, $rootScope){ + return { + response: function(response) { + return response; + }, + responseError: function(response) { + // Offline + if (response.status == 0 || + // don't know why we're getting 404 here, should be 0 + (response.status == 404 && _.isEmpty(response.data))) { + $rootScope.$broadcast('responseText', window.env.t('serverUnreach')); + + // Needs refresh + } else if (response.needRefresh) { + $rootScope.$broadcast('responseError', "The site has been updated and the page needs to refresh. The last action has not been recorded, please refresh and try again."); + + } else if (response.data.code && response.data.code === 'ACCOUNT_SUSPENDED') { + confirm(response.data.err); + localStorage.clear(); + window.location.href = '/logout'; + + // 400 range? + } else if (response.status < 500) { + $rootScope.$broadcast('responseText', response.data.err || response.data); + // Need to reject the prompse so the error is handled correctly + if (response.status === 401) { + return $q.reject(response); + } + + // Error + } else { + var error = 'Please reload, ' + + '"'+window.env.t('error')+' '+(response.data.err || response.data || 'something went wrong')+'" ' + + window.env.t('seeConsole'); + $rootScope.$broadcast('responseError', error); + console.error(response); + } + + return $q.reject(response); + } + }; + }]); +}]); \ No newline at end of file From dbeb6f8c1e8d47d429af83f15a776911467d54a3 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 16 Jan 2015 18:16:56 -0700 Subject: [PATCH 2/2] refactor(config): add mobile --- script/config.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/script/config.js b/script/config.js index 3008aff167..fca510da0f 100644 --- a/script/config.js +++ b/script/config.js @@ -6,34 +6,39 @@ angular.module('habitrpg').config(['$httpProvider', function($httpProvider){ return response; }, responseError: function(response) { + var mobileApp = !!window.env.appVersion; + // Offline if (response.status == 0 || // don't know why we're getting 404 here, should be 0 (response.status == 404 && _.isEmpty(response.data))) { - $rootScope.$broadcast('responseText', window.env.t('serverUnreach')); - // Needs refresh + if (!mobileApp) // skip mobile, queue actions + $rootScope.$broadcast('responseText', window.env.t('serverUnreach')); + + // Needs refresh } else if (response.needRefresh) { - $rootScope.$broadcast('responseError', "The site has been updated and the page needs to refresh. The last action has not been recorded, please refresh and try again."); + if (!mobileApp) // skip mobile for now + $rootScope.$broadcast('responseError', "The site has been updated and the page needs to refresh. The last action has not been recorded, please refresh and try again."); } else if (response.data.code && response.data.code === 'ACCOUNT_SUSPENDED') { confirm(response.data.err); localStorage.clear(); - window.location.href = '/logout'; + window.location.href = mobileApp ? '/app/login' : '/logout'; //location.reload() - // 400 range? + // 400 range? } else if (response.status < 500) { $rootScope.$broadcast('responseText', response.data.err || response.data); // Need to reject the prompse so the error is handled correctly - if (response.status === 401) { + if (response.status === 401) return $q.reject(response); - } - // Error + // Error } else { var error = 'Please reload, ' + '"'+window.env.t('error')+' '+(response.data.err || response.data || 'something went wrong')+'" ' + window.env.t('seeConsole'); + if (mobileApp) error = 'Error contacting the server. Please try again in a few minutes.'; $rootScope.$broadcast('responseError', error); console.error(response); }