feat(android): un bouton pour jeter le coffre local, en debogage seulement
Il vit en bas des reglages, apres tout le reste, et demande deux appuis : un effacement sans retour ne se declenche pas sur un doigt qui glisse. Absent en release, et pas seulement cache : la commande du pont n'est pas compilee et Delphi ne devoile la section que dans une version de debogage. Le bouton ne peut donc pas reapparaitre par accident. Verifie - Release compte 8060 lignes contre 8072 en debug, soit exactement ce bloc. DropLocalVault efface le cache, le conteneur local et le drapeau d'attente, chacun sous son propre try : un fichier absent ou verrouille ne doit pas empecher les deux autres de partir. Les reglages du depot restent - c'est le coffre qu'on jette, pas la facon d'aller le rechercher. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -157,6 +157,14 @@ procedure ClearVault;
|
|||||||
function HasLocalContainer: Boolean;
|
function HasLocalContainer: Boolean;
|
||||||
function LoadLocalContainer: string;
|
function LoadLocalContainer: string;
|
||||||
procedure SaveLocalContainer(const AContainer: string);
|
procedure SaveLocalContainer(const AContainer: string);
|
||||||
|
/// Efface TOUT ce que l'appareil detient du coffre : le cache, le conteneur
|
||||||
|
/// local et le drapeau d'attente. Ne touche pas aux reglages du depot - c'est
|
||||||
|
/// le coffre qu'on jette, pas la facon d'aller le rechercher.
|
||||||
|
///
|
||||||
|
/// SANS RETOUR, et sans garde ici : l'appelant est le seul a savoir si
|
||||||
|
/// quelqu'un l'a demande. Reserve au debogage.
|
||||||
|
procedure DropLocalVault;
|
||||||
|
|
||||||
/// Efface le conteneur local. A n'appeler QU'APRES avoir publie son contenu :
|
/// Efface le conteneur local. A n'appeler QU'APRES avoir publie son contenu :
|
||||||
/// c'est le geste qui fait passer l'autorite au depot, et il est sans retour.
|
/// c'est le geste qui fait passer l'autorite au depot, et il est sans retour.
|
||||||
procedure DropLocalContainer;
|
procedure DropLocalContainer;
|
||||||
@@ -290,6 +298,16 @@ begin
|
|||||||
TFile.Delete(LocalContainerPath);
|
TFile.Delete(LocalContainerPath);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure DropLocalVault;
|
||||||
|
begin
|
||||||
|
// Chacun sous son propre try : un fichier absent ou verrouille ne doit pas
|
||||||
|
// empecher les deux autres de partir - un effacement a moitie fait laisse
|
||||||
|
// l'appareil dans un etat que personne n'a voulu.
|
||||||
|
try if TFile.Exists(VaultPath) then TFile.Delete(VaultPath); except end;
|
||||||
|
try DropLocalContainer; except end;
|
||||||
|
try SetPendingFlag(False); except end;
|
||||||
|
end;
|
||||||
|
|
||||||
function PendingPath: string;
|
function PendingPath: string;
|
||||||
begin
|
begin
|
||||||
Result := TPath.Combine(TPath.GetHomePath, PENDING_FILE);
|
Result := TPath.Combine(TPath.GetHomePath, PENDING_FILE);
|
||||||
|
|||||||
@@ -605,6 +605,19 @@
|
|||||||
atteignable depuis l'accueil comme depuis le coffre. -->
|
atteignable depuis l'accueil comme depuis le coffre. -->
|
||||||
<pre id="log" hidden></pre>
|
<pre id="log" hidden></pre>
|
||||||
<div class="note" id="sVersion"></div>
|
<div class="note" id="sVersion"></div>
|
||||||
|
|
||||||
|
<!-- DEBOGAGE SEULEMENT. Delphi ne devoile cette section que dans une
|
||||||
|
version de debogage, et la commande qui l'accompagne n'est meme pas
|
||||||
|
compilee en release : le bouton ne peut donc pas reapparaitre par
|
||||||
|
accident dans une version publiee. En bas de l'ecran, apres tout le
|
||||||
|
reste, parce qu'on ne tombe pas dessus par megarde. -->
|
||||||
|
<div id="secDebug" hidden>
|
||||||
|
<h2>Debug</h2>
|
||||||
|
<button class="btn wide danger" id="sWipe">Delete the local vault</button>
|
||||||
|
<div class="note">Removes the cached vault and any vault created here,
|
||||||
|
along with anything not yet published. The repository is untouched -
|
||||||
|
Download vault brings it back.</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1606,6 +1619,24 @@ document.getElementById('sPinSet').addEventListener('click', function () {
|
|||||||
send('pinset?c=' + encodeURIComponent(v));
|
send('pinset?c=' + encodeURIComponent(v));
|
||||||
document.getElementById('sPinNew').value = '';
|
document.getElementById('sPinNew').value = '';
|
||||||
});
|
});
|
||||||
|
document.getElementById('sWipe').addEventListener('click', function (ev) {
|
||||||
|
// DEUX APPUIS, comme pour retirer le code : un effacement sans retour ne se
|
||||||
|
// declenche pas sur un doigt qui glisse.
|
||||||
|
var b = ev.currentTarget;
|
||||||
|
if (b.getAttribute('data-armed') === null) {
|
||||||
|
b.setAttribute('data-armed', '1');
|
||||||
|
b.textContent = 'Really delete - tap again';
|
||||||
|
setTimeout(function () {
|
||||||
|
b.removeAttribute('data-armed');
|
||||||
|
b.textContent = 'Delete the local vault';
|
||||||
|
}, 4000);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
b.removeAttribute('data-armed');
|
||||||
|
b.textContent = 'Delete the local vault';
|
||||||
|
send('wipelocal');
|
||||||
|
closeSettings();
|
||||||
|
});
|
||||||
document.getElementById('sPinClear').addEventListener('click', function (ev) {
|
document.getElementById('sPinClear').addEventListener('click', function (ev) {
|
||||||
var b = ev.currentTarget;
|
var b = ev.currentTarget;
|
||||||
if (b.getAttribute('data-armed') === null) {
|
if (b.getAttribute('data-armed') === null) {
|
||||||
@@ -1828,6 +1859,10 @@ var PM = {
|
|||||||
document.body.classList.add('on-history');
|
document.body.classList.add('on-history');
|
||||||
send('state?view=history');
|
send('state?view=history');
|
||||||
},
|
},
|
||||||
|
/// Version de debogage : Delphi le dit, la page l'affiche. Jamais l'inverse.
|
||||||
|
showDebug: function () {
|
||||||
|
document.getElementById('secDebug').hidden = false;
|
||||||
|
},
|
||||||
setVersion: function (v) {
|
setVersion: function (v) {
|
||||||
document.getElementById('sVersion').textContent = v;
|
document.getElementById('sVersion').textContent = v;
|
||||||
},
|
},
|
||||||
|
|||||||
+22
-2
@@ -446,6 +446,12 @@ begin
|
|||||||
FPending := HasPendingFlag;
|
FPending := HasPendingFlag;
|
||||||
PushConfig;
|
PushConfig;
|
||||||
WebCall('PM.setVersion("Coffre 1.0.0")');
|
WebCall('PM.setVersion("Coffre 1.0.0")');
|
||||||
|
{$IFDEF DEBUG}
|
||||||
|
// L'effacement du coffre local n'existe QUE dans les versions de debogage.
|
||||||
|
// La page ne montre le bouton que si Delphi le lui dit, et Delphi ne le dit
|
||||||
|
// qu'ici : une version publiee n'a donc ni le bouton ni la commande.
|
||||||
|
WebCall('PM.showDebug()');
|
||||||
|
{$ENDIF}
|
||||||
ShowUnlock;
|
ShowUnlock;
|
||||||
{$IFNDEF DEBUG}
|
{$IFNDEF DEBUG}
|
||||||
// Le journal quitte l'ecran d'accueil, sans quitter l'application : un appui
|
// Le journal quitte l'ecran d'accueil, sans quitter l'application : un appui
|
||||||
@@ -1743,6 +1749,22 @@ begin
|
|||||||
else if LAction = 'icon' then
|
else if LAction = 'icon' then
|
||||||
SetEntryIcon(Param('a') = 'fetch')
|
SetEntryIcon(Param('a') = 'fetch')
|
||||||
|
|
||||||
|
{$IFDEF DEBUG}
|
||||||
|
// JETER LE COFFRE LOCAL - debogage seulement, et absent a la compilation
|
||||||
|
// en release : la commande n'existe pas, pas plus que le bouton.
|
||||||
|
else if LAction = 'wipelocal' then
|
||||||
|
begin
|
||||||
|
LockVault;
|
||||||
|
DropLocalVault;
|
||||||
|
FPending := False;
|
||||||
|
FETag := '';
|
||||||
|
FVaultUnreadable := False;
|
||||||
|
Log('DEBUG: local vault dropped');
|
||||||
|
ShowUnlock;
|
||||||
|
WebCall('PM.toast("Local vault deleted")');
|
||||||
|
end
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
else if LAction = 'pinset' then
|
else if LAction = 'pinset' then
|
||||||
SetUnlockCode(TNetEncoding.URL.Decode(Param('c')))
|
SetUnlockCode(TNetEncoding.URL.Decode(Param('c')))
|
||||||
|
|
||||||
@@ -1983,8 +2005,6 @@ begin
|
|||||||
procedure
|
procedure
|
||||||
var
|
var
|
||||||
LPlain, LOwner: string;
|
LPlain, LOwner: string;
|
||||||
LKey, LSalt: TBytes;
|
|
||||||
LIters: Integer;
|
|
||||||
LDoc: TJSONObject;
|
LDoc: TJSONObject;
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user