BangleApps/apps/flashcards/settings.js

79 lines
2.5 KiB
JavaScript

(function(back) {
var storage = require("Storage");
var settingsFile = "flashcards.settings.json";
var dataFile = "flashcards.data.json";
var trelloTimeout = 3000;
var trelloURL = "https://api.trello.com/1/lists/$cardsListId/cards/?fields=name%2Cdesc%2Clist";
var settings = Object.assign({
listId: "",
fontSize: 1,
cardWidth: 9,
swipeGesture: 1
}, storage.readJSON(settingsFile, true) || {});
function writeSettings() {
storage.writeJSON(settingsFile, settings);
}
const fontSizes = [/*LANG*/"Small",/*LANG*/"Medium",/*LANG*/"Large"];
const swipeGestures = [/*LANG*/"Stroke",/*LANG*/"Drag"];
var settingsMenu = {
"" : { "title" : "Flash Cards" },
"< Back" : () => back(),
/*LANG*/"Get from Trello": () => {
if (!storage.read(settingsFile)) { writeSettings();}
E.showPrompt(/*LANG*/"Download cards?").then((v) => {
let delay = 500;
if (v) {
if (Bangle.http)
{
if (settings.listId)
{
delay = delay + trelloTimeout;
E.showMessage(/*LANG*/"Downloading");
Bangle.http(trelloURL.replace("$cardsListId", settings.listId),
{
timeout : trelloTimeout,
method: "GET",
headers: { "Content-Type": "application/json" }
}).then(data=>{
var cardsJSON = JSON.parse(data.resp);
storage.write(dataFile, JSON.stringify(cardsJSON));
E.showMessage(/*LANG*/"Downloaded");
})
.catch((e) => {
E.showMessage(/*LANG*/"Error:" + e);
});
} else {
E.showMessage(/*LANG*/"List Id not found");
}
} else {
E.showMessage(/*LANG*/"Gadgetbridge not found");
}
}
setTimeout(() => E.showMenu(settingsMenu), delay);
});
},
/*LANG*/"Font size": {
value: settings.fontSize,
min: 0, max: 2, wrap: true,
format: v => fontSizes[v],
onchange: v => { settings.fontSize = v; writeSettings(); }
},
/*LANG*/"Card width": {
value: settings.cardWidth,
min: 6, max: 12,
onchange: v => { settings.cardWidth = v; writeSettings(); }
},
/*LANG*/"Swipe gesture": {
value: settings.swipeGesture,
min: 0, max: 1, wrap: true,
format: v => swipeGestures[v],
onchange: v => { settings.swipeGesture = v; writeSettings(); }
}
}
// Show the menu
E.showMenu(settingsMenu);
})//(load)