Make previous languages have most recent in the beginning

This is already expected by the callers. Added addPreviousLanguage
to make updating the list easier.

Change-Id: Ie4f888235ea4de4a2ce6bf5a9f24955e423e8c48
This commit is contained in:
Niklas Laxström
2016-05-19 10:56:59 +02:00
parent e2cf4e5255
commit 4f82a8650a
3 changed files with 24 additions and 13 deletions

View File

@@ -121,13 +121,8 @@
* @param {string} language language code * @param {string} language language code
*/ */
onSelect: function ( language ) { onSelect: function ( language ) {
var previousLanguages = mw.uls.getPreviousLanguages();
self.$trigger.removeClass( 'selector-open' ); self.$trigger.removeClass( 'selector-open' );
mw.uls.addPreviousLanguage( language );
previousLanguages.push( language );
previousLanguages = unique( previousLanguages );
mw.uls.setPreviousLanguages( previousLanguages );
location.href = self.interlanguageList[ language ].href; location.href = self.interlanguageList[ language ].href;
}, },
onVisible: function () { onVisible: function () {

View File

@@ -72,7 +72,7 @@
try { try {
localStorage.setItem( localStorage.setItem(
mw.uls.previousLanguagesStorageKey, mw.uls.previousLanguagesStorageKey,
JSON.stringify( previousLanguages.slice( -5 ) ) JSON.stringify( previousLanguages.slice( 0, 5 ) )
); );
} catch ( e ) {} } catch ( e ) {}
}; };
@@ -87,7 +87,24 @@
); );
} catch ( e ) {} } catch ( e ) {}
return previousLanguages.slice( -5 ); return previousLanguages.slice( 0, 5 );
};
/**
* Add a selected language to the list of previously selected languages.
*
* @param {string} language Language code.
* @since 2016.05
*/
mw.uls.addPreviousLanguage = function ( language ) {
var languages = mw.uls.getPreviousLanguages();
// Avoid duplicates
languages = $.map( languages, function ( element ) {
return element === language ? undefined : element;
} );
languages.unshift( language );
mw.uls.setPreviousLanguages( languages );
}; };
/** /**

View File

@@ -203,14 +203,14 @@
} }
function userHasChangedLanguage() { function userHasChangedLanguage() {
var previousLang = mw.uls.getPreviousLanguages().slice( -1 )[ 0 ], var previousLang = mw.uls.getPreviousLanguages()[ 0 ],
currentLang = mw.config.get( 'wgUserLanguage' ); currentLang = mw.config.get( 'wgUserLanguage' );
// Changed language is saved in showUndoTooltip, which is never // Changed language is saved in showUndoTooltip, which is never
// called if previousLang is not defined, which will never be // called if previousLang is not defined, which will never be
// defined unless we do it now. // defined unless we do it now.
if ( previousLang === undefined ) { if ( previousLang === undefined ) {
mw.uls.setPreviousLanguages( [ currentLang ] ); mw.uls.addPreviousLanguage( currentLang );
} }
return previousLang && previousLang !== currentLang; return previousLang && previousLang !== currentLang;
@@ -275,10 +275,9 @@
} }
previousLanguages = mw.uls.getPreviousLanguages(); previousLanguages = mw.uls.getPreviousLanguages();
previousLang = previousLanguages.slice( -1 )[ 0 ]; previousLang = previousLanguages[ 0 ];
previousLanguages.push( currentLang ); mw.uls.addPreviousLanguage( currentLang );
mw.uls.setPreviousLanguages( previousLanguages );
getUndoAutonym( previousLang ).done( function ( autonym ) { getUndoAutonym( previousLang ).done( function ( autonym ) {
// Attach a tipsy tooltip to the trigger // Attach a tipsy tooltip to the trigger