85 lines
1.7 KiB
JavaScript
85 lines
1.7 KiB
JavaScript
|
class Extension {
|
||
|
constructor(dnd, toggle, indicator, remote, audio){
|
||
|
this.dnd = dnd;
|
||
|
this.toggle = toggle;
|
||
|
this.indicator = indicator;
|
||
|
this.remote = remote;
|
||
|
this.audio = audio;
|
||
|
|
||
|
this.enabled = false;
|
||
|
|
||
|
this.toggle.setToggleState(this.dnd.isEnabled());
|
||
|
this.toggle.show();
|
||
|
this.toggle.onToggleStateChanged(() => {
|
||
|
if (this.toggle.getToggleState()){
|
||
|
this.enable();
|
||
|
} else {
|
||
|
this.disable();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// this.dndID = this.dnd.addStatusListener((dndEnabled) => this._setDND(dndEnabled));
|
||
|
|
||
|
this.remoteID = this.remote.addRemoteListener((dndEnabled) => this._setDND(dndEnabled));
|
||
|
|
||
|
this._setDND(this.remote.getRemote());
|
||
|
}
|
||
|
|
||
|
_setDND(enabled){
|
||
|
if (enabled){
|
||
|
this.enable();
|
||
|
} else {
|
||
|
this.disable();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Enable do not disturb mode
|
||
|
*/
|
||
|
enable(){
|
||
|
if (this.enabled){
|
||
|
return;
|
||
|
}
|
||
|
this.enabled = true;
|
||
|
this.dnd.enable();
|
||
|
this.toggle.setToggleState(true);
|
||
|
this.indicator.show();
|
||
|
this.remote.setRemote(true);
|
||
|
this.audio.mute();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Disable do not disturb mode
|
||
|
*/
|
||
|
disable(){
|
||
|
if (!this.enabled){
|
||
|
return;
|
||
|
}
|
||
|
this.enabled = false;
|
||
|
this.dnd.disable();
|
||
|
this.toggle.setToggleState(false);
|
||
|
this.indicator.hide();
|
||
|
this.remote.setRemote(false);
|
||
|
this.audio.unmute();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return {Boolean} true if it is enabled, otherwise false
|
||
|
*/
|
||
|
isEnabled(){
|
||
|
return this.enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Destroy the extension and its components
|
||
|
*/
|
||
|
destroy(){
|
||
|
this.enabled = false;
|
||
|
// this.dnd.removeStatusListener(this.dndID);
|
||
|
this.remote.removeRemoteListener(this.remoteID);
|
||
|
this.toggle.destroy();
|
||
|
this.indicator.destroy();
|
||
|
this.dnd.disable();
|
||
|
}
|
||
|
}
|