add settings page with reset app: clears keychain secrets and SQLite cache

This commit is contained in:
2026-05-18 04:04:24 +08:00
parent fc81e0889a
commit 9c856129d8
5 changed files with 117 additions and 0 deletions
+29
View File
@@ -28,6 +28,13 @@ import {
MoneroWalletManager,
} from './lib/monero'
import { canPromptTouchID, promptTouchID } from './lib/biometric'
import { sqlite } from './lib/sqlite'
import {
tokenMetadata,
transactions,
transactionReceipts,
txHistory,
} from './lib/db/schema'
const env = getENV()
@@ -134,6 +141,10 @@ type TxEntry = {
type RPC = {
bun: RPCSchema<{
requests: {
resetApp: {
params: {}
response: boolean
}
biometricCanAuth: {
params: {}
response: boolean
@@ -366,6 +377,24 @@ const rpc = BrowserView.defineRPC<RPC>({
maxRequestTime: 120000,
handlers: {
requests: {
resetApp: async () => {
try {
await Promise.all([
Bun.secrets.delete({ service: 'koins', name: 'vault' }),
Bun.secrets.delete({ service: 'koins', name: 'vault_password' }),
Bun.secrets.delete({ service: 'koins', name: 'alchemy_key' }),
])
sqlite.run('DELETE FROM token_metadata')
sqlite.run('DELETE FROM transactions')
sqlite.run('DELETE FROM transaction_receipts')
sqlite.run('DELETE FROM tx_history')
console.log('[rpc] resetApp complete')
return true
} catch (e) {
console.log('[rpc] resetApp error:', e)
return false
}
},
biometricCanAuth: async () => {
try {
return canPromptTouchID()