Use localStorage to store previous languages, not cookies

Automatically migrates data from uls-previous-language cookie to localStorage.
See associated bug for rationale.

Bug: T110353
Change-Id: Ib98499040b9edf4a1f1d9e3afd7661fc2d1f7fea
This commit is contained in:
Ori Livneh
2015-08-26 09:16:34 -07:00
parent 1c6472f794
commit 069fd2c454

View File

@@ -22,7 +22,7 @@
var hasOwn = Object.prototype.hasOwnProperty;
mw.uls = mw.uls || {};
mw.uls.previousLanguagesCookie = 'uls-previous-languages';
mw.uls.previousLanguagesStorageKey = 'uls-previous-languages';
mw.uls.previousLanguageAutonymCookie = 'uls-previous-language-autonym';
mw.uls.languageSettingsModules = [ 'ext.uls.inputsettings', 'ext.uls.displaysettings' ];
@@ -85,22 +85,33 @@
};
mw.uls.setPreviousLanguages = function ( previousLanguages ) {
$.cookie( mw.uls.previousLanguagesCookie,
JSON.stringify( previousLanguages ), {
path: '/'
}
try {
localStorage.setItem(
mw.uls.previousLanguagesStorageKey,
JSON.stringify( previousLanguages.slice( -5 ) )
);
} catch ( e ) {}
};
mw.uls.getPreviousLanguages = function () {
var previousLanguages = $.cookie( mw.uls.previousLanguagesCookie );
var previousLanguages = $.cookie( mw.uls.previousLanguagesStorageKey );
if ( !previousLanguages ) {
return [];
if ( $.isArray( previousLanguages ) ) {
// Migrate data from cookie to localStorage.
mw.uls.setPreviousLanguages( previousLanguages );
$.removeCookie( mw.uls.previousLanguagesStorageKey );
} else {
previousLanguages = [];
}
// return last 5 language changes
return JSON.parse( previousLanguages ).slice( -5 );
try {
previousLanguages.push.apply(
previousLanguages,
JSON.parse( localStorage.getItem( mw.uls.previousLanguagesStorageKey ) )
);
} catch ( e ) {}
return previousLanguages.slice( -5 );
};
/**