Browse Source

Fix race condition when applying background image. Fix bug in session selection that made it necessary to manually select session at every login.

sisyphus
Dustin Falgout 7 years ago
parent
commit
33ea53809a
No known key found for this signature in database
GPG Key ID: AEA529BF122902E5
  1. 32
      themes/default/js/greeter.js

32
themes/default/js/greeter.js vendored

@ -87,11 +87,19 @@ class ThemeConfig {
this.cache_backend = ''; this.cache_backend = '';
this.setup_cache_backend(); this.setup_cache_backend();
this.init_config_values();
return _config; return _config;
} }
/**
* Determine which background image should be displayed and apply it.
*
* @return {Promise}
*/
initialize() {
return new Promise( resolve => this.init_config_values( resolve ) );
}
setup_cache_backend() { setup_cache_backend() {
// Do we have access to localStorage? // Do we have access to localStorage?
try { try {
@ -175,10 +183,12 @@ class ThemeConfig {
/** /**
* Get some values from `web-greeter.conf` and save them for later. * Get some values from `web-greeter.conf` and save them for later.
*
* @param {Promise.resolve} callback
*/ */
init_config_values() { init_config_values( callback ) {
if ( 'undefined' === typeof( greeter_config ) ) { if ( 'undefined' === typeof( greeter_config ) ) {
greeter_config = { branding: {}, greeter: {} }; window.greeter_config = { branding: {}, greeter: {} };
} }
this.logo = greeter_config.branding.logo || 'img/antergos.png'; this.logo = greeter_config.branding.logo || 'img/antergos.png';
@ -192,10 +202,13 @@ class ThemeConfig {
if ( ! expired || ! this.background_images_dir ) { if ( ! expired || ! this.background_images_dir ) {
this.background_images = JSON.parse( this.background_images ); this.background_images = JSON.parse( this.background_images );
return; return callback();
} }
theme_utils.dirlist( this.background_images_dir, true, result => this.cache_background_images(result) ); theme_utils.dirlist( this.background_images_dir, true, result => {
this.cache_background_images( result );
return callback();
} );
} }
cache_background_images( result ) { cache_background_images( result ) {
@ -451,10 +464,10 @@ class Theme {
if ( null === last_session ) { if ( null === last_session ) {
// This user has never logged in before let's enable the system's default session. // This user has never logged in before let's enable the system's default session.
last_session = _config._set( lightdm.default_session, 'user', user.name, 'session' ); last_session = _config._set( lightdm.default_session, 'user', user.username, 'session' );
} }
log( `Last session for ${user.name} was: ${last_session}` ); log( `Last session for ${user.username} was: ${last_session}` );
template = ` template = `
<a href="#" id="${user.username}" class="list-group-item ${user.username}" data-session="${last_session}"> <a href="#" id="${user.username}" class="list-group-item ${user.username}" data-session="${last_session}">
@ -874,6 +887,7 @@ class Theme {
* Initialize the theme once the window has loaded. * Initialize the theme once the window has loaded.
*/ */
$( window ).on( 'GreeterReady', () => { $( window ).on( 'GreeterReady', () => {
new ThemeConfig(); const config = new ThemeConfig();
new Theme();
config.initialize().then( () => new Theme() );
} ); } );

Loading…
Cancel
Save