Use Map to store variants

This commit is contained in:
Romain Vigier
2020-02-27 10:02:06 +01:00
parent 18abccfb20
commit b052d85b43
18 changed files with 149 additions and 151 deletions
+3 -3
View File
@@ -69,13 +69,13 @@ var Nightlighter = class {
log_debug('Nightlighter disabled.');
}
get status() {
get time() {
if ( this.dbus_proxy ) {
try {
return this.dbus_proxy.get_cached_property('NightLightActive').get_boolean();
return this.dbus_proxy.get_cached_property('NightLightActive').get_boolean() ? 'night' : 'day';
}
catch(e) {
return false; // Sometimes when Night Light hasn't changed colors yet it returns an error, we consider it is inactive.
return 'day'; // Sometimes when Night Light hasn't changed colors yet it returns an error, we consider it is inactive.
}
}
}
+3 -3
View File
@@ -63,7 +63,7 @@ var Switcher = class {
this.nightlight.enable();
this.nightlight.subscribe(this._on_nightlight_change.bind(this));
this.theme.set_variant(this.nightlight.status);
this.theme.set_variant(this.nightlight.time);
log_debug('Extension enabled.');
}
catch(e) {
@@ -95,11 +95,11 @@ var Switcher = class {
_on_theme_change() {
this.theme.update_variants();
this.theme.set_variant(this.nightlight.status);
this.theme.set_variant(this.nightlight.time);
}
_on_nightlight_change() {
this.theme.set_variant(this.nightlight.status);
this.theme.set_variant(this.nightlight.time);
}
}
+7 -9
View File
@@ -77,23 +77,21 @@ var Themer = class {
}
}
set_variant(night) {
if ( night !== undefined && this.variants ) {
this.current = night ? this.variants.night : this.variants.day;
set_variant(variant) {
if ( variant && this.variants ) {
this.current = this.variants.get(variant);
}
}
reset_theme() {
if ( this.variants ) {
this.current = this.variants.original;
log_debug('Theme has been reset to the user\'s original variant.')
}
this.set_variant('original');
log_debug('Theme has been reset to the user\'s original variant.')
}
update_variants() {
if ( this.variants ) {
const new_theme = this.current;
if ( new_theme && new_theme !== this.variants.day && new_theme !== this.variants.night ) {
if ( new_theme && new_theme !== this.variants.get('day') && new_theme !== this.variants.get('night') ) {
this._update_variants();
}
}
@@ -102,7 +100,7 @@ var Themer = class {
_update_variants() {
if ( this.current ) {
this.variants = Variants.guess_from(this.current);
log_debug('Variants updated: ' + JSON.stringify(this.variants));
log_debug('Variants updated: ' + this.variants);
}
}
+20 -20
View File
@@ -45,48 +45,48 @@ Dark variants, from the most the least generic:
var Variants = class {
static guess_from(name) {
const variants = {};
variants.original = name;
const variants = new Map();
variants.set('original', name);
if ( name.includes('Adapta') ) {
variants.day = name.replace('-Nokto', '');
variants.night = variants.day.replace('Adapta', 'Adapta-Nokto');
variants.set('day', name.replace('-Nokto', ''));
variants.set('night', variants.get('day').replace('Adapta', 'Adapta-Nokto'));
}
else if ( name.includes('Arc') ) {
variants.day = name.replace(/-Dark(?!er)/, '');
variants.night = variants.day.replace(/Arc(-Darker)?/, 'Arc-Dark');
variants.set('day', name.replace(/-Dark(?!er)/, ''));
variants.set('night', variants.get('day').replace(/Arc(-Darker)?/, 'Arc-Dark'));
}
else if ( name.match(/^(Canta|Materia).*-compact/) ) {
variants.day = name.replace('-dark', '');
variants.night = variants.day.replace(/(-light)?-compact/, '-dark-compact');
variants.set('day', name.replace('-dark', ''));
variants.set('night', variants.get('day').replace(/(-light)?-compact/, '-dark-compact'));
}
else if ( name.includes('Flat-Remix-GTK') ) {
const isSolid = name.includes('-Solid');
const withoutBorder = name.includes('-NoBorder');
const basename = name.split('-').slice(0, 4).join('-');
variants.day = basename + (name.includes('-Darker') ? '-Darker' : '') + (isSolid ? '-Solid' : '');
variants.night = basename + (name.includes('-Darkest') ? '-Darkest' : '-Dark') + (isSolid ? '-Solid' : '') + (withoutBorder ? '-NoBorder' : '');
variants.set('day', basename + (name.includes('-Darker') ? '-Darker' : '') + (isSolid ? '-Solid' : ''));
variants.set('night', basename + (name.includes('-Darkest') ? '-Darkest' : '-Dark') + (isSolid ? '-Solid' : '') + (withoutBorder ? '-NoBorder' : ''));
}
else if ( name.includes('HighContrast') ) {
variants.day = 'HighContrast';
variants.night = 'HighContrastInverse';
variants.set('day', 'HighContrast');
variants.set('night', 'HighContrastInverse');
}
else if ( name.match(/^(Layan|Matcha)/) ) {
const basename = name.split('-')[0];
variants.day = name.replace('-dark', '');
variants.night = variants.day.replace(new RegExp(`${basename}(-light)?`), `${basename}-dark`);
variants.set('day', name.replace('-dark', ''));
variants.set('night', variants.get('day').replace(new RegExp(`${basename}(-light)?`), `${basename}-dark`));
}
else if ( name.includes('Mojave') ) {
variants.day = name.replace('-dark', '-light');
variants.night = variants.day.replace('-light', '-dark');
variants.set('day', name.replace('-dark', '-light'));
variants.set('night', variants.get('day').replace('-light', '-dark'));
}
else if ( name.includes('vimix') ) {
variants.day = name.replace('-dark', '');
variants.night = variants.day.replace(/vimix(-light)?/, 'vimix-dark');
variants.set('day', name.replace('-dark', ''));
variants.set('night', variants.get('day').replace(/vimix(-light)?/, 'vimix-dark'));
}
else {
variants.day = name.replace(/-dark(?!er)(est)?/, '');
variants.night = variants.day.replace(/(-light|-darker)/, '') + (name.includes('-darkest') ? '-darkest' : '-dark');
variants.set('day', name.replace(/-dark(?!er)(est)?/, ''));
variants.set('night', variants.get('day').replace(/(-light|-darker)/, '') + (name.includes('-darkest') ? '-darkest' : '-dark'));
}
return variants;