feat: implement vault synchronization and decryption improvements

- Added background synchronization for vault core data, including optional folder updates.
- Introduced a new API endpoint to retrieve the vault revision date.
- Enhanced vault synchronization logic to utilize a caching mechanism for improved performance.
- Created a new vault cache module to handle IndexedDB storage for vault core snapshots.
- Implemented a worker for asynchronous decryption of vault data, improving UI responsiveness.
- Updated main application settings to adjust query stale time for better data freshness.
- Refactored vault-related API functions to support cache keys for more efficient data retrieval.
This commit is contained in:
shuaiplus
2026-04-28 22:10:34 +08:00
parent aa6f9210b4
commit 1b0386bf78
10 changed files with 702 additions and 331 deletions
@@ -0,0 +1,24 @@
import { decryptSends, decryptVaultCore, type DecryptSendsArgs, type DecryptVaultCoreArgs } from '@/lib/vault-decrypt';
type WorkerRequest =
| { id: number; kind: 'vault-core'; payload: DecryptVaultCoreArgs }
| { id: number; kind: 'sends'; payload: DecryptSendsArgs };
self.onmessage = async (event: MessageEvent<WorkerRequest>) => {
const request = event.data;
try {
if (request.kind === 'vault-core') {
const result = await decryptVaultCore(request.payload);
self.postMessage({ id: request.id, ok: true, result });
return;
}
const result = await decryptSends(request.payload);
self.postMessage({ id: request.id, ok: true, result });
} catch (error) {
self.postMessage({
id: request.id,
ok: false,
error: error instanceof Error ? error.message : 'Decrypt failed',
});
}
};