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
*/
onSelect: function ( language ) {
var previousLanguages = mw.uls.getPreviousLanguages();
self.$trigger.removeClass( 'selector-open' );
previousLanguages.push( language );
previousLanguages = unique( previousLanguages );
mw.uls.setPreviousLanguages( previousLanguages );
mw.uls.addPreviousLanguage( language );
location.href = self.interlanguageList[ language ].href;
},
onVisible: function () {

View File

@@ -72,7 +72,7 @@
try {
localStorage.setItem(
mw.uls.previousLanguagesStorageKey,
JSON.stringify( previousLanguages.slice( -5 ) )
JSON.stringify( previousLanguages.slice( 0, 5 ) )
);
} catch ( e ) {}
};
@@ -87,7 +87,24 @@
);
} 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() {
var previousLang = mw.uls.getPreviousLanguages().slice( -1 )[ 0 ],
var previousLang = mw.uls.getPreviousLanguages()[ 0 ],
currentLang = mw.config.get( 'wgUserLanguage' );
// Changed language is saved in showUndoTooltip, which is never
// called if previousLang is not defined, which will never be
// defined unless we do it now.
if ( previousLang === undefined ) {
mw.uls.setPreviousLanguages( [ currentLang ] );
mw.uls.addPreviousLanguage( currentLang );
}
return previousLang && previousLang !== currentLang;
@@ -275,10 +275,9 @@
}
previousLanguages = mw.uls.getPreviousLanguages();
previousLang = previousLanguages.slice( -1 )[ 0 ];
previousLang = previousLanguages[ 0 ];
previousLanguages.push( currentLang );
mw.uls.setPreviousLanguages( previousLanguages );
mw.uls.addPreviousLanguage( currentLang );
getUndoAutonym( previousLang ).done( function ( autonym ) {
// Attach a tipsy tooltip to the trigger