diff --git a/dl/src/actions/ImportKeysActions.js b/dl/src/actions/ImportKeysActions.js deleted file mode 100644 index ad2b14622..000000000 --- a/dl/src/actions/ImportKeysActions.js +++ /dev/null @@ -1,17 +0,0 @@ -import alt from "alt-instance" - -export default alt.generateActions( "setStatus" ) - -/* -class ImportKeysActions { - - saved() { - this.dispatch() - } - -} - - -var ImportKeysActionsWrapped = alt.createActions(ImportKeysActions) -export default ImportKeysActionsWrapped -*/ diff --git a/dl/src/alt-instance.js b/dl/src/alt-instance.js index 2d961139a..4bc9e6256 100644 --- a/dl/src/alt-instance.js +++ b/dl/src/alt-instance.js @@ -1,9 +1,7 @@ var Alt = require("alt"); var alt = new Alt(); - // DEBUG log all action events -// https://github.com/goatslacker/alt/issues/516 -// alt.dispatcher.register('alt.dispatcher', console.log.bind(console)) +alt.dispatcher.register(console.log.bind(console, 'alt.dispatcher')) module.exports = alt; diff --git a/dl/src/stores/AddressIndex.js b/dl/src/stores/AddressIndex.js index d7d141dd6..5bae35a99 100644 --- a/dl/src/stores/AddressIndex.js +++ b/dl/src/stores/AddressIndex.js @@ -47,39 +47,39 @@ class AddressIndex extends BaseStore { /** Worker thread implementation (for more than 10K keys) */ addAll(pubkeys) { - console.log("addAll"); - this.saving() - this.loadAddyMap().then( () => { - var AddressIndexWorker = require("worker!workers/AddressIndexWorker") - var worker = new AddressIndexWorker - worker.postMessage({ pubkeys }) - var _this = this - worker.onmessage = event => { try { - console.log("addAll onmessage"); - var key_addresses = event.data - var dirty = false - var addresses = _this.state.addresses.withMutations( addresses => { - for(let i = 0; i < pubkeys.length; i++) { - var pubkey = pubkeys[i] - if(_this.pubkeys.has(pubkey)) continue - _this.pubkeys.add(pubkey) - // Gather all 5 legacy address formats (see key.addresses) - var address_strings = key_addresses[i] - for(let address of address_strings) { - addresses.set(address, pubkey) - dirty = true + return new Promise( (resolve, reject) => { + this.saving() + this.loadAddyMap().then( () => { + var AddressIndexWorker = require("worker!workers/AddressIndexWorker") + var worker = new AddressIndexWorker + worker.postMessage({ pubkeys }) + var _this = this + worker.onmessage = event => { try { + var key_addresses = event.data + var dirty = false + var addresses = _this.state.addresses.withMutations( addresses => { + for(let i = 0; i < pubkeys.length; i++) { + var pubkey = pubkeys[i] + if(_this.pubkeys.has(pubkey)) continue + _this.pubkeys.add(pubkey) + // Gather all 5 legacy address formats (see key.addresses) + var address_strings = key_addresses[i] + for(let address of address_strings) { + addresses.set(address, pubkey) + dirty = true + } } + }) + if( dirty ) { + _this.setState({ addresses }) + _this.saveAddyMap() + } else { + _this.setState({ saving: false }) } - }) - if( dirty ) { - _this.setState({ addresses }) - _this.saveAddyMap() - } else { - _this.setState({ saving: false }) - } - console.log("addAll onmessage done"); - } catch( e ) { console.error('AddressIndex.addAll', e) }} - }).catch ( e => { throw e }) + resolve() + } catch( e ) { console.error('AddressIndex.addAll', e); reject(e) }} + }).catch ( e => { throw e }) + }) } loadAddyMap() { diff --git a/dl/src/stores/ImportKeysStore.js b/dl/src/stores/ImportKeysStore.js deleted file mode 100644 index 183591712..000000000 --- a/dl/src/stores/ImportKeysStore.js +++ /dev/null @@ -1,18 +0,0 @@ -import alt from "alt-instance" - -import ImportKeysActions from "actions/ImportKeysActions" - -class ImportKeysStore { - - constructor() { - this.bindActions(ImportKeysActions) - } - - onSetStatus(status) { - this.setState({status}) - } - -} - -export var ImportKeysStoreWrapped = alt.createStore(ImportKeysStore, "ImportKeysStore"); -export default ImportKeysStoreWrapped diff --git a/dl/src/stores/PrivateKeyStore.js b/dl/src/stores/PrivateKeyStore.js index ddae7462e..f3e811c9b 100644 --- a/dl/src/stores/PrivateKeyStore.js +++ b/dl/src/stores/PrivateKeyStore.js @@ -8,6 +8,7 @@ import {PrivateKeyTcomb} from "./tcomb_structs"; import PrivateKeyActions from "actions/PrivateKeyActions" import CachedPropertyActions from "actions/CachedPropertyActions" import AddressIndex from "stores/AddressIndex" +import ChainStore from "api/ChainStore" import PublicKey from "ecc/key_public" import Address from "ecc/address" @@ -169,9 +170,11 @@ class PrivateKeyStore extends BaseStore { var private_tcomb = PrivateKeyTcomb(private_key_object) store.add( private_key_object ) keys.set( private_key_object.pubkey, private_tcomb ) + ChainStore.getAccountRefsOfKey(private_key_object.pubkey) } }) this.setState({ keys }) + this.binaryBackupRecommended() return duplicate_count } diff --git a/dl/src/stores/WalletDb.js b/dl/src/stores/WalletDb.js index 934abe94f..63b467e10 100644 --- a/dl/src/stores/WalletDb.js +++ b/dl/src/stores/WalletDb.js @@ -35,7 +35,7 @@ class WalletDb extends BaseStore { // WalletDb use to be a plan old javascript class (not an Alt store) so // for now many methods need to be exported... this._export( - "checkNextGeneratedKey","getWallet","onLock","isLocked","decryptTcomb_PrivateKey","getPrivateKey","process_transaction","transaction_update","transaction_update_keys","getBrainKey","getBrainKeyPrivate","onCreateWallet","validatePassword","changePassword","generateNextKey","incrementBrainKeySequence","importKeys","saveKeys","saveKey","setWalletModified","setBackupDate","setBrainkeyBackupDate","_updateWallet","loadDbData", + "checkNextGeneratedKey","getWallet","onLock","isLocked","decryptTcomb_PrivateKey","getPrivateKey","process_transaction","transaction_update","transaction_update_keys","getBrainKey","getBrainKeyPrivate","onCreateWallet","validatePassword","changePassword","generateNextKey","incrementBrainKeySequence","saveKeys","saveKey","setWalletModified","setBackupDate","setBrainkeyBackupDate","_updateWallet","loadDbData", "importKeysWorker" ) } @@ -337,11 +337,11 @@ class WalletDb extends BaseStore { } importKeysWorker(private_key_objs) { - WalletUnlockActions.unlock().then( () => { + return new Promise( (resolve, reject) => { var pubkeys = [] for(let private_key_obj of private_key_objs) pubkeys.push( private_key_obj.public_key_string ) - AddressIndex.addAll(pubkeys) + var addyIndexPromise = AddressIndex.addAll(pubkeys) var private_plainhex_array = [] for(let private_key_obj of private_key_objs) @@ -379,74 +379,28 @@ class WalletDb extends BaseStore { } enc_private_key_objs.push(private_key_object) } - console.log("Ready to save private keys"); + console.log("Saving private keys", new Date().toString()); var transaction = _this.transaction_update_keys() + var insertKeysPromise = idb_helper.on_transaction_end(transaction) try { - var duplicate_count = PrivateKeyStore. - addPrivateKeys_noindex(enc_private_key_objs, transaction ) + var duplicate_count = PrivateKeyStore + .addPrivateKeys_noindex(enc_private_key_objs, transaction ) if( private_key_objs.length != duplicate_count ) _this.setWalletModified(transaction) _this.setState({saving_keys: false}) + resolve(Promise.all([ insertKeysPromise, addyIndexPromise ]).then( ()=> { + console.log("Done saving keys", new Date().toString()) + // return { duplicate_count } + })) } catch(e) { transaction.abort() console.error(e) + reject(e) } - console.log("Done saving keys"); } catch( e ) { console.error('AesWorker.encrypt', e) }} }) } - importKeys(private_key_objs) { - if(TRACE) console.log('... WalletDb.importKeys START') - return WalletUnlockActions.unlock().then( () => { - var transaction = this.transaction_update_keys() - var promises = [] - var import_count = 0, duplicate_count = 0 - if(TRACE) console.log('... importKeys save key loop start') - for(let private_key_obj of private_key_objs) { - - var private_key = - private_key_obj.private_key || - PrivateKey.fromWif( private_key_obj.wif ) - - if( ! private_key) { - console.error("ERROR WalletDb importKeys, missing private_key or wif") - continue - } - promises.push( - this.saveKey( - private_key, - null,//brainkey_sequence - private_key_obj.import_account_names, - private_key_obj.public_key_string, - transaction - ).then( - ret => { - if(ret.result == "duplicate") { - duplicate_count++ - } else if(ret.result == "added") { - import_count++ - } else - throw new Error('unknown return',ret) - return ret.id - } - ) - ) - } - if(TRACE) console.log('... importKeys save key loop done') - return this.setWalletModified(transaction).then( ()=> { - return Promise.all(promises).catch( error => { - //DEBUG - console.log('importKeys transaction.abort', error) - throw error - }).then( private_key_ids => { - if(TRACE) console.log('... WalletDb.importKeys done') - return {import_count, duplicate_count, private_key_ids} - }) - }) - }) - } - saveKeys(private_keys, transaction, public_key_string) { var promises = [] for(let private_key_record of private_keys) { diff --git a/web/app/components/Wallet/BalanceClaimAssetTotal.jsx b/web/app/components/Wallet/BalanceClaimAssetTotal.jsx index ed7ee0d3f..d2d68761b 100644 --- a/web/app/components/Wallet/BalanceClaimAssetTotal.jsx +++ b/web/app/components/Wallet/BalanceClaimAssetTotal.jsx @@ -23,7 +23,7 @@ export default class BalanceClaimAssetTotals extends Component { .map( l => l.reduce( (r,v) => r + Number(v.balance.amount), 0 )) if( ! total_by_asset.size) - return