Merge pull request #302 from rigrig/welcome

Fix welcome apps running during settings update
pull/310/head
Gordon Williams 2020-04-15 08:57:59 +01:00 committed by GitHub
commit ac076f698a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 20 deletions

View File

@ -78,7 +78,7 @@
{ "id": "welcome", { "id": "welcome",
"name": "Welcome", "name": "Welcome",
"icon": "app.png", "icon": "app.png",
"version":"0.06", "version":"0.07",
"description": "Appears at first boot and explains how to use Bangle.js", "description": "Appears at first boot and explains how to use Bangle.js",
"tags": "start,welcome", "tags": "start,welcome",
"allow_emulator":true, "allow_emulator":true,
@ -86,6 +86,7 @@
{"name":"welcome.boot.js","url":"boot.js"}, {"name":"welcome.boot.js","url":"boot.js"},
{"name":"welcome.app.js","url":"app.js"}, {"name":"welcome.app.js","url":"app.js"},
{"name":"welcome.settings.js","url":"settings.js"}, {"name":"welcome.settings.js","url":"settings.js"},
{"name":"welcome.settings.json","url":"settings-default.json","evaluate":true},
{"name":"welcome.img","url":"app-icon.js","evaluate":true} {"name":"welcome.img","url":"app-icon.js","evaluate":true}
] ]
}, },
@ -504,13 +505,14 @@
"id": "ncstart", "id": "ncstart",
"name": "NCEU Startup", "name": "NCEU Startup",
"icon": "start.png", "icon": "start.png",
"version":"0.03", "version":"0.04",
"description": "NodeConfEU 2019 'First Start' Sequence", "description": "NodeConfEU 2019 'First Start' Sequence",
"tags": "start,welcome", "tags": "start,welcome",
"storage": [ "storage": [
{"name":"ncstart.app.js","url":"start.js"}, {"name":"ncstart.app.js","url":"start.js"},
{"name":"ncstart.boot.js","url":"boot.js"}, {"name":"ncstart.boot.js","url":"boot.js"},
{"name":"ncstart.settings.js","url":"settings.js"}, {"name":"ncstart.settings.js","url":"settings.js"},
{"name":"ncstart.settings.json","url":"settings-default.json","evaluate":true},
{"name":"ncstart.img","url":"start-icon.js","evaluate":true}, {"name":"ncstart.img","url":"start-icon.js","evaluate":true},
{"name":"nc-bangle.img","url":"start-bangle.js","evaluate":true}, {"name":"nc-bangle.img","url":"start-bangle.js","evaluate":true},
{"name":"nc-nceu.img","url":"start-nceu.js","evaluate":true}, {"name":"nc-nceu.img","url":"start-nceu.js","evaluate":true},

View File

@ -2,3 +2,6 @@
Renamed as nodeconf-specific Renamed as nodeconf-specific
0.03: Move configuration into App/widget settings 0.03: Move configuration into App/widget settings
Move loader into welcome.boot.js Move loader into welcome.boot.js
0.04: Run again when updated
Don't run again when settings app is updated (or absent)
Add "Run Now" option to settings

View File

@ -1,9 +1,11 @@
(function() { (function() {
let s = require('Storage').readJSON('setting.json', 1) || {} let s = require('Storage').readJSON('ncstart.settings.json', 1)
|| require('Storage').readJSON('setting.json', 1)
|| {welcomed: true} // do NOT run if global settings are also absent
if (!s.welcomed && require('Storage').read('ncstart.app.js')) { if (!s.welcomed && require('Storage').read('ncstart.app.js')) {
setTimeout(() => { setTimeout(() => {
s.welcomed = true s.welcomed = true
require('Storage').write('setting.json', s) require('Storage').write('ncstart.settings.json', s)
load('ncstart.app.js') load('ncstart.app.js')
}) })
} }

View File

@ -0,0 +1,3 @@
{
"welcomed": false
}

View File

@ -1,16 +1,15 @@
// The welcome app is special, and gets to use global settings // The welcome app is special, and gets to use global settings
(function(back) { (function(back) {
let settings = require('Storage').readJSON('setting.json', 1) || {} let settings = require('Storage').readJSON('ncstart.settings.json', 1)
|| require('Storage').readJSON('setting.json', 1) || {}
E.showMenu({ E.showMenu({
'': { 'title': 'NCEU Startup' }, '': { 'title': 'NCEU Startup' },
'Run again': { 'Run on Next Boot': {
value: !settings.welcomed, value: !settings.welcomed,
format: v => v ? 'Yes' : 'No', format: v => v ? 'OK' : 'No',
onchange: v => { onchange: v => require('Storage').write('ncstart.settings.json', {welcomed: !v}),
settings.welcomed = v ? undefined : true
require('Storage').write('setting.json', settings)
},
}, },
'Run Now': () => load('ncstart.app.js'),
'< Back': back, '< Back': back,
}) })
}) })

View File

@ -4,3 +4,6 @@
0.04: Fix regression after tweaks to Storage.readJSON 0.04: Fix regression after tweaks to Storage.readJSON
0.05: Move configuration into App/widget settings 0.05: Move configuration into App/widget settings
0.06: Move loader into welcome.boot.js 0.06: Move loader into welcome.boot.js
0.07: Run again when updated
Don't run again when settings app is updated (or absent)
Add "Run Now" option to settings

View File

@ -288,6 +288,13 @@ setWatch(()=>{
}, BTN2, {repeat:true,edge:"rising"}); }, BTN2, {repeat:true,edge:"rising"});
setWatch(()=>move(-1), BTN1, {repeat:true}); setWatch(()=>move(-1), BTN1, {repeat:true});
(function migrateSettings(){
let global_settings = require('Storage').readJSON('setting.json', 1)
if (global_settings) {
delete global_settings.welcomed
require('Storage').write('setting.json', global_settings)
}
})()
Bangle.setLCDTimeout(0); Bangle.setLCDTimeout(0);
Bangle.setLCDPower(1); Bangle.setLCDPower(1);

View File

@ -1,9 +1,11 @@
(function() { (function() {
let s = require('Storage').readJSON('setting.json', 1) || {} let s = require('Storage').readJSON('welcome.settings.json', 1)
|| require('Storage').readJSON('setting.json', 1)
|| {welcomed: true} // do NOT run if global settings are also absent
if (!s.welcomed && require('Storage').read('welcome.app.js')) { if (!s.welcomed && require('Storage').read('welcome.app.js')) {
setTimeout(() => { setTimeout(() => {
s.welcomed = true s.welcomed = true
require('Storage').write('setting.json', s) require('Storage').write('welcome.settings.json', {welcomed: "yes"})
load('welcome.app.js') load('welcome.app.js')
}) })
} }

View File

@ -0,0 +1,3 @@
{
"welcomed": false
}

View File

@ -1,16 +1,15 @@
// The welcome app is special, and gets to use global settings // The welcome app is special, and gets to use global settings
(function(back) { (function(back) {
let settings = require('Storage').readJSON('setting.json', 1) || {} let settings = require('Storage').readJSON('welcome.settings.json', 1)
|| require('Storage').readJSON('setting.json', 1) || {}
E.showMenu({ E.showMenu({
'': { 'title': 'Welcome App' }, '': { 'title': 'Welcome App' },
'Run again': { 'Run on Next Boot': {
value: !settings.welcomed, value: !settings.welcomed,
format: v => v ? 'Yes' : 'No', format: v => v ? 'OK' : 'No',
onchange: v => { onchange: v => require('Storage').write('welcome.settings.json', {welcomed: !v}),
settings.welcomed = v ? undefined : true
require('Storage').write('setting.json', settings)
},
}, },
'Run Now': () => load('welcome.app.js'),
'< Back': back, '< Back': back,
}) })
}) })