Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
_update(next_props = null) {
let props = next_props || this.props;
let new_state = {};
let all_objects_counter = 0;
let resolved_objects_counter = 0;
/* Resolve pure objects*/
for (let key of this.chain_objects) {
let prop =
props[key] ||
this.dynamic_props[key] ||
this.default_props[key];
if (prop) {
let new_obj = ChainStore.getObject(
prop,
false,
this.default_props["autosubscribe"]
);
if (
new_obj === undefined &&
this.required_props.indexOf(key) === -1 &&
new_obj !== this.state[key]
)
new_state[key] = new_obj;
else if (new_obj && new_obj !== this.state[key])
new_state[key] = new_obj;
++all_objects_counter;
if (new_obj !== undefined) ++resolved_objects_counter;
} else {
if (this.state[key]) new_state[key] = null;
}
function hasBalance(id) {
if (feeStatus[id] === undefined) return true;
return feeStatus[id] && feeStatus[id].hasBalance;
}
let fee_asset_types = [];
if (!(from_account && from_account.get("balances"))) {
return {fee_asset_types};
}
let account_balances = state.from_account.get("balances").toJS();
fee_asset_types = Object.keys(account_balances).sort(utils.sortID);
for (let key in account_balances) {
let asset = ChainStore.getObject(key);
let balanceObject = ChainStore.getObject(account_balances[key]);
if (balanceObject && balanceObject.get("balance") === 0) {
if (fee_asset_types.indexOf(key) !== -1) {
fee_asset_types.splice(fee_asset_types.indexOf(key), 1);
}
}
if (asset) {
// Remove any assets that do not have valid core exchange rates
let priceIsValid = false,
p;
try {
p = new Price({
base: new Asset(
asset
.getIn([
"options",
render() {
let {dynGlobalObject, globalObject} = this.props;
dynGlobalObject = dynGlobalObject.toJS();
globalObject = globalObject.toJS();
let current = ChainStore.getObject(dynGlobalObject.current_witness),
currentAccount = null;
if (current) {
currentAccount = ChainStore.getObject(
current.get("witness_account")
);
}
return (
<div>
<div>
<div>
<div>
<div>
<table>
<thead>
<tr></tr></thead></table></div></div></div></div></div>
hasBalance() {
const {sellAmount} = this.state;
const {currentAccount} = this.props;
const accountBalances = currentAccount.get("balances").toJS();
const {sellAssetId, sellAssetPrecision} = this.getAssetsDetails();
if (!accountBalances[sellAssetId]) {
return false;
}
const balance = ChainStore.getObject(accountBalances[sellAssetId]).get(
"balance"
);
const transactionFee = this._getTransactionFee();
return (
sellAmount * 10 ** sellAssetPrecision +
transactionFee * 10 ** sellAssetPrecision <
+balance
);
}
update(next_props = null)
{
//let keep_updating = (options && options.keep_updating) || this.props.keep_updating;
//if(!next_props && !keep_updating && this.state.resolved) return;
let props = next_props || this.props;
let new_state = {};
let all_objects_counter = 0;
let resolved_objects_counter = 0;
for( let key of this.chain_objects )
{
let prop = props[key] || this.dynamic_props[key] || this.default_props[key];
if(prop) {
let new_obj = ChainStore.getObject(prop);
if (new_obj === undefined && this.required_props.indexOf(key) === -1 && new_obj !== this.state[key]) new_state[key] = new_obj;
else if (new_obj && new_obj !== this.state[key]) new_state[key] = new_obj;
++all_objects_counter;
if (new_obj !== undefined) ++resolved_objects_counter;
} else {
if(this.state[key]) new_state[key] = null;
}
}
for( let key of this.chain_accounts )
{
let prop = props[key] || this.dynamic_props[key] || this.default_props[key];
if(prop) {
if(prop[0] === "#" && Number.parseInt(prop.substring(1)))
prop = "1.2." + prop.substring(1);
let new_obj = ChainStore.getAccount(prop);
if (new_obj === undefined && this.required_props.indexOf(key) === -1 && new_obj !== this.state[key]) new_state[key] = new_obj;
function hasBalance(id) {
if (feeStatus[id] === undefined) return true;
return feeStatus[id] && feeStatus[id].hasBalance;
}
const {from_account, from_error} = state;
let asset_types = [],
fee_asset_types = [];
if (!(from_account && from_account.get("balances") && !from_error)) {
return {asset_types, fee_asset_types};
}
let account_balances = state.from_account.get("balances").toJS();
asset_types = Object.keys(account_balances).sort(utils.sortID);
fee_asset_types = Object.keys(account_balances).sort(utils.sortID);
for (let key in account_balances) {
let balanceObject = ChainStore.getObject(account_balances[key]);
if (balanceObject && balanceObject.get("balance") === 0) {
asset_types.splice(asset_types.indexOf(key), 1);
if (fee_asset_types.indexOf(key) !== -1) {
fee_asset_types.splice(fee_asset_types.indexOf(key), 1);
}
}
}
fee_asset_types = fee_asset_types.filter(a => {
return hasFeePoolBalance(a) && hasBalance(a);
});
return {asset_types, fee_asset_types};
}
function hasBalance(id) {
if (feeStatus[id] === undefined) return true;
return feeStatus[id] && feeStatus[id].hasBalance;
}
const {from_account} = state;
let asset_types = [],
fee_asset_types = [];
if (!(from_account && from_account.get("balances"))) {
return {asset_types, fee_asset_types};
}
let account_balances = state.from_account.get("balances").toJS();
asset_types = Object.keys(account_balances).sort(utils.sortID);
fee_asset_types = Object.keys(account_balances).sort(utils.sortID);
for (let key in account_balances) {
let balanceObject = ChainStore.getObject(account_balances[key]);
if (balanceObject && balanceObject.get("balance") === 0) {
asset_types.splice(asset_types.indexOf(key), 1);
if (fee_asset_types.indexOf(key) !== -1) {
fee_asset_types.splice(fee_asset_types.indexOf(key), 1);
}
}
}
fee_asset_types = fee_asset_types.filter(a => {
return hasFeePoolBalance(a) && hasBalance(a);
});
return {asset_types, fee_asset_types};
}
_checkBalance() {
const {feeAmount, amount, from_account, asset} = this.state;
if (!asset || !from_account) return;
const balanceID = from_account.getIn(["balances", asset.get("id")]);
const feeBalanceID = from_account.getIn([
"balances",
feeAmount.asset_id
]);
if (!asset || !from_account) return;
if (!balanceID) return this.setState({balanceError: true});
let balanceObject = ChainStore.getObject(balanceID);
let feeBalanceObject = feeBalanceID
? ChainStore.getObject(feeBalanceID)
: null;
if (!feeBalanceObject || feeBalanceObject.get("balance") === 0) {
this.setState({feeAmount: getUninitializedFeeAmount()});
}
if (!balanceObject || !feeAmount) return;
if (!amount) return this.setState({balanceError: false});
const hasBalance = checkBalance(
amount,
asset,
feeAmount,
balanceObject
);
if (hasBalance === null) return;
this.setState({balanceError: !hasBalance});
}
_setTotal(asset_id, balance_id) {
const {feeAmount} = this.state;
let balanceObject = ChainStore.getObject(balance_id);
let transferAsset = ChainStore.getObject(asset_id);
if (balanceObject) {
let balance = new Asset({
amount: balanceObject.get("balance"),
asset_id: transferAsset.get("id"),
precision: transferAsset.get("precision")
});
if (feeAmount.asset_id === balance.asset_id) {
balance.minus(feeAmount);
}
this.setState(
{maxAmount: true, amount: balance.getAmount({real: true})},
this._checkBalance
);
}