sensortools - Fix sensortools breaking Bangle.emit with multiple arguments (e.g. "message")

pull/2911/head
Martin Boonk 2023-07-26 20:06:42 +02:00
parent 61a3b406af
commit a2d1b9c0fb
3 changed files with 20 additions and 12 deletions

View File

@ -4,3 +4,4 @@
0.04: Correct type of time attribute in gps to Date 0.04: Correct type of time attribute in gps to Date
0.05: Fix gps emulation interpolation 0.05: Fix gps emulation interpolation
Add setting for log output Add setting for log output
0.06: Fix sensortools breaking Bangle.emit with multiple arguments (e.g. "message")

View File

@ -20,37 +20,44 @@ exports.enable = () => {
Bangle.sensortoolsOrigEmit = Bangle.emit; Bangle.sensortoolsOrigEmit = Bangle.emit;
Bangle.sensortoolsOrigRemoveListener = Bangle.removeListener; Bangle.sensortoolsOrigRemoveListener = Bangle.removeListener;
const modifyArguments = function(args, value) {
if (args.length >= 1)
args[0] = value;
return args;
};
Bangle.on = function(name, callback) { Bangle.on = function(name, callback) {
if (onEvents[name]) { if (onEvents[name]) {
log("Redirecting listener for", name, "to", name + "_mod"); log("Redirecting listener for", name, "to", name + "_mod");
Bangle.sensortoolsOrigOn(name + "_mod", callback); let origName = name;
Bangle.sensortoolsOrigOn(name, (e) => { Bangle.sensortoolsOrigOn(origName, (e) => {
log("Redirected event for", name, "to", name + "_mod"); log("Redirected event for", origName, "to", origName + "_mod");
Bangle.sensortoolsOrigEmit(name + "_mod", onEvents[name](e)); Bangle.sensortoolsOrigEmit(origName + "_mod", onEvents[origName](e));
}); });
Bangle.sensortoolsOrigOn.apply(this, modifyArguments(arguments, name + "_mod"));
} else { } else {
log("Pass through on call for", name, callback); log("Pass through on call for", name, callback);
Bangle.sensortoolsOrigOn(name, callback); Bangle.sensortoolsOrigOn.apply(this, arguments);
} }
}; };
Bangle.removeListener = function(name, callback) { Bangle.removeListener = function(name) {
if (onEvents[name]) { if (onEvents[name]) {
log("Removing augmented listener for", name, onEvents[name]); log("Removing augmented listener for", name, onEvents[name]);
Bangle.sensortoolsOrigRemoveListener(name + "_mod", callback); Bangle.sensortoolsOrigRemoveListener.apply(this, modifyArguments(arguments, name + "_mod"));
} else { } else {
log("Pass through remove listener for", name); log("Pass through remove listener for", name);
Bangle.sensortoolsOrigRemoveListener(name, callback); Bangle.sensortoolsOrigRemoveListener.apply(this, arguments);
} }
}; };
Bangle.emit = function(name, event) { Bangle.emit = function(name) {
if (onEvents[name]) { if (onEvents[name]) {
log("Augmenting emit call for", name, onEvents[name]); log("Augmenting emit call for", name, onEvents[name]);
Bangle.sensortoolsOrigEmit(name + "_mod", event); Bangle.sensortoolsOrigEmit.apply(this, modifyArguments(arguments, name + "_mod"));
} else { } else {
log("Pass through emit call for", name); log("Pass through emit call for", name);
Bangle.sensortoolsOrigEmit(name, event); Bangle.sensortoolsOrigEmit.apply(this, arguments);
} }
}; };

View File

@ -2,7 +2,7 @@
"id": "sensortools", "id": "sensortools",
"name": "Sensor tools", "name": "Sensor tools",
"shortName": "Sensor tools", "shortName": "Sensor tools",
"version": "0.05", "version": "0.06",
"description": "Tools for testing and debugging apps that use sensor input", "description": "Tools for testing and debugging apps that use sensor input",
"icon": "icon.png", "icon": "icon.png",
"type": "bootloader", "type": "bootloader",