From 7890d5f64283d41bceb60431b105ea03fa042f8f Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Sun, 4 Dec 2022 03:11:36 +0300 Subject: [PATCH 1/7] Update Asset.jsx --- app/components/Blockchain/Asset.jsx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/components/Blockchain/Asset.jsx b/app/components/Blockchain/Asset.jsx index 98362f343b..c23353386e 100644 --- a/app/components/Blockchain/Asset.jsx +++ b/app/components/Blockchain/Asset.jsx @@ -1436,7 +1436,25 @@ class Asset extends React.Component { ); } - + renderFeesCollateralClaiming(asset) { + let dynamic = this.props.getDynamicObject(asset.dynamic_asset_data_id); + if (dynamic) dynamic = dynamic.toJS(); + return ( + + } + > + + + ); + } // TODO: Blacklist Authorities: // TODO: Blacklist Market: Base/Market, Base/Market renderPermissions(asset) { @@ -2368,6 +2386,7 @@ class Asset extends React.Component { {this.renderFeePoolFunding(asset)} {this.renderFeePoolClaiming(asset)} {this.renderFeesClaiming(asset)} + {this.renderFeesCollateralClaiming(asset)} {this.renderAssetOwnerUpdate(asset)} {"bitasset" in asset && !asset.bitasset.is_prediction_market && From 4fd42aed81947724a227837a9f65ae19ce65fadd Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Sun, 4 Dec 2022 03:12:44 +0300 Subject: [PATCH 2/7] Update FeePoolOperation.jsx --- app/components/Account/FeePoolOperation.jsx | 135 +++++++++++++++++++- 1 file changed, 133 insertions(+), 2 deletions(-) diff --git a/app/components/Account/FeePoolOperation.jsx b/app/components/Account/FeePoolOperation.jsx index 943333529a..40fc159aa3 100644 --- a/app/components/Account/FeePoolOperation.jsx +++ b/app/components/Account/FeePoolOperation.jsx @@ -34,6 +34,13 @@ class FeePoolOperation extends React.Component { [key]: amount }); } + + onClaimCollateralInput(key, {amount}) { + this.state[key + "Asset"].setAmount({real: amount}); + this.setState({ + [key]: amount + }); + } onFundPool = () => AssetActions.fundPool( @@ -68,9 +75,36 @@ class FeePoolOperation extends React.Component { amount: 0, precision: this.props.asset.get("precision"), asset_id: this.props.asset.get("id") + }), + claimCollateralFeesAmount: 0, + claimCollateralFeesAmountAsset: new Asset({ + amount: 0, + precision: this.props.asset.get("precision"), + asset_id: this.props.asset.get("id") + }), + backingAsset: new Asset({ + amount: 0, + asset_id: this.props.asset.has("bitasset") + ? this.props.asset.getIn([ + "bitasset", + "options", + "short_backing_asset" + ]) + : "1.3.0" }) }); - + + onClaimCollateralFees() { + let account = ChainStore.getAccount(this.props.funderAccountName); + if (!account) return; + AssetActions.claimCollateralFees( + account.get("id"), + this.props.asset, + this.state.backingAsset, + this.state.claimCollateralFeesAmountAsset + ); + } + onClaimFees() { let account = ChainStore.getAccount(this.props.funderAccountName); if (!account) return; @@ -333,6 +367,101 @@ class FeePoolOperation extends React.Component { ); } + renderClaimCollateralFees() { + const {props} = this; + const {claimCollateralFeesAmount} = this.state; + const {asset, getDynamicObject} = props; + let dynamicObject = getDynamicObject( + asset.get("dynamic_asset_data_id") + ); + console.log(dynamicObject); + let backingAsset = this.props.asset.has("bitasset") + ? this.props.asset.getIn([ + "bitasset", + "options", + "short_backing_asset" + ]) + : "1.3.0"; + let unclaimedCollateralBalance = dynamicObject + ? dynamicObject.get("accumulated_collateral_fees") + : 0; + let validClaim = + claimCollateralFeesAmount > 0 && + this.state.claimCollateralFeesAmountAsset.getAmount() <= unclaimedCollateralBalance; + + let unclaimedCollateralBalanceText = ( + { + this.state.claimCollateralFeesAmountAsset.setAmount({ + sats: dynamicObject.get("accumulated_collateral_fees") + }); + this.setState({ + claimCollateralFeesAmount: this.state.claimCollateralFeesAmountAsset.getAmount( + { + real: true + } + ) + }); + }} + > + + :  + + + ); + return ( +
+ +
+ + :  + {dynamicObject ? ( + + ) : null} +
+ + + +
+ + +
+
+ ); + } + render() { if (this.props.type === "fund") { return this.renderFundPool(); @@ -340,7 +469,9 @@ class FeePoolOperation extends React.Component { return this.renderClaimPool(); } else if (this.props.type === "claim_fees") { return this.renderClaimFees(); - } + } else if (this.props.type === "claim_collateral_fees") { + return this.renderClaimCollateralFees(); + } } } From 41224171d216788b34ec3d03cb7121db17691ad4 Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Sun, 4 Dec 2022 03:13:30 +0300 Subject: [PATCH 3/7] Update AssetActions.js --- app/actions/AssetActions.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/app/actions/AssetActions.js b/app/actions/AssetActions.js index 704840c214..4e7df3cebb 100644 --- a/app/actions/AssetActions.js +++ b/app/actions/AssetActions.js @@ -203,6 +203,35 @@ class AssetActions { }; } + claimCollateralFees(account_id, asset, backingAsset, claimFeesAmountAsset) { + let tr = WalletApi.new_transaction(); + + tr.add_type_operation("asset_claim_fees", { + fee: { + amount: 0, + asset_id: 0 + }, + issuer: account_id, + amount_to_claim: { + asset_id: backingAsset.asset_id, + amount: claimFeesAmountAsset.getAmount() + }, + extensions: { + claim_from_asset_id: asset.get("id") + } + }); + return dispatch => { + return WalletDb.process_transaction(tr, null, true) + .then(() => { + dispatch(true); + }) + .catch(error => { + console.log("----- claimFees error ----->", error); + dispatch(false); + }); + }; + } + assetGlobalSettle(asset, account_id, price) { let tr = WalletApi.new_transaction(); From ec076b06b9d4ed37da1dd9a83bb53028b0642f00 Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Fri, 30 Dec 2022 12:25:10 +0300 Subject: [PATCH 4/7] Update AssetActions.js --- app/actions/AssetActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/actions/AssetActions.js b/app/actions/AssetActions.js index 4e7df3cebb..ca19ca679d 100644 --- a/app/actions/AssetActions.js +++ b/app/actions/AssetActions.js @@ -203,7 +203,7 @@ class AssetActions { }; } - claimCollateralFees(account_id, asset, backingAsset, claimFeesAmountAsset) { + claimForceSettlementFees(account_id, asset, backingAsset, claimFeesAmountAsset) { let tr = WalletApi.new_transaction(); tr.add_type_operation("asset_claim_fees", { From ff56b49b5e10750ba559ea01370a3f3a09b91521 Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Fri, 30 Dec 2022 12:44:19 +0300 Subject: [PATCH 5/7] Update Asset.jsx --- app/components/Blockchain/Asset.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/Blockchain/Asset.jsx b/app/components/Blockchain/Asset.jsx index c23353386e..5bc47b73dd 100644 --- a/app/components/Blockchain/Asset.jsx +++ b/app/components/Blockchain/Asset.jsx @@ -1436,13 +1436,13 @@ class Asset extends React.Component { ); } - renderFeesCollateralClaiming(asset) { + renderFeesForceSettlementClaiming(asset) { let dynamic = this.props.getDynamicObject(asset.dynamic_asset_data_id); if (dynamic) dynamic = dynamic.toJS(); return ( + } > ); @@ -2386,7 +2386,7 @@ class Asset extends React.Component { {this.renderFeePoolFunding(asset)} {this.renderFeePoolClaiming(asset)} {this.renderFeesClaiming(asset)} - {this.renderFeesCollateralClaiming(asset)} + {this.renderFeesForceSettlementClaiming(asset)} {this.renderAssetOwnerUpdate(asset)} {"bitasset" in asset && !asset.bitasset.is_prediction_market && From 868812a8a7e5d38af4a7b2de01879c84268c6de3 Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Fri, 30 Dec 2022 13:00:00 +0300 Subject: [PATCH 6/7] Update AssetActions.js --- app/actions/AssetActions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/actions/AssetActions.js b/app/actions/AssetActions.js index ca19ca679d..4e7df3cebb 100644 --- a/app/actions/AssetActions.js +++ b/app/actions/AssetActions.js @@ -203,7 +203,7 @@ class AssetActions { }; } - claimForceSettlementFees(account_id, asset, backingAsset, claimFeesAmountAsset) { + claimCollateralFees(account_id, asset, backingAsset, claimFeesAmountAsset) { let tr = WalletApi.new_transaction(); tr.add_type_operation("asset_claim_fees", { From 7309e390ca98d5ee1afa4f968f3bbabf67b95f72 Mon Sep 17 00:00:00 2001 From: ioBanker <37595908+ioBanker@users.noreply.github.com> Date: Fri, 30 Dec 2022 13:01:53 +0300 Subject: [PATCH 7/7] Update Asset.jsx --- app/components/Blockchain/Asset.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/Blockchain/Asset.jsx b/app/components/Blockchain/Asset.jsx index 5bc47b73dd..c23353386e 100644 --- a/app/components/Blockchain/Asset.jsx +++ b/app/components/Blockchain/Asset.jsx @@ -1436,13 +1436,13 @@ class Asset extends React.Component { ); } - renderFeesForceSettlementClaiming(asset) { + renderFeesCollateralClaiming(asset) { let dynamic = this.props.getDynamicObject(asset.dynamic_asset_data_id); if (dynamic) dynamic = dynamic.toJS(); return ( + } > ); @@ -2386,7 +2386,7 @@ class Asset extends React.Component { {this.renderFeePoolFunding(asset)} {this.renderFeePoolClaiming(asset)} {this.renderFeesClaiming(asset)} - {this.renderFeesForceSettlementClaiming(asset)} + {this.renderFeesCollateralClaiming(asset)} {this.renderAssetOwnerUpdate(asset)} {"bitasset" in asset && !asset.bitasset.is_prediction_market &&