From eedacacf89861c087120ffaf1eda10510cc57695 Mon Sep 17 00:00:00 2001 From: Andrei O Date: Mon, 17 Oct 2022 02:21:07 +0300 Subject: [PATCH] update: don't delete accounts without password if settings encryption is enabled --- package.json | 3 +- release-scripts/create-release.ts | 22 +++++++----- src/extension/manifest.json | 4 +-- src/extension/serviceWorker.ts | 58 ++++++++++++++++++++++++++++++- src/views/AccountsTab.vue | 22 +++++++++--- tsconfig.json | 3 +- yarn.lock | 20 +++++++++++ 7 files changed, 114 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 6e98aa5..df49fea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clear-wallet", - "version": "1.0.7", + "version": "1.0.8", "private": true, "scripts": { "dev": "vite", @@ -27,6 +27,7 @@ "devDependencies": { "@capacitor/cli": "^4.3.0", "@crxjs/vite-plugin": "^1.0.14", + "@types/archiver": "^5.3.1", "@types/jest": "^29.0.3", "@types/node": "^18.7.19", "@typescript-eslint/eslint-plugin": "^5.38.0", diff --git a/release-scripts/create-release.ts b/release-scripts/create-release.ts index 4688cb7..b5ff83f 100644 --- a/release-scripts/create-release.ts +++ b/release-scripts/create-release.ts @@ -1,10 +1,16 @@ -import archiver from 'archiver'; -import fs from 'fs'; -import { spawn } from 'child_process'; +const pFs = import('fs') +const pCps = import ('child_process') + +async function ghRelease(changes: string[]) { + const fs = (await pFs).default + + if (!fs.existsSync('releases')){ + fs.mkdirSync('releases'); + } -async function ghRelease(changes) { const pkg = JSON.parse(fs.readFileSync('package.json').toString()); + const archiver = (await import('archiver')).default const archive = archiver('zip', { zlib: { level: 9 } }); const dirPipes = ['dist']; @@ -20,7 +26,7 @@ async function ghRelease(changes) { filePipes.forEach((file) => { arch = arch.file(file, { name: file }); }); - arch.on('error', (err) => reject(err)).pipe(outputZip); + arch.on('error', (err: unknown) => reject(err)).pipe(outputZip); outputZip.on('close', () => resolve(true)); arch.finalize(); @@ -31,14 +37,14 @@ async function ghRelease(changes) { fs.writeFileSync( changeLogPath, `# ${pkg.version} \n - ${changes.reduce((acc, change) => { + ${changes.reduce((acc: string, change: string) => { return acc + `- ${change}\n`; }, '')}`, ); - + const cps = (await pCps) console.log( await new Promise((resolve) => { - const p = spawn('gh', ['release', 'create', `v${pkg.version}`, `./${outputPath}`, '-F', `./${changeLogPath}`], { + const p = cps.spawn('gh', ['release', 'create', `v${pkg.version}`, `./${outputPath}`, '-F', `./${changeLogPath}`], { shell: true, }); // const p = spawn('pwd'); diff --git a/src/extension/manifest.json b/src/extension/manifest.json index ddf7832..4852477 100644 --- a/src/extension/manifest.json +++ b/src/extension/manifest.json @@ -3,8 +3,8 @@ "name": "__MSG_appName__", "description": "__MSG_appDesc__", "default_locale": "en", - "version": "1.0.5", - "version_name": "1.0.5", + "version": "1.0.8", + "version_name": "1.0.8", "icons": { "16": "assets/extension-icon/wallet_16.png", "32": "assets/extension-icon/wallet_32.png", diff --git a/src/extension/serviceWorker.ts b/src/extension/serviceWorker.ts index abc3618..b298504 100644 --- a/src/extension/serviceWorker.ts +++ b/src/extension/serviceWorker.ts @@ -96,6 +96,7 @@ chrome.runtime.onMessage.addListener((message: RequestArguments, sender, sendRes break } case 'eth_getBlockByNumber': { + try { const params = message?.params?.[0] as any const block = await getBlockByNumber(params) as any block.gasLimit = block.gasLimit.toHexString() @@ -103,29 +104,77 @@ chrome.runtime.onMessage.addListener((message: RequestArguments, sender, sendRes block.baseFeePerGas = block.baseFeePerGas.toHexString() block._difficulty = block._difficulty.toHexString() sendResponse(block) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break; } case 'eth_getTransactionByHash': { + try { sendResponse(await getTxByHash(message?.params?.[0] as string)) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break } case 'eth_getTransactionReceipt':{ + try { sendResponse(await getTxReceipt(message?.params?.[0] as string)) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break } case 'eth_gasPrice': { + try { sendResponse((await getGasPrice()).toHexString()) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break; } case 'eth_getBalance': { + try { sendResponse(await getBalance()) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break } case 'eth_blockNumber': { + try { sendResponse(await getBlockNumber()) + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } break } case 'eth_estimateGas': { + try { const params = message?.params?.[0] as any if(!params) { sendResponse({ @@ -141,7 +190,14 @@ chrome.runtime.onMessage.addListener((message: RequestArguments, sender, sendRes data: params?.data ?? '', value: params?.value ?? '0x0' })) - break + } catch { + sendResponse({ + error: true, + code: rpcError.USER_REJECTED, + message: 'No network or user selected' + }) + } + break } case 'eth_requestAccounts': case 'eth_accounts': { diff --git a/src/views/AccountsTab.vue b/src/views/AccountsTab.vue index 3140c35..a5c3d8b 100644 --- a/src/views/AccountsTab.vue +++ b/src/views/AccountsTab.vue @@ -69,7 +69,7 @@