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;