Settings for disabling specific apps

master
Kedlub 2023-01-20 09:32:11 +01:00
parent 5e87fc2bcf
commit 39c98bf1c9
3 changed files with 124 additions and 2 deletions

View File

@ -1,4 +1,6 @@
(function () {
var settings = require("Storage").readJSON("backswipe.json", 1) || {};
// Overrride the default setUI method, so we can save the back button callback
var setUI = Bangle.setUI;
Bangle.setUI = function (mode, cb) {
@ -7,9 +9,11 @@
options = mode;
}
var currentFile = global.__FILE__ || "";
print("Setting UI");
if(global.BACK) delete global.BACK;
if (options && options.back) {
if (options && options.back && enabledForApp(currentFile)) {
print("Saving back callback");
global.BACK = options.back;
}
@ -28,6 +32,17 @@
}
}
function enabledForApp(app) {
if (!settings) return true;
if (settings.mode === "blacklist") {
return !settings.apps.includes(app);
} else if (settings.mode === "whitelist") {
return settings.apps.includes(app);
} else {
return settings.mode === "on" ? true : false;
}
}
// Listen to left to right swipe
Bangle.on("swipe", goBack);
})();

View File

@ -8,6 +8,10 @@
"supports" : ["BANGLEJS2"],
"type": "bootloader",
"storage": [
{"name":"backswipe.boot.js","url":"boot.js"}
{"name":"backswipe.boot.js","url":"boot.js"},
{"name":"backswipe.settings.js","url":"settings.js"}
],
"data": [
{"name":"backswipe.json"}
]
}

103
apps/backswipe/settings.js Normal file
View File

@ -0,0 +1,103 @@
(function() {
var FILE = 'backswipe.json';
// Mode can be 'blacklist', 'whitelist', 'on' or 'disabled'
// Apps is an array of app names, where all the apps that are there are either blocked or allowed, depending on the mode
var DEFAULTS = {
'mode': 'blacklist',
'apps': []
};
var settings = {};
var loadSettings = function() {
var settings = require('Storage').readJSON(FILE, 1) || DEFAULTS;
return settings;
}
var saveSettings = function(settings) {
require('Storage').write(FILE, settings);
}
var getApps = function() {
var apps = require('Storage').list(/\.info$/).map(app => {
return app.replace('.info', '');
});
return apps;
}
var getSettings = function() {
var settings = loadSettings();
return {
mode: settings.mode,
apps: settings.apps,
};
}
var showMenu = function() {
var settings = getSettings();
var menu = {
'': { 'title': 'Backswipe' },
'< Back': () => {
load();
E.showMenu();
},
'Mode': {
value: settings.mode,
format: v => v,
onchange: v => {
settings.mode = v;
},
options: ['blacklist', 'whitelist', 'on', 'disabled']
},
'App List': {
value: '',
format: v => v,
onchange: v => {
showAppSubMenu();
}
}
};
E.showMenu(menu);
}
var showAppSubMenu = function() {
var menu = {
'': { 'title': 'Backswipe' },
'< Back': () => {
showMenu();
},
'Add App': () => {
showAppList();
}
};
settings.apps.forEach(app => {
menu[app.app] = () => {
settings.apps.splice(settings.apps.indexOf(app), 1);
}
saveSettings(settings);
});
E.showMenu(menu);
}
var showAppList = function() {
var apps = getApps();
var menu = {
'': { 'title': 'Backswipe' },
'< Back': () => {
showMenu();
}
};
apps.forEach(app => {
menu[app] = () => {
settings.apps.push(app);
saveSettings(settings);
showAppSubMenu();
}
});
E.showMenu(menu);
}
loadSettings();
showMenu();
})