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 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-29 00:27:40 +01:00
parent b2c677997e
commit cbcdb3f593
+26 -6
View File
@@ -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<string>;
@@ -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;