From 9b19fa1e57befa5734e2ab3f963c4f58332d7ceb Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Mon, 11 Nov 2024 12:07:49 +0000 Subject: [PATCH] messages: settings only loads from storage once Conflicts: apps/messages/ChangeLog --- apps/messages/ChangeLog | 1 + apps/messages/metadata.json | 2 +- apps/messages/settings.js | 38 ++++++++++++++++++------------------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 4bd661bc67..b177b9f3d1 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -7,3 +7,4 @@ 0.61: Add repeatCalls option to allow different repeat settings for messages vs calls 0.62: Add option for driving on left (affects roundabout icons in navigation) 0.63: Add option to not open the first unread message +0.64: Only load from storage once in settings diff --git a/apps/messages/metadata.json b/apps/messages/metadata.json index 4907d496df..6be2b39ae5 100644 --- a/apps/messages/metadata.json +++ b/apps/messages/metadata.json @@ -1,7 +1,7 @@ { "id": "messages", "name": "Messages", - "version": "0.63", + "version": "0.64", "description": "Library to handle, load and store message events received from Android/iOS", "icon": "app.png", "type": "module", diff --git a/apps/messages/settings.js b/apps/messages/settings.js index d5bc0332ea..2eea3aa5c9 100644 --- a/apps/messages/settings.js +++ b/apps/messages/settings.js @@ -1,7 +1,7 @@ (function(back) { const iconColorModes = ['color', 'mono']; - function settings() { + function loadSettings() { let settings = require('Storage').readJSON("messages.settings.json", true) || {}; if (settings.vibrate===undefined) settings.vibrate=":"; if (settings.vibrateCalls===undefined) settings.vibrateCalls=":"; @@ -19,42 +19,42 @@ return settings; } function updateSetting(setting, value) { - let settings = require('Storage').readJSON("messages.settings.json", true) || {}; settings[setting] = value; require('Storage').writeJSON("messages.settings.json", settings); } + var settings = loadSettings(); var mainmenu = { "" : { "title" : /*LANG*/"Messages" }, "< Back" : back, - /*LANG*/'Vibrate': require("buzz_menu").pattern(settings().vibrate, v => updateSetting("vibrate", v)), - /*LANG*/'Vibrate for calls': require("buzz_menu").pattern(settings().vibrateCalls, v => updateSetting("vibrateCalls", v)), + /*LANG*/'Vibrate': require("buzz_menu").pattern(settings.vibrate, v => updateSetting("vibrate", v)), + /*LANG*/'Vibrate for calls': require("buzz_menu").pattern(settings.vibrateCalls, v => updateSetting("vibrateCalls", v)), /*LANG*/'Repeat': { - value: settings().repeat, + value: settings.repeat, min: 0, max: 10, format: v => v?v+"s":/*LANG*/"Off", onchange: v => updateSetting("repeat", v) }, /*LANG*/'Repeat for calls': { - value: settings().repeatCalls, + value: settings.repeatCalls, min: 0, max: 10, format: v => v?v+"s":/*LANG*/"Off", onchange: v => updateSetting("repeatCalls", v) }, /*LANG*/'Vibrate timer': { - value: settings().vibrateTimeout, - min: 0, max: settings().maxUnreadTimeout, step : 10, + value: settings.vibrateTimeout, + min: 0, max: settings.maxUnreadTimeout, step : 10, format: v => v?v+"s":/*LANG*/"Off", onchange: v => updateSetting("vibrateTimeout", v) }, /*LANG*/'Unread timer': { - value: settings().unreadTimeout, - min: 0, max: settings().maxUnreadTimeout, step : 10, + value: settings.unreadTimeout, + min: 0, max: settings.maxUnreadTimeout, step : 10, format: v => v?v+"s":/*LANG*/"Off", onchange: v => updateSetting("unreadTimeout", v) }, /*LANG*/'Min Font': { - value: 0|settings().fontSize, + value: 0|settings.fontSize, min: 0, max: 1, format: v => [/*LANG*/"Small",/*LANG*/"Medium"][v], onchange: v => updateSetting("fontSize", v) @@ -64,39 +64,39 @@ onchange: v => updateSetting("ignoreUnread", v) }, /*LANG*/'Auto-Open Music': { - value: !!settings().openMusic, + value: !!settings.openMusic, onchange: v => updateSetting("openMusic", v) }, /*LANG*/'Unlock Watch': { - value: !!settings().unlockWatch, + value: !!settings.unlockWatch, onchange: v => updateSetting("unlockWatch", v) }, /*LANG*/'Flash Icon': { - value: !!settings().flash, + value: !!settings.flash, onchange: v => updateSetting("flash", v) }, /*LANG*/'Quiet mode disables auto-open': { - value: !!settings().quietNoAutOpn, + value: !!settings.quietNoAutOpn, onchange: v => updateSetting("quietNoAutOpn", v) }, /*LANG*/'Disable auto-open': { - value: !!settings().noAutOpn, + value: !!settings.noAutOpn, onchange: v => updateSetting("noAutOpn", v) }, /*LANG*/'Widget messages': { - value:0|settings().maxMessages, + value:0|settings.maxMessages, min: 0, max: 5, format: v => v ? v :/*LANG*/"Hide", onchange: v => updateSetting("maxMessages", v) }, /*LANG*/'Icon color mode': { - value: Math.max(0,iconColorModes.indexOf(settings().iconColorMode)), + value: Math.max(0,iconColorModes.indexOf(settings.iconColorMode)), min: 0, max: iconColorModes.length - 1, format: v => iconColorModes[v], onchange: v => updateSetting("iconColorMode", iconColorModes[v]) }, /*LANG*/'Car driver pos': { // used by messagegui - value:!!settings().carIsRHD, + value:!!settings.carIsRHD, format: v => v ? /*LANG*/"Right" :/*LANG*/"Left", onchange: v => updateSetting("carIsRHD", v) },