Use Map to store variants
This commit is contained in:
@@ -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.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user