Add more info to state.js state change event

This commit is contained in:
chylex 2016-10-24 23:32:49 +02:00
parent 83c8beac2d
commit d9426f1f53

View File

@ -1,9 +1,9 @@
var STATE = (function(){ var STATE = (function(){
var stateChangedEvents = []; var stateChangedEvents = [];
var triggerStateChanged = function(){ var triggerStateChanged = function(changeType, changeDetail){
for(var callback of stateChangedEvents){ for(var callback of stateChangedEvents){
callback(); callback(changeType, changeDetail);
} }
}; };
@ -20,7 +20,7 @@ var STATE = (function(){
CLS.prototype.resetState = function(){ CLS.prototype.resetState = function(){
this._savefile = null; this._savefile = null;
this._isTracking = false; this._isTracking = false;
triggerStateChanged(); triggerStateChanged("data", "reset");
}; };
/* /*
@ -53,7 +53,7 @@ var STATE = (function(){
*/ */
CLS.prototype.toggleTracking = function(){ CLS.prototype.toggleTracking = function(){
this._isTracking = !this._isTracking; this._isTracking = !this._isTracking;
triggerStateChanged(); triggerStateChanged("tracking", this._isTracking);
}; };
/* /*
@ -61,7 +61,7 @@ var STATE = (function(){
*/ */
CLS.prototype.uploadSavefile = function(readFile){ CLS.prototype.uploadSavefile = function(readFile){
this.getSavefile().combineWith(readFile); this.getSavefile().combineWith(readFile);
triggerStateChanged(); triggerStateChanged("data", "upload");
}; };
/* /*
@ -80,7 +80,7 @@ var STATE = (function(){
var serverIndex = this.getSavefile().findOrRegisterServer(serverName, serverType); var serverIndex = this.getSavefile().findOrRegisterServer(serverName, serverType);
if (this.getSavefile().tryRegisterChannel(serverIndex, channelId, channelName) === true){ if (this.getSavefile().tryRegisterChannel(serverIndex, channelId, channelName) === true){
triggerStateChanged(); triggerStateChanged("data", "channel");
} }
}; };
@ -89,12 +89,13 @@ var STATE = (function(){
*/ */
CLS.prototype.addDiscordMessages = function(channelId, discordMessageArray){ CLS.prototype.addDiscordMessages = function(channelId, discordMessageArray){
if (this.getSavefile().addMessagesFromDiscord(channelId, discordMessageArray)){ if (this.getSavefile().addMessagesFromDiscord(channelId, discordMessageArray)){
triggerStateChanged(); triggerStateChanged("data", "messages");
} }
}; };
/* /*
* Adds a listener that is called whenever the state changes. If trigger is true, the callback is ran after adding it to the listener list. * Adds a listener that is called whenever the state changes. If trigger is true, the callback is ran after adding it to the listener list.
* The callback is a function that takes subject (generic type) and detail (specific type or data).
*/ */
CLS.prototype.onStateChanged = function(callback, trigger){ CLS.prototype.onStateChanged = function(callback, trigger){
stateChangedEvents.push(callback); stateChangedEvents.push(callback);