diff --git a/VERSION b/VERSION index 7db2672..a2e1aa9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.26 +0.1.27 diff --git a/test_personalization.js b/test_personalization.js index 8a8038b..ffb52d0 100644 --- a/test_personalization.js +++ b/test_personalization.js @@ -54,3 +54,9 @@ test('image conversion resizes oversized output and closes its decoded bitmap',a assert.equal(await c.readImage({type:'image/png',size:100},960),'data:image/png;base64,AA=='); assert.equal(canvas.width,768);assert.equal(canvas.height,384);assert.equal(closed,1); }); +test('settings opened before login resolves reloads once after the account is known',()=>{ + let loads=0;const c=vm.createContext({applyBranding(){},applyAppearance(){},currentUser:{id:'root'},appearanceOwner:'',activePage:'settings',branding:{},loadSettings(){loads++;}}); + vm.runInContext(part(source,'function onAppearanceSession(','function resetAppearance('),c); + c.onAppearanceSession({values:{},defaults:{},revision:0});c.onAppearanceSession({values:{},defaults:{},revision:0}); + assert.equal(loads,1);assert.equal(c.appearanceOwner,'root'); +}); diff --git a/web/personalization.js b/web/personalization.js index b1ef79a..be05b96 100644 --- a/web/personalization.js +++ b/web/personalization.js @@ -26,6 +26,7 @@ function onAppearanceSession(preferences){ applyBranding();if(!currentUser||!preferences)return; const first=appearanceOwner!==currentUser.id;appearanceOwner=currentUser.id; personalValues=preferences.values;personalRevision=preferences.revision;branding.defaults=preferences.defaults;applyAppearance(); + if(first&&activePage==='settings'){loadSettings();return;} if(first&&activePage==='households'){ let page=effectiveAppearance().startPage; if(page==='heritage'&&(currentHome()?.kind&¤tHome().kind!=='home'||!isAdmin()&¤tUser.familyAccess==='none'&&!['read','edit'].includes(currentUser.heritageAccess)))page='overview';