From 48243c8095be7551d962d3b43009d0b4d1a4df09 Mon Sep 17 00:00:00 2001 From: Nikola Glumac Date: Wed, 13 Mar 2019 14:33:40 +0100 Subject: [PATCH] [DEVOPS-1195] Improve code style --- features/support/helpers/wallets-helpers.js | 2 +- source/common/ipc/api.js | 12 +---- source/common/types/wallet-importer.types.js | 2 +- source/main/ipc/extractWalletsChannel.js | 2 +- source/main/ipc/generateRawSecretChannel.js | 25 ---------- source/main/ipc/index.js | 2 - source/renderer/app/api/api.js | 50 +++++++++---------- ...letAsJSON.js => exportWalletToJSONFile.js} | 6 +-- .../api/wallets/requests/getWalletBalance.js | 4 +- ...tAsJSON.js => importWalletFromJSONFile.js} | 2 +- ...letAsKey.js => importWalletFromKeyFile.js} | 6 +-- ...Secret.js => importWalletFromSecretKey.js} | 6 +-- source/renderer/app/api/wallets/types.js | 8 +-- .../app/ipc/generateRawSecretChannel.js | 14 ------ .../app/stores/WalletImporterStore.js | 16 +++--- source/renderer/app/stores/WalletsStore.js | 2 +- 16 files changed, 53 insertions(+), 106 deletions(-) delete mode 100644 source/main/ipc/generateRawSecretChannel.js rename source/renderer/app/api/wallets/requests/{exportWalletAsJSON.js => exportWalletToJSONFile.js} (69%) rename source/renderer/app/api/wallets/requests/{importWalletAsJSON.js => importWalletFromJSONFile.js} (88%) rename source/renderer/app/api/wallets/requests/{importWalletAsKey.js => importWalletFromKeyFile.js} (75%) rename source/renderer/app/api/wallets/requests/{importWalletAsRawSecret.js => importWalletFromSecretKey.js} (74%) delete mode 100644 source/renderer/app/ipc/generateRawSecretChannel.js diff --git a/features/support/helpers/wallets-helpers.js b/features/support/helpers/wallets-helpers.js index 4326d2b913..b5db24b89d 100644 --- a/features/support/helpers/wallets-helpers.js +++ b/features/support/helpers/wallets-helpers.js @@ -59,7 +59,7 @@ export const addOrSetWalletsForScenario = function (wallet) { export const importWalletWithFunds = async (client, { keyFilePath, password }) => ( await client.executeAsync((filePath, spendingPassword, done) => { - daedalus.api.ada.importWalletFromKey({ filePath, spendingPassword }) + daedalus.api.ada.importWalletFromKeyFile({ filePath, spendingPassword }) .then(() => ( daedalus.stores.wallets.refreshWalletsData() .then(done) diff --git a/source/common/ipc/api.js b/source/common/ipc/api.js index 81ecf7bd2e..8660c629f8 100644 --- a/source/common/ipc/api.js +++ b/source/common/ipc/api.js @@ -10,10 +10,7 @@ import type { } from '../types/report-request.types'; import type { GeneratePaperWalletParams } from '../types/paper-wallet-request.types'; import type { CheckDiskSpaceResponse } from '../types/no-disk-space.types'; -import type { - ExtractedWallet, - ExtractedWallets, -} from '../types/wallet-importer.types'; +import type { ExtractedWallets } from '../types/wallet-importer.types'; /** * Channel for loading an base64 encoded asset from within the `source/renderer` folder @@ -77,13 +74,6 @@ export const ExtractWalletsChannelName = 'ExtractWalletsChannel'; export type ExtractWalletsRendererRequest = { secretKeyFilePath: string }; export type ExtractWalletsMainResponse = ExtractedWallets; -/** - * Channel for generating wallet key file - */ -export const GenerateRawSecretChannelName = 'GenerateRawSecretChannel'; -export type GenerateRawSecretRendererRequest = { wallet: ExtractedWallet }; -export type GenerateRawSecretMainResponse = string; - /** * Channel for matching extracted wallets passwords */ diff --git a/source/common/types/wallet-importer.types.js b/source/common/types/wallet-importer.types.js index 137a7ee1e0..f6eba50dd4 100644 --- a/source/common/types/wallet-importer.types.js +++ b/source/common/types/wallet-importer.types.js @@ -1,7 +1,7 @@ // @flow export type ExtractedWallet = { index: number, - raw: Array, + encryptedSecretKey: string, passwordHash: string, password: ?string, balance: ?string, diff --git a/source/main/ipc/extractWalletsChannel.js b/source/main/ipc/extractWalletsChannel.js index c26bcce286..5c22cc63fb 100644 --- a/source/main/ipc/extractWalletsChannel.js +++ b/source/main/ipc/extractWalletsChannel.js @@ -28,7 +28,7 @@ export const handleExtractWalletsRequests = () => { keys.forEach((key, index) => { wallets.push({ index: index + 1, - raw: key, + encryptedSecretKey: cbor.encode(key).toString('hex'), passwordHash: key[1].toString('ascii'), password: null, balance: null, diff --git a/source/main/ipc/generateRawSecretChannel.js b/source/main/ipc/generateRawSecretChannel.js deleted file mode 100644 index e2fe0431fd..0000000000 --- a/source/main/ipc/generateRawSecretChannel.js +++ /dev/null @@ -1,25 +0,0 @@ -// @flow -import cbor from 'cbor'; -import { MainIpcChannel } from './lib/MainIpcChannel'; -import { GenerateRawSecretChannelName } from '../../common/ipc/api'; -import type { - GenerateRawSecretRendererRequest, - GenerateRawSecretMainResponse, -} from '../../common/ipc/api'; - -export const generateRawSecretChannel: ( - // IpcChannel - MainIpcChannel -) = ( - new MainIpcChannel(GenerateRawSecretChannelName) -); - -export const handleGenerateRawSecretRequests = () => { - generateRawSecretChannel.onReceive((request: GenerateRawSecretRendererRequest) => ( - new Promise((resolve) => { - const { wallet } = request; - const rawSecret = cbor.encode(wallet.raw).toString('hex'); // EncryptedSecretKey - resolve(rawSecret); - }) - )); -}; diff --git a/source/main/ipc/index.js b/source/main/ipc/index.js index ae2647327e..9aaf27785a 100644 --- a/source/main/ipc/index.js +++ b/source/main/ipc/index.js @@ -8,7 +8,6 @@ import resizeWindowApi from './resize-window'; import loadAsset from './load-asset'; import getGpuStatus from './get-gpu-status'; import { handleExtractWalletsRequests } from './extractWalletsChannel'; -import { handleGenerateRawSecretRequests } from './generateRawSecretChannel'; import { handleMatchWalletsPasswordsRequests } from './matchWalletsPasswordsChannel'; import { handleReportRequests } from './reportRequestChannel'; import { handlePaperWalletRequests } from './generatePaperWalletChannel'; @@ -23,7 +22,6 @@ export default (window: BrowserWindow) => { loadAsset(); getGpuStatus(); handleExtractWalletsRequests(); - handleGenerateRawSecretRequests(); handleMatchWalletsPasswordsRequests(); handleReportRequests(); handlePaperWalletRequests(); diff --git a/source/renderer/app/api/api.js b/source/renderer/app/api/api.js index 8a6427e279..f2914eadfd 100644 --- a/source/renderer/app/api/api.js +++ b/source/renderer/app/api/api.js @@ -33,12 +33,12 @@ import { redeemPaperVendedAda } from './transactions/requests/redeemPaperVendedA import { resetWalletState } from './wallets/requests/resetWalletState'; import { changeSpendingPassword } from './wallets/requests/changeSpendingPassword'; import { deleteWallet } from './wallets/requests/deleteWallet'; -import { exportWalletAsJSON } from './wallets/requests/exportWalletAsJSON'; -import { importWalletAsJSON } from './wallets/requests/importWalletAsJSON'; +import { exportWalletToJSONFile } from './wallets/requests/exportWalletToJSONFile'; +import { importWalletFromJSONFile } from './wallets/requests/importWalletFromJSONFile'; import { getWallets } from './wallets/requests/getWallets'; import { getWalletBalance } from './wallets/requests/getWalletBalance'; -import { importWalletAsKey } from './wallets/requests/importWalletAsKey'; -import { importWalletAsRawSecret } from './wallets/requests/importWalletAsRawSecret'; +import { importWalletFromKeyFile } from './wallets/requests/importWalletFromKeyFile'; +import { importWalletFromSecretKey } from './wallets/requests/importWalletFromSecretKey'; import { createWallet } from './wallets/requests/createWallet'; import { restoreWallet } from './wallets/requests/restoreWallet'; import { updateWallet } from './wallets/requests/updateWallet'; @@ -125,9 +125,9 @@ import type { GetWalletBalanceResponse, GetWalletCertificateRecoveryPhraseRequest, GetWalletRecoveryPhraseFromCertificateRequest, - ImportWalletFromKeyRequest, + ImportWalletFromKeyFileRequest, ImportWalletFromFileRequest, - ImportWalletFromRawSecretRequest, + ImportWalletFromSecretKeyRequest, UpdateWalletRequest } from './wallets/types'; @@ -615,20 +615,20 @@ export default class AdaApi { } }; - importWalletFromKey = async ( - request: ImportWalletFromKeyRequest + importWalletFromKeyFile = async ( + request: ImportWalletFromKeyFileRequest ): Promise => { - Logger.debug('AdaApi::importWalletFromKey called', { parameters: filterLogData(request) }); + Logger.debug('AdaApi::importWalletFromKeyFile called', { parameters: filterLogData(request) }); const { filePath, spendingPassword: passwordString } = request; const spendingPassword = passwordString ? encryptPassphrase(passwordString) : ''; try { - const importedWallet: AdaWallet = await importWalletAsKey( + const importedWallet: AdaWallet = await importWalletFromKeyFile( this.config, { filePath, spendingPassword } ); - Logger.debug('AdaApi::importWalletFromKey success', { importedWallet }); + Logger.debug('AdaApi::importWalletFromKeyFile success', { importedWallet }); return _createWalletFromServerData(importedWallet); } catch (error) { - Logger.error('AdaApi::importWalletFromKey error', { error }); + Logger.error('AdaApi::importWalletFromKeyFile error', { error }); if (error.message === 'WalletAlreadyExists') { throw new WalletAlreadyImportedError(error); } @@ -645,9 +645,9 @@ export default class AdaApi { const isKeyFile = filePath.split('.').pop().toLowerCase() === 'key'; try { const importedWallet: AdaWallet = isKeyFile ? ( - await importWalletAsKey(this.config, { filePath, spendingPassword }) + await importWalletFromKeyFile(this.config, { filePath, spendingPassword }) ) : ( - await importWalletAsJSON(this.config, filePath) + await importWalletFromJSONFile(this.config, filePath) ); Logger.debug('AdaApi::importWalletFromFile success', { importedWallet }); return _createWalletFromServerData(importedWallet); @@ -660,20 +660,20 @@ export default class AdaApi { } }; - importWalletFromRawSecret = async ( - request: ImportWalletFromRawSecretRequest + importWalletFromSecretKey = async ( + request: ImportWalletFromSecretKeyRequest ): Promise => { - Logger.debug('AdaApi::importWalletFromRawSecret called'); - const { rawSecret, spendingPassword: passwordString } = request; + Logger.debug('AdaApi::importWalletFromSecretKey called'); + const { encryptedSecretKey, spendingPassword: passwordString } = request; const spendingPassword = passwordString ? encryptPassphrase(passwordString) : ''; try { - const importedWallet: AdaWallet = await importWalletAsRawSecret( - this.config, { rawSecret, spendingPassword } + const importedWallet: AdaWallet = await importWalletFromSecretKey( + this.config, { rawSecret: encryptedSecretKey, spendingPassword } ); - Logger.debug('AdaApi::importWalletFromRawSecret success', { importedWallet }); + Logger.debug('AdaApi::importWalletFromSecretKey success', { importedWallet }); return _createWalletFromServerData(importedWallet); } catch (error) { - Logger.error('AdaApi::importWalletFromRawSecret error', { error }); + Logger.error('AdaApi::importWalletFromSecretKey error', { error }); if (error.message === 'WalletAlreadyExists') { throw new WalletAlreadyImportedError(error); } @@ -685,10 +685,10 @@ export default class AdaApi { request: GetWalletBalanceRequest ): Promise => { Logger.debug('AdaApi::getWalletBalance called'); - const { rawSecret } = request; + const { encryptedSecretKey } = request; try { const walletBalance: GetWalletBalanceResponse = - await getWalletBalance(this.config, rawSecret); + await getWalletBalance(this.config, encryptedSecretKey); Logger.debug('AdaApi::getWalletBalance success', { walletBalance }); const { balance, walletId } = walletBalance; return { @@ -828,7 +828,7 @@ export default class AdaApi { const { walletId, filePath } = request; Logger.debug('AdaApi::exportWalletToFile called', { parameters: filterLogData(request) }); try { - const response: Promise<[]> = await exportWalletAsJSON( + const response: Promise<[]> = await exportWalletToJSONFile( this.config, { walletId, filePath } ); Logger.debug('AdaApi::exportWalletToFile success', { response }); diff --git a/source/renderer/app/api/wallets/requests/exportWalletAsJSON.js b/source/renderer/app/api/wallets/requests/exportWalletToJSONFile.js similarity index 69% rename from source/renderer/app/api/wallets/requests/exportWalletAsJSON.js rename to source/renderer/app/api/wallets/requests/exportWalletToJSONFile.js index 0b7dafdd65..c53c32e0c8 100644 --- a/source/renderer/app/api/wallets/requests/exportWalletAsJSON.js +++ b/source/renderer/app/api/wallets/requests/exportWalletToJSONFile.js @@ -2,14 +2,14 @@ import type { RequestConfig } from '../../common/types'; import { request } from '../../utils/requestV0'; -export type ExportWalletAsJSONParams = { +export type ExportWalletToJSONFileParams = { walletId: string, filePath: string, }; -export const exportWalletAsJSON = ( +export const exportWalletToJSONFile = ( config: RequestConfig, - { walletId, filePath }: ExportWalletAsJSONParams, + { walletId, filePath }: ExportWalletToJSONFileParams, ): Promise<[]> => ( request({ method: 'POST', diff --git a/source/renderer/app/api/wallets/requests/getWalletBalance.js b/source/renderer/app/api/wallets/requests/getWalletBalance.js index 823cfa5b6f..3fece339dc 100644 --- a/source/renderer/app/api/wallets/requests/getWalletBalance.js +++ b/source/renderer/app/api/wallets/requests/getWalletBalance.js @@ -5,11 +5,11 @@ import { request } from '../../utils/request'; export const getWalletBalance = ( config: RequestConfig, - rawSecret: string, // EncryptedSecretKey (hex-encoded) + encryptedSecretKey: string, // EncryptedSecretKey (hex-encoded) ): Promise => ( request({ method: 'POST', path: '/api/internal/query-balance', ...config, - }, {}, rawSecret) + }, {}, encryptedSecretKey) ); diff --git a/source/renderer/app/api/wallets/requests/importWalletAsJSON.js b/source/renderer/app/api/wallets/requests/importWalletFromJSONFile.js similarity index 88% rename from source/renderer/app/api/wallets/requests/importWalletAsJSON.js rename to source/renderer/app/api/wallets/requests/importWalletFromJSONFile.js index 37be1c93ee..5919242afb 100644 --- a/source/renderer/app/api/wallets/requests/importWalletAsJSON.js +++ b/source/renderer/app/api/wallets/requests/importWalletFromJSONFile.js @@ -3,7 +3,7 @@ import type { RequestConfig } from '../../common/types'; import type { AdaWallet } from '../types'; import { request } from '../../utils/requestV0'; -export const importWalletAsJSON = ( +export const importWalletFromJSONFile = ( config: RequestConfig, filePath: string, ): Promise => ( diff --git a/source/renderer/app/api/wallets/requests/importWalletAsKey.js b/source/renderer/app/api/wallets/requests/importWalletFromKeyFile.js similarity index 75% rename from source/renderer/app/api/wallets/requests/importWalletAsKey.js rename to source/renderer/app/api/wallets/requests/importWalletFromKeyFile.js index 6dcb66c815..2378be515f 100644 --- a/source/renderer/app/api/wallets/requests/importWalletAsKey.js +++ b/source/renderer/app/api/wallets/requests/importWalletFromKeyFile.js @@ -3,14 +3,14 @@ import type { RequestConfig } from '../../common/types'; import type { AdaWallet } from '../types'; import { request } from '../../utils/request'; -export type ImportWalletAsKey = { +export type ImportWalletFromKeyFile = { filePath: string, spendingPassword?: string, }; -export const importWalletAsKey = ( +export const importWalletFromKeyFile = ( config: RequestConfig, - walletImportData: ImportWalletAsKey + walletImportData: ImportWalletFromKeyFile ): Promise => ( request({ method: 'POST', diff --git a/source/renderer/app/api/wallets/requests/importWalletAsRawSecret.js b/source/renderer/app/api/wallets/requests/importWalletFromSecretKey.js similarity index 74% rename from source/renderer/app/api/wallets/requests/importWalletAsRawSecret.js rename to source/renderer/app/api/wallets/requests/importWalletFromSecretKey.js index 4be03af0ab..a43b49148d 100644 --- a/source/renderer/app/api/wallets/requests/importWalletAsRawSecret.js +++ b/source/renderer/app/api/wallets/requests/importWalletFromSecretKey.js @@ -3,14 +3,14 @@ import type { RequestConfig } from '../../common/types'; import type { AdaWallet } from '../types'; import { request } from '../../utils/request'; -export type ImportWalletAsRawSecret = { +export type ImportWalletFromSecretKey = { rawSecret: string, spendingPassword?: string, }; -export const importWalletAsRawSecret = ( +export const importWalletFromSecretKey = ( config: RequestConfig, - walletImportData: ImportWalletAsRawSecret + walletImportData: ImportWalletFromSecretKey ): Promise => ( request({ method: 'POST', diff --git a/source/renderer/app/api/wallets/types.js b/source/renderer/app/api/wallets/types.js index 356042a451..10f20e5970 100644 --- a/source/renderer/app/api/wallets/types.js +++ b/source/renderer/app/api/wallets/types.js @@ -72,13 +72,13 @@ export type UpdateWalletRequest = { name: string }; -export type ImportWalletFromKeyRequest = { +export type ImportWalletFromKeyFileRequest = { filePath: string, spendingPassword: ?string, }; -export type ImportWalletFromRawSecretRequest = { - rawSecret: string, +export type ImportWalletFromSecretKeyRequest = { + encryptedSecretKey: string, spendingPassword: ?string, }; @@ -105,7 +105,7 @@ export type GetWalletRecoveryPhraseFromCertificateRequest = { }; export type GetWalletBalanceRequest = { - rawSecret: string, + encryptedSecretKey: string, }; export type GetWalletBalanceResponse = { diff --git a/source/renderer/app/ipc/generateRawSecretChannel.js b/source/renderer/app/ipc/generateRawSecretChannel.js deleted file mode 100644 index 27a5d58c7a..0000000000 --- a/source/renderer/app/ipc/generateRawSecretChannel.js +++ /dev/null @@ -1,14 +0,0 @@ -// @flow -import { GenerateRawSecretChannelName } from '../../../common/ipc/api'; -import type { - GenerateRawSecretRendererRequest, - GenerateRawSecretMainResponse -} from '../../../common/ipc/api'; -import { RendererIpcChannel } from './lib/RendererIpcChannel'; - -export const generateRawSecretChannel: ( - // IpcChannel - RendererIpcChannel -) = ( - new RendererIpcChannel(GenerateRawSecretChannelName) -); diff --git a/source/renderer/app/stores/WalletImporterStore.js b/source/renderer/app/stores/WalletImporterStore.js index d56cb08b80..34252bda48 100644 --- a/source/renderer/app/stores/WalletImporterStore.js +++ b/source/renderer/app/stores/WalletImporterStore.js @@ -6,7 +6,6 @@ import Store from './lib/Store'; import Request from './lib/LocalizedRequest'; import Wallet from '../domains/Wallet'; import { extractWalletsChannel } from '../ipc/extractWalletsChannel'; -import { generateRawSecretChannel } from '../ipc/generateRawSecretChannel'; import { matchWalletsPasswordsChannel } from '../ipc/matchWalletsPasswordsChannel'; import { formattedWalletAmount } from '../utils/formatters'; import type { WalletBalance } from '../api/wallets/types'; @@ -24,8 +23,8 @@ export default class WalletImporterStore extends Store { @observable extractedWallets: ExtractedWallets = []; /* eslint-disable max-len */ - @observable importWalletFromRawSecretRequest: Request = new Request(this.api.ada.importWalletFromRawSecret); @observable getWalletBalanceRequest: Request = new Request(this.api.ada.getWalletBalance); + @observable importWalletFromSecretKeyRequest: Request = new Request(this.api.ada.importWalletFromSecretKey); /* eslint-disable max-len */ setup() { @@ -80,13 +79,13 @@ export default class WalletImporterStore extends Store { @action _extractBalances = async (wallets: ExtractedWallets) => { const walletsWithBalances = []; - for (const wallet of toJS(wallets)) { + for (const wallet of wallets) { const { balance } = wallet; if (balance == null) { - const rawSecret = await generateRawSecretChannel.send({ wallet }); + const { encryptedSecretKey } = wallet; try { const walletBalance = - await this.getWalletBalanceRequest.execute({ rawSecret }).promise; + await this.getWalletBalanceRequest.execute({ encryptedSecretKey }).promise; const { balance: amount, walletId } = walletBalance; const isImported = this.stores.wallets.getWalletById(walletId) != null; wallet.id = walletId; @@ -101,10 +100,9 @@ export default class WalletImporterStore extends Store { @action _importKeyFile = async (params: { wallet: ExtractedWallet }) => { const { wallet } = params; - const rawSecret = await generateRawSecretChannel.send({ wallet: toJS(wallet) }); - const spendingPassword = wallet.password; - const importedWallet = await this.importWalletFromRawSecretRequest.execute({ - rawSecret, spendingPassword, + const { password: spendingPassword, encryptedSecretKey } = wallet; + const importedWallet = await this.importWalletFromSecretKeyRequest.execute({ + encryptedSecretKey, spendingPassword, }).promise; if (!importedWallet) throw new Error('Imported wallet was not received correctly'); await this.stores.wallets._patchWalletRequestWithNewWallet(importedWallet); diff --git a/source/renderer/app/stores/WalletsStore.js b/source/renderer/app/stores/WalletsStore.js index 5fa0916288..68cf3b066b 100644 --- a/source/renderer/app/stores/WalletsStore.js +++ b/source/renderer/app/stores/WalletsStore.js @@ -29,7 +29,7 @@ export default class WalletsStore extends Store { @observable isRestoreActive: boolean = false; @observable restoringWalletId: ?string = null; @observable walletsRequest: Request> = new Request(this.api.ada.getWallets); - @observable importFromKeyRequest: Request = new Request(this.api.ada.importWalletFromKey); + @observable importFromKeyRequest: Request = new Request(this.api.ada.importWalletFromKeyFile); @observable createWalletRequest: Request = new Request(this.api.ada.createWallet); @observable getWalletAddressesRequest: Request = new Request(this.api.ada.getAddresses); @observable deleteWalletRequest: Request = new Request(this.api.ada.deleteWallet);