diff --git a/electron/build/package.json b/electron/build/package.json index 6ca930aea6..a5edf1c797 100644 --- a/electron/build/package.json +++ b/electron/build/package.json @@ -3,7 +3,7 @@ "productName": "BitShares2-light", "identifier": "org.bitshares.graphene", "description": "BitShares - cryptocurrency and decentralized exchange", - "version": "2.0.170327", + "version": "2.0.170328", "author": "community@bitshares.org", "main": "electron.js", "config": { diff --git a/web/app/actions/WalletActions.js b/web/app/actions/WalletActions.js index 6f1b365db1..49da694774 100644 --- a/web/app/actions/WalletActions.js +++ b/web/app/actions/WalletActions.js @@ -42,13 +42,15 @@ class WalletActions { createAccountWithPassword( account_name, password, registrar, referrer, referrer_percent, refcode ) { let {privKey : owner_private} = WalletDb.generateKeyFromPassword(account_name, "owner", password); let {privKey: active_private} = WalletDb.generateKeyFromPassword(account_name, "active", password); - //let memo_private = WalletDb.generateNextKey() + console.log("create account:", account_name); + console.log("new active pubkey", active_private.toPublicKey().toPublicKeyString()); + console.log("new owner pubkey", owner_private.toPublicKey().toPublicKeyString()); return new Promise((resolve, reject) => { let create_account = () => { return application_api.create_account( - owner_private.private_key.toPublicKey().toPublicKeyString(), - active_private.private_key.toPublicKey().toPublicKeyString(), + owner_private.toPublicKey().toPublicKeyString(), + active_private.toPublicKey().toPublicKeyString(), account_name, registrar, //registrar_id, referrer, //referrer_id, @@ -86,13 +88,20 @@ class WalletActions { "referrer": referrer } }) - }).then(r => resolve(r.json())); + }).then(r => r.json().then(res => { + if (!res || (res && res.error)) { + reject(res.error); + } else { + resolve(res); + } + })).catch(reject); return create_account_promise.then(result => { - if (result.error) { + if (result && result.error) { reject(result.error); + } else { + resolve(result); } - resolve(result); }).catch(error => { reject(error); }); diff --git a/web/app/assets/locales/locale-en.json b/web/app/assets/locales/locale-en.json index 6ec3f251cb..ac204c6394 100644 --- a/web/app/assets/locales/locale-en.json +++ b/web/app/assets/locales/locale-en.json @@ -252,7 +252,8 @@ "new_memo": "New memo key", "memo_warning": "WARNING: If you replace the memo key you will be unable to read old memos when logging in with your password, and unless you import the new memo private key into your old wallet that wallet will be unable to decode new memos", "use_text": "Use", - "remove_text": "Remove" + "remove_text": "Remove", + "valid_pub": "Valid Public Key" }, "votes": { "proxy_current": "Your current proxy is", diff --git a/web/app/assets/stylesheets/themes/_theme-template.scss b/web/app/assets/stylesheets/themes/_theme-template.scss index f8c68fcb39..12f348c395 100644 --- a/web/app/assets/stylesheets/themes/_theme-template.scss +++ b/web/app/assets/stylesheets/themes/_theme-template.scss @@ -1223,4 +1223,9 @@ } } } + + input.my-key, td.my-key a { + font-weight: bold; + color: $info-color; + } } diff --git a/web/app/components/Account/AccountOverview.jsx b/web/app/components/Account/AccountOverview.jsx index 48f6a6477e..859906b67c 100644 --- a/web/app/components/Account/AccountOverview.jsx +++ b/web/app/components/Account/AccountOverview.jsx @@ -90,7 +90,7 @@ class AccountOverview extends React.Component { } _getSeparator(render) { - return render ? | : null; + return render ?  |  : null; } _onNavigate(route, e) { @@ -99,20 +99,35 @@ class AccountOverview extends React.Component { } _renderBalances(balanceList, optionalAssets, visible) { + const core_asset = ChainStore.getAsset("1.3.0"); let {settings, hiddenAssets, orders} = this.props; let preferredUnit = settings.get("unit") || "1.3.0"; let showAssetPercent = settings.get("showAssetPercent", false); + const renderBorrow = (asset, account) => { + let isBitAsset = asset && asset.has("bitasset_data_id"); + let modalRef = "cp_modal_" + asset.get("id"); + return { + isBitAsset, + borrowModal: !isBitAsset ? null : , + borrowLink: !isBitAsset ? null : {ReactTooltip.hide();this.refs[modalRef].show();}}> + }; + }; + let balances = [], openOrders = []; balanceList.forEach( balance => { let balanceObject = ChainStore.getObject(balance); let asset_type = balanceObject.get("asset_type"); let asset = ChainStore.getObject(asset_type); - let isBitAsset = asset && asset.has("bitasset_data_id"); - const core_asset = ChainStore.getAsset("1.3.0"); + let assetInfoLinks; - let marketLink, directMarketLink, settleLink, transferLink, borrowLink, borrowModal; + let marketLink, directMarketLink, settleLink, transferLink; let symbol = ""; if (!asset) return null; @@ -131,17 +146,20 @@ class AccountOverview extends React.Component { directMarketLink = notCore ? : null; transferLink = ; - if (isBitAsset) { - let modalRef = "cp_modal_" + asset.get("id"); - borrowModal = ; + let {isBitAsset, borrowModal, borrowLink} = renderBorrow(asset, this.props.account); + // if (isBitAsset) { - borrowLink = {ReactTooltip.hide();this.refs[modalRef].show();}}>; - } + + // let modalRef = "cp_modal_" + asset.get("id"); + // borrowModal = ; + // + // borrowLink = {ReactTooltip.hide();this.refs[modalRef].show();}}>; + // } /* Popover content */ settleLink = @@ -221,8 +239,8 @@ class AccountOverview extends React.Component { {directMarketLink} - {isBitAsset ?
 | {borrowLink}{borrowModal}
: null} - {isBitAsset ?
 | {settleLink}
: null} + {isBitAsset ?
{this._getSeparator(true)}{borrowLink}{borrowModal}
: null} + {isBitAsset ?
{this._getSeparator(true)}{settleLink}
: null}
@@ -259,6 +277,13 @@ class AccountOverview extends React.Component { const canDepositWithdraw = !!this.props.backedCoins.get("OPEN", []).find(a => a.symbol === asset.get("symbol")); const canBuy = !!this.props.bridgeCoins.get(asset.get("symbol")); + + const notCore = asset.get("id") !== "1.3.0"; + let {market} = assetUtils.parseDescription(asset.getIn(["options", "description"])); + if (asset.get("symbol").indexOf("OPEN.") !== -1 && !market) market = "USD"; + let preferredMarket = market ? market : core_asset ? core_asset.get("symbol") : "BTS"; + let directMarketLink = notCore ? : null; + let {isBitAsset, borrowModal, borrowLink} = renderBorrow(asset, this.props.account); if (includeAsset && visible || !includeAsset && !visible) balances.push( @@ -281,7 +306,10 @@ class AccountOverview extends React.Component { : null} - + + {directMarketLink} + {isBitAsset ?
{this._getSeparator(!!directMarketLink)}{borrowLink}{borrowModal}
: null} + diff --git a/web/app/components/Account/AccountPermissions.jsx b/web/app/components/Account/AccountPermissions.jsx index 1d58a5d369..84faa0e55d 100644 --- a/web/app/components/Account/AccountPermissions.jsx +++ b/web/app/components/Account/AccountPermissions.jsx @@ -146,6 +146,7 @@ class AccountPermissions extends React.Component { // console.log("-- AccountPermissions.onPublish -->", updateObject, s.memo_key); var tr = wallet_api.new_transaction(); tr.add_type_operation("account_update", updateObject); + console.log("transaction:", JSON.stringify(tr.serialize())); WalletDb.process_transaction(tr, null ,true); } @@ -205,7 +206,6 @@ class AccountPermissions extends React.Component { } onMemoKeyChanged(memo_key) { - console.log("onMemoKeyChanged", memo_key); this.setState({memo_key}); } @@ -321,13 +321,17 @@ class AccountPermissions extends React.Component { - + + @@ -370,7 +374,7 @@ class AccountPermissions extends React.Component { /> - ) + ); } } diff --git a/web/app/components/Account/AccountPermissionsList.jsx b/web/app/components/Account/AccountPermissionsList.jsx index 7821e99cd8..b1bec3b7f2 100644 --- a/web/app/components/Account/AccountPermissionsList.jsx +++ b/web/app/components/Account/AccountPermissionsList.jsx @@ -10,6 +10,7 @@ import PrivateKeyView from "components/PrivateKeyView"; import counterpart from "counterpart"; import utils from "common/utils"; import AddressIndex from "stores/AddressIndex"; +import PrivateKeyStore from "stores/PrivateKeyStore"; class AccountPermissionRow extends React.Component { static propTypes = { @@ -35,19 +36,25 @@ class AccountPermissionRow extends React.Component { let suffix = "_accounts"; let pubKey = this.props.pubkey; + const keys = PrivateKeyStore.getState().keys; + + let has_private = false; + if (this.props.account) { name = this.props.account.get("name"); item_id = this.props.account.get("id"); name_or_key = {name}; } else if (pubKey) { - name = item_id = this.props.pubkey; - name_or_key = {this.props.pubkey} + name = item_id = pubKey; + name_or_key = {pubKey} suffix = "_keys"; + has_private = keys.has(pubKey); } else if (this.props.address) { pubKey = this._lookUpPubKeyForAddress(this.props.address); item_id = this.props.address; name_or_key = !pubKey ? this.props.address : {pubKey}; suffix = "_addresses"; + has_private = keys.has(pubKey); } return ( @@ -63,7 +70,7 @@ class AccountPermissionRow extends React.Component { ) : null} - {name_or_key} + {name_or_key} {this.props.weights[item_id]} - ) : null } - + +
+ + + +
+ + { this.props.onAction ? ( + + ) : null } +
{error}
- ) - + ); } } diff --git a/web/app/stores/WalletDb.js b/web/app/stores/WalletDb.js index a3648515a4..bb011895fc 100644 --- a/web/app/stores/WalletDb.js +++ b/web/app/stores/WalletDb.js @@ -317,18 +317,33 @@ class WalletDb extends BaseStore { key = this.generateKeyFromPassword(account, role, password); } + let foundRole = false; + if (acc) { if (role === "memo") { if (acc.getIn(["options", "memo_key"]) === key.pubKey) { setKey(role, key.privKey, key.pubKey); + foundRole = true; } } else { acc.getIn([role, "key_auths"]).forEach(auth => { if (auth.get(0) === key.pubKey) { setKey(role, key.privKey, key.pubKey); + foundRole = true; return false; } }); + + if (!foundRole) { + let alsoCheckRole = role === "active" ? "owner" : "active"; + acc.getIn([alsoCheckRole, "key_auths"]).forEach(auth => { + if (auth.get(0) === key.pubKey) { + setKey(alsoCheckRole, key.privKey, key.pubKey); + foundRole = true; + return false; + } + }); + } } } });