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();
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
+ }
+ )
+ });
+ }}
+ >
+