fix(apk): depot vide + changements en attente = premiere publication, et delais reseau plus longs

Le telephone verifiait le mot de passe de synchro en telechargeant
l'instantane et s'arretait sur 404 : rien ne partait jamais vers un depot
neuf. Mesure : un 404 de GitHub a pris 16,3 s, au-dela du delai de 15 s du
client et sous le garde-fou de 25 s - d'ou les 'HTTP 0' intermittents.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-25 16:31:16 +01:00
parent e0f8bf441f
commit 2a461cad26
3 changed files with 53 additions and 6 deletions
+20 -4
View File
@@ -1113,6 +1113,7 @@ function renderDetail(d) {
}
document.getElementById('fields').addEventListener('click', function (ev) {
// Meme raison que dans la liste : le dessin recoit l'appui, le bouton porte
// l'intention. Tout ce qui suit lit et ecrit sur le bouton.
var t = ev.target.closest('button') || ev.target;
@@ -1315,6 +1316,17 @@ addEventListener('keydown', function (ev) {
// defile. Une entree qu'on cree et une entree qu'on consulte occupent la meme
// place a l'ecran, et c'est exactement ce que cette vue veut dire.
var newKind = 'login';
// LE CLAVIER NE MONTE PAS TOUT SEUL. Le champ prend bien le focus - mesure
// faite : l'appui arrive et focusin part -, mais la vue web est posee dans une
// activite FMX, et le systeme n'ouvre le clavier que si on le lui demande.
// C'est deja ce que fait la recherche ; les champs du formulaire passent par
// la meme porte.
document.addEventListener('focusin', function (ev) {
var el = ev.target;
if (!el.classList || !el.classList.contains('field-in')) return;
if (el.tagName === 'SELECT') return; // il ouvre sa propre liste
send('kbd');
}, true);
/// Le dossier a la creation. Le meme choix que dans l'editeur, et pour la
/// meme raison : une entree rangee des le depart evite d'avoir a la deplacer.
@@ -1527,6 +1539,8 @@ function openEditEntry() {
// L'ICONE ET LE NOM EN TETE : on voit ce qu'on modifie, et surtout ce que
// les trois boutons d'en dessous vont remplacer.
var d = lastDetail;
// Pas de crayon pendant qu'on modifie : il n'a plus rien a ouvrir.
document.getElementById('pencil').hidden = true;
var av = document.getElementById('dav');
av.hidden = false;
av.className = 'av' + (d.icon ? ' has-img' : '');
@@ -1568,7 +1582,6 @@ function openEditEntry() {
});
document.getElementById('eSave').addEventListener('click', saveEditEntry);
view = 'edit';
send('state?view=edit');
if (editAgain) {
var ins = document.querySelectorAll('#fields [data-ef]'), i, f;
for (i = 0; i < ins.length; i++) {
@@ -2211,9 +2224,12 @@ var PM = {
ico('loader', 'Working') + '<span>Please wait...</span>';
document.body.classList.toggle('is-busy', !!on);
},
back: function () { if (view === 'detail') goList(); },
// Touche retour du telephone pendant une modification : on revient a
// l'entree, pas a la liste.
// Touche retour du telephone : le formulaire d'abord, la liste ensuite.
// Delphi ne connait que 'detail' - la page seule sait qu'elle edite.
back: function () {
if (view === 'edit') { renderDetail(lastDetail); return; }
if (view === 'detail') goList();
},
cancelEdit: function () { renderDetail(lastDetail); },
/// La touche retour annule la selection avant de verrouiller le coffre.
/// Sans cela, un geste d'annulation fermait le coffre - le contraire de ce