Verbeter anatomie en plaatsing van avataraccessoires (v0.4.46-beta) #1

Open
bes-r wants to merge 192 commits from bes-r/avatar-realism into main AGit
3 changed files with 20 additions and 7 deletions
Showing only changes of commit c183c8f931 - Show all commits

View file

@ -1 +1 @@
0.4.30-beta
0.4.31-beta

View file

@ -85,10 +85,17 @@ updateEmptyHint();
(async function(){
updateBoardsUI();
try{
const me = await api("/auth/me");
currentUser = me.user;
/* /auth/me en /me/data hangen allebei alleen af van dezelfde sessie-cookie,
niet van elkaars antwoord - serieel wachten (eerst wie-ben-ik, dan pas
mijn-data ophalen) kost een hele round-trip voor niets. Parallel
opvragen en het tweede antwoord meegeven aan hydrateFromServer()
(die het gewoon negeert voor een leerling/ouder, zie daar) scheelt die
round-trip in het veelvoorkomende geval (staf/thuisgebruiker). */
const [meResult, dataResult] = await Promise.allSettled([api("/auth/me"), api("/me/data")]);
if(meResult.status !== "fulfilled") throw meResult.reason;
currentUser = meResult.value.user;
updateUserUI();
await hydrateFromServer();
await hydrateFromServer(dataResult.status === "fulfilled" ? dataResult.value : null);
}catch(e){
resetToGuest();
}

View file

@ -2,7 +2,7 @@
"use strict";
/* version shown until /api/version resolves (or if the fetch fails, e.g. offline).
Kept in sync by hand with the VERSION file at the repo root on every release. */
const VERSION = "0.4.30-beta";
const VERSION = "0.4.31-beta";
(function(){
const tag = document.getElementById("verTag");
tag.textContent = "v"+VERSION;
@ -887,7 +887,13 @@ function persistWords(){
function generalExtraFromData(data){
return (data && data.generalExtra) ? data.generalExtra : {nl:[], en:[]};
}
async function hydrateFromServer(){
/* prefetchedData: alleen gebruikt door de opstart-boot in app.js, die /me/data
al parallel met /auth/me heeft opgehaald (zie daar) i.p.v. serieel te
wachten - een leerling/ouder gebruikt het resultaat toch niet (zie de twee
vroege returns hieronder), dus dat verzoek is nooit verspild werk, alleen
soms ongebruikt. Elke andere aanroep (na inloggen, na een save-conflict)
geeft niets mee en haalt gewoon vers op, zoals voorheen. */
async function hydrateFromServer(prefetchedData){
/* schoolleerlingen hebben geen eigen borden - zij zien enkel wat de
leerkracht heeft toegewezen (zie pupil.js), nooit het whiteboard.
Thuiskinderen (leerling zonder school, ouderportaal) vallen hier expres
@ -911,7 +917,7 @@ async function hydrateFromServer(){
}
stopPupilView();
stopParentView();
const res = await api("/me/data");
const res = prefetchedData || await api("/me/data");
const d = res.data || {};
DATA_REV = typeof res.rev === "number" ? res.rev : 0;
THEMES = themesFromData(d);