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 <noreply@anthropic.com>
This commit is contained in:
+15
-3
@@ -2274,7 +2274,13 @@ begin
|
|||||||
//
|
//
|
||||||
// Un appareil SANS cache n'est pas concerne : c'est le premier
|
// Un appareil SANS cache n'est pas concerne : c'est le premier
|
||||||
// telechargement, et il n'y a rien a ouvrir.
|
// 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
|
begin
|
||||||
if VaultNeedsPin and (FPin = '') then
|
if VaultNeedsPin and (FPin = '') then
|
||||||
begin
|
begin
|
||||||
@@ -2320,7 +2326,9 @@ begin
|
|||||||
// remplace etait bloque par la meme condition. Quand plus rien ne peut
|
// remplace etait bloque par la meme condition. Quand plus rien ne peut
|
||||||
// authentifier, ce verrou ne protege personne - le contenu viendra du
|
// authentifier, ce verrou ne protege personne - le contenu viendra du
|
||||||
// serveur, et c'est le mot de passe de sync qui le garde.
|
// 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
|
begin
|
||||||
Status('Authenticating...');
|
Status('Authenticating...');
|
||||||
AuthenticateThen('Unlock the vault',
|
AuthenticateThen('Unlock the vault',
|
||||||
@@ -2690,7 +2698,11 @@ end;
|
|||||||
procedure TForm8.OnIdleTimer(Sender: TObject);
|
procedure TForm8.OnIdleTimer(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// Rien d'ouvert : rien a verrouiller.
|
// 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
|
begin
|
||||||
FIdleTimer.Enabled := False;
|
FIdleTimer.Enabled := False;
|
||||||
Exit;
|
Exit;
|
||||||
|
|||||||
Reference in New Issue
Block a user