Merge remote-tracking branch 'syncthing/pr/1636' into pr-1636

* syncthing/pr/1636:
  fix using detect localStorage
This commit is contained in:
Jakob Borg 2015-04-16 23:32:48 +09:00
commit a876e1e348

View File

@ -18,6 +18,20 @@ angular.module('syncthing.core')
_availableLocales = locales; _availableLocales = locales;
}; };
function isLocalStorageEnabled () {
// Feature detect localStorage; https://mathiasbynens.be/notes/localstorage-pattern
try {
var uid = new Date();
var storage = window.localStorage;
storage.setItem(uid, uid);
var success = storage.getItem(uid) == uid;
storage.removeItem(uid);
return success;
} catch (exception) {
return false;
}
}
this.$get = ['$http', '$translate', '$location', function ($http, $translate, $location) { this.$get = ['$http', '$translate', '$location', function ($http, $translate, $location) {
/** /**
@ -32,22 +46,10 @@ angular.module('syncthing.core')
} }
function autoConfigLocale() { function autoConfigLocale() {
// Feature detect localStorage; https://mathiasbynens.be/notes/localstorage-pattern
var storage;
var fail;
var uid;
try {
uid = new Date;
(storage = window.localStorage).setItem(uid, uid);
fail = storage.getItem(uid) != uid;
storage.removeItem(uid);
fail && (storage = false);
} catch (exception) {}
var params = $location.search(); var params = $location.search();
var savedLang; var savedLang;
if (storage) { if (isLocalStorageEnabled()) {
savedLang = storage[_SYNLANG]; savedLang = localStorage[_SYNLANG];
} }
if(params.lang) { if(params.lang) {
@ -99,7 +101,7 @@ angular.module('syncthing.core')
function useLocale(language, save2Storage) { function useLocale(language, save2Storage) {
if (language) { if (language) {
$translate.use(language).then(function () { $translate.use(language).then(function () {
if (save2Storage && typeof(localStorage) != 'undefined') if (save2Storage && isLocalStorageEnabled())
localStorage[_SYNLANG] = language; localStorage[_SYNLANG] = language;
}); });
} }