From 9b26a1dbd07cb5ecc5786762cd5e8d9897acfd0b Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Fri, 28 Aug 2026 16:12:20 +0100 Subject: [PATCH] fix(android): un coffre vide n'est pas un coffre ferme "Coffre ouvert" se lisait sur le nombre d'entrees. Or un coffre vide en compte zero, exactement comme un coffre ferme - et le coffre d'essai l'est. Le garde de DoSync restait donc vrai apres l'ouverture, rearmait la reprise, et l'on tournait en rond : le journal repetait "Vault opened from cache", l'interface clignotait et ne repondait plus. Le meme idiome se trouvait a deux autres endroits. Le second compte : OnIdleTimer se coupait de lui-meme sur un coffre vide, qui restait donc ouvert indefiniment - et vide aujourd'hui ne veut pas dire vide dans dix minutes. FPlain, le clair en main, est le seul signal qui ne mente pas. Co-Authored-By: Claude Opus 5 --- mainApk.pas | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/mainApk.pas b/mainApk.pas index ee7a234..47d956f 100644 --- a/mainApk.pas +++ b/mainApk.pas @@ -2274,7 +2274,13 @@ begin // // Un appareil SANS cache n'est pas concerne : c'est le premier // telechargement, et il n'y a rien a ouvrir. - if HasVault and (not FVaultUnreadable) and (FVault.Count = 0) then + // + // "COFFRE OUVERT" SE LIT SUR FPlain, PAS SUR LE NOMBRE D'ENTREES. Un coffre + // vide en compte zero, exactement comme un coffre ferme : le garde restait + // donc vrai apres l'ouverture, rearmait la reprise, et l'on tournait en rond + // - le journal repetait "Vault opened from cache" et l'interface clignotait + // sans plus repondre. Le clair en main est le seul signal qui ne ment pas. + if HasVault and (not FVaultUnreadable) and (FPlain = '') then begin if VaultNeedsPin and (FPin = '') then begin @@ -2320,7 +2326,9 @@ begin // remplace etait bloque par la meme condition. Quand plus rien ne peut // authentifier, ce verrou ne protege personne - le contenu viendra du // serveur, et c'est le mot de passe de sync qui le garde. - if VaultNeedsAuth and (FVault.Count = 0) and BiometricAvailable then + // FPlain et non le nombre d'entrees : un coffre vide en compte zero comme un + // coffre ferme, et l'on redemanderait l'empreinte a un coffre deja ouvert. + if VaultNeedsAuth and (FPlain = '') and BiometricAvailable then begin Status('Authenticating...'); AuthenticateThen('Unlock the vault', @@ -2690,7 +2698,11 @@ end; procedure TForm8.OnIdleTimer(Sender: TObject); begin // Rien d'ouvert : rien a verrouiller. - if FVault.Count = 0 then + // + // SUR FPlain, PAS SUR LE NOMBRE D'ENTREES. Un coffre vide en compte zero, et + // le minuteur se coupait donc de lui-meme : le coffre restait ouvert + // indefiniment. Vide aujourd'hui ne veut pas dire vide dans dix minutes. + if FPlain = '' then begin FIdleTimer.Enabled := False; Exit;