From cbcdb3f5934cdac9c40eabd68bb590fdcd45a882 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Sat, 29 Aug 2026 00:27:40 +0100 Subject: [PATCH] fix(android): le temoin bleu sait enfin s'eteindre FRemoteAhead etait remis a faux a trois endroits - publication, publication differee, rafraichissement - et aucun ne le disait a la page. Seul l'allumage etait pousse. Le point bleu restait donc affiche apres la synchronisation qui venait de le rendre caduc, jusqu'au retour suivant sur l'accueil. Un temoin qui reste allume apres qu'on a fait ce qu'il demandait ne demande plus rien : il decore, et on apprend a ne plus le regarder. Le drapeau et son affichage passent maintenant par SetRemoteAhead, dans les deux sens. Meme asymetrie, meme correction que pour le point orange. PROBE_EVERY_TICKS revient a 40 : la bascule a 8 n'etait que pour rendre la serie E observable en deux minutes. Co-Authored-By: Claude Opus 5 --- mainApk.pas | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/mainApk.pas b/mainApk.pas index 32c547b..a76ba54 100644 --- a/mainApk.pas +++ b/mainApk.pas @@ -89,7 +89,7 @@ const // donc quarante battements font dix minutes. Assez rare pour ne rien peser // sur une liaison mobile, assez frequent pour qu'on l'apprenne avant d'avoir // modifie la meme entree des deux cotes. - PROBE_EVERY_TICKS = 8; // TEMPORAIRE - essai de la serie E, remettre 40 + PROBE_EVERY_TICKS = 40; // FIRSTRUN_TOKEN et TEST_PWD viennent d'un fichier LOCAL, hors depot : le // jeton authentifie l'appareil, le mot de passe ouvre le coffre entier. Ni @@ -339,6 +339,15 @@ type procedure SetUnlockCode(const ANew: string); /// Va chercher l'icone du site de l'entree ouverte, ou l'efface. procedure SetEntryIcon(AFetch: Boolean); + /// Le depot a bouge, ou ne l'a plus : LE DRAPEAU ET SON TEMOIN ENSEMBLE. + /// + /// Ils ne l'etaient pas. FRemoteAhead etait remis a faux a trois endroits - + /// publication, publication differee, rafraichissement - et aucun ne le + /// disait a la page : le point bleu ne savait que s'allumer, et ne + /// s'eteignait qu'au retour suivant sur l'accueil. Un temoin qui reste + /// allume apres qu'on a fait ce qu'il demandait ne demande plus rien, il + /// decore. + procedure SetRemoteAhead(AOn: Boolean); /// Envoie a la page les anciens mots de passe de l'entree ouverte. procedure ShowPasswordHistory; procedure ReopenEntryByUuid(const AUuid: string); @@ -1020,7 +1029,7 @@ begin begin FETag := LPut.ETag; LPublished := True; - FRemoteAhead := False; + SetRemoteAhead(False); Log('save: published, new sha ' + LPut.ETag); Break; end; @@ -1246,7 +1255,7 @@ begin if LDone then begin FPending := False; - FRemoteAhead := False; + SetRemoteAhead(False); SetPendingFlag(False); AdoptVault(LMerged); Log('pending changes published, new sha ' + FETag); @@ -2638,7 +2647,7 @@ begin // ce que l'enregistrement hors ligne promet d'eviter. // // Le depot vient d'etre lu : ce qu'il portait est ici. - FRemoteAhead := False; + SetRemoteAhead(False); // On garde le drapeau : fondre ne publie pas. if FPending and (FPlain <> '') then begin @@ -2898,6 +2907,18 @@ end; /// /// Ils ne descendent vers la page qu'ici, sur demande, et pour une seule /// entree. La page les jette au verrouillage comme le reste du clair. +procedure TForm8.SetRemoteAhead(AOn: Boolean); +begin + FRemoteAhead := AOn; + // Appele depuis les threads de calcul comme depuis le principal : la file + // rend les deux cas identiques, et le moteur ne se pilote que d'ici. + TThread.Queue(nil, + procedure + begin + WebCall(Format('PM.setRemoteAhead(%s)', [LowerCase(BoolToStr(AOn, True))])); + end); +end; + procedure TForm8.ShowPasswordHistory; var LRows: TArray; @@ -3151,9 +3172,8 @@ begin procedure begin if FRemoteAhead then Exit; // deja dit - FRemoteAhead := True; Log('remote has moved - sync to bring it in'); - WebCall('PM.setRemoteAhead(true)'); + SetRemoteAhead(True); end); end).Start; end;