feat: add expiring backups and live account checks
CI / verify (push) Canceled after 0s

This commit is contained in:
Sucukdeluxe
2026-09-01 15:43:20 +02:00
parent 96037f2e1c
commit 9e5c5126dd
19 changed files with 710 additions and 128 deletions
+9 -7
View File
@@ -27,7 +27,8 @@ function sanitizeEntry(entry) {
return {
id: entry.id,
displayKey: entry.displayKey,
createdAt: entry.createdAt
createdAt: entry.createdAt,
expiresAt: entry.expiresAt ?? null
};
}
@@ -35,7 +36,8 @@ function sanitizeCreatedEntry(entry, key) {
return {
id: entry.id,
displayKey: `${key.slice(0, 9)}${key.slice(-4)}`,
createdAt: entry.createdAt
createdAt: entry.createdAt,
expiresAt: entry.expiresAt ?? null
};
}
@@ -71,11 +73,11 @@ function createOnlineBackupManager({
};
}
async function createTransaction() {
async function createTransaction(retention) {
const createdAt = new Date().toISOString();
const settings = await loadSettings();
const created = createBackup(settings, appVersion(), createdAt);
const prepared = keyring.prepare(created.key, createdAt);
const created = createBackup(settings, appVersion(), createdAt, retention);
const prepared = keyring.prepare(created.key, createdAt, created.expiresAt ?? null);
await uploadBackup(created.record);
try {
await keyring.commit(prepared);
@@ -117,9 +119,9 @@ function createOnlineBackupManager({
}
}
async function createManaged() {
async function createManaged(retention = '7d') {
try {
return await serialize(createTransaction);
return await serialize(() => createTransaction(retention));
} catch (error) {
return keyringFailure(error, ERRORS.create);
}