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.05: Fix gps emulation interpolation
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.sensortoolsOrigRemoveListener = Bangle.removeListener;
const modifyArguments = function(args, value) {
if (args.length >= 1)
args[0] = value;
return args;
};
Bangle.on = function(name, callback) {
if (onEvents[name]) {
log("Redirecting listener for", name, "to", name + "_mod");
Bangle.sensortoolsOrigOn(name + "_mod", callback);
Bangle.sensortoolsOrigOn(name, (e) => {
log("Redirected event for", name, "to", name + "_mod");
Bangle.sensortoolsOrigEmit(name + "_mod", onEvents[name](e));
let origName = name;
Bangle.sensortoolsOrigOn(origName, (e) => {
log("Redirected event for", origName, "to", origName + "_mod");
Bangle.sensortoolsOrigEmit(origName + "_mod", onEvents[origName](e));
});
Bangle.sensortoolsOrigOn.apply(this, modifyArguments(arguments, name + "_mod"));
} else {
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]) {
log("Removing augmented listener for", name, onEvents[name]);
Bangle.sensortoolsOrigRemoveListener(name + "_mod", callback);
Bangle.sensortoolsOrigRemoveListener.apply(this, modifyArguments(arguments, name + "_mod"));
} else {
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]) {
log("Augmenting emit call for", name, onEvents[name]);
Bangle.sensortoolsOrigEmit(name + "_mod", event);
Bangle.sensortoolsOrigEmit.apply(this, modifyArguments(arguments, name + "_mod"));
} else {
log("Pass through emit call for", name);
Bangle.sensortoolsOrigEmit(name, event);
Bangle.sensortoolsOrigEmit.apply(this, arguments);
}
};

View File

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