diff --git a/ui/js/actions/content.js b/ui/js/actions/content.js index f47fbc9e0..d5281a0f9 100644 --- a/ui/js/actions/content.js +++ b/ui/js/actions/content.js @@ -4,14 +4,14 @@ import lbry from "lbry"; import lbryio from "lbryio"; import lbryuri from "lbryuri"; import { makeSelectClientSetting } from "selectors/settings"; -import { selectBalance } from "selectors/wallet"; +import { selectBalance, selectTransactionItems } from "selectors/wallet"; import { makeSelectFileInfoForUri, selectDownloadingByOutpoint, } from "selectors/file_info"; import { selectResolvingUris } from "selectors/content"; import { makeSelectCostInfoForUri } from "selectors/cost_info"; -import { doAlertError, doOpenModal, doCloseModal } from "actions/app"; +import { doAlertError, doOpenModal } from "actions/app"; import { doClaimEligiblePurchaseRewards } from "actions/rewards"; import { selectBadgeNumber } from "selectors/app"; import { selectTotalDownloadProgress } from "selectors/file_info"; @@ -506,9 +506,13 @@ export function doPublish(params) { }; } -export function doAbandonClaim(claimId, name, txid, nout) { +export function doAbandonClaim(txid, nout) { return function(dispatch, getState) { const state = getState(); + const transactionItems = selectTransactionItems(state); + const { claim_id: claimId, claim_name: name } = transactionItems.find( + claim => claim.txid == txid && claim.nout == nout + ); dispatch({ type: types.ABANDON_CLAIM_STARTED, diff --git a/ui/js/actions/file_info.js b/ui/js/actions/file_info.js index 825dfa07c..ef9a742d5 100644 --- a/ui/js/actions/file_info.js +++ b/ui/js/actions/file_info.js @@ -1,6 +1,6 @@ import * as types from "constants/action_types"; import lbry from "lbry"; -import { doFetchClaimListMine } from "actions/content"; +import { doFetchClaimListMine, doAbandonClaim } from "actions/content"; import { selectClaimsByUri, selectIsFetchingClaimListMine, @@ -105,29 +105,7 @@ export function doDeleteFile(outpoint, deleteFromComputer, abandonClaim) { txid = fileInfo.outpoint.slice(0, -2); nout = fileInfo.outpoint.slice(-1); - dispatch({ - type: types.ABANDON_CLAIM_STARTED, - data: { - claimId: fileInfo.claim_id, - txid: txid, - nout: nout, - }, - }); - - const success = dispatch({ - type: types.ABANDON_CLAIM_SUCCEEDED, - data: { - claimId: fileInfo.claim_id, - txid: txid, - nout: nout, - }, - }); - lbry - .claim_abandon({ - txid: txid, - nout: nout, - }) - .then(success); + dispatch(doAbandonClaim(txid, nout)); } } diff --git a/ui/js/component/transactionList/index.js b/ui/js/component/transactionList/index.js index bab6a64a7..48ea3bc05 100644 --- a/ui/js/component/transactionList/index.js +++ b/ui/js/component/transactionList/index.js @@ -3,12 +3,12 @@ import { connect } from "react-redux"; import { doNavigate } from "actions/navigation"; import { doOpenModal } from "actions/app"; import { selectClaimedRewardsByTransactionId } from "selectors/rewards"; -import { selectAllMyClaimsByTxidNout } from "selectors/claims"; +import { selectAllMyClaimsByOutpoint } from "selectors/claims"; import TransactionList from "./view"; const select = state => ({ rewards: selectClaimedRewardsByTransactionId(state), - myClaims: selectAllMyClaimsByTxidNout(state), + myClaims: selectAllMyClaimsByOutpoint(state), }); const perform = dispatch => ({ diff --git a/ui/js/component/transactionList/internal/TransactionListItem.jsx b/ui/js/component/transactionList/internal/TransactionListItem.jsx index 229dc8fd6..9acf92fde 100644 --- a/ui/js/component/transactionList/internal/TransactionListItem.jsx +++ b/ui/js/component/transactionList/internal/TransactionListItem.jsx @@ -4,42 +4,22 @@ import { CreditAmount } from "component/common"; import DateTime from "component/dateTime"; import Link from "component/link"; import lbryuri from "lbryuri"; +import * as txnTypes from "constants/transaction_types"; class TransactionListItem extends React.PureComponent { abandonClaim() { - const { - claim_id: claimId, - claim_name: name, - txid, - type, - nout, - } = this.props.transaction; - let msg; + const { txid, nout } = this.props.transaction; - if (type == "tip") { - msg = "This will reduce the committed credits to the URL"; - } else { - msg = "This will reclaim you lbc, back to your account"; - } - - const abandonData = { - name: name, - claimId: claimId, - txid: txid, - nout: nout, - msg: msg, - }; - - this.props.revokeClaim(abandonData); + this.props.revokeClaim(txid, nout); } getLink(type) { - if (type == "tip") { + if (type == txnTypes.TIP) { return ( ); } else { @@ -47,7 +27,7 @@ class TransactionListItem extends React.PureComponent { ); } diff --git a/ui/js/component/transactionList/view.jsx b/ui/js/component/transactionList/view.jsx index a24f9f205..0fcb4d5f5 100644 --- a/ui/js/component/transactionList/view.jsx +++ b/ui/js/component/transactionList/view.jsx @@ -30,8 +30,8 @@ class TransactionList extends React.PureComponent { return this.props.myClaims.has(`${txid}:${nout}`); } - revokeClaim(abandonData) { - this.props.openModal(modals.CONFIRM_CLAIM_REVOKE, abandonData); + revokeClaim(txid, nout) { + this.props.openModal(modals.CONFIRM_CLAIM_REVOKE, { txid, nout }); } render() { diff --git a/ui/js/constants/transaction_types.js b/ui/js/constants/transaction_types.js new file mode 100644 index 000000000..89530f9f0 --- /dev/null +++ b/ui/js/constants/transaction_types.js @@ -0,0 +1 @@ +export const TIP = "tip"; diff --git a/ui/js/modal/modalRevokeClaim/index.js b/ui/js/modal/modalRevokeClaim/index.js index 2216dff54..766095b64 100644 --- a/ui/js/modal/modalRevokeClaim/index.js +++ b/ui/js/modal/modalRevokeClaim/index.js @@ -2,12 +2,16 @@ import React from "react"; import { connect } from "react-redux"; import { doCloseModal } from "actions/app"; import { doAbandonClaim } from "actions/content"; +import { selectTransactionItems } from "selectors/wallet"; import ModalRevokeClaim from "./view"; +const select = state => ({ + transactionItems: selectTransactionItems(state), +}); + const perform = dispatch => ({ closeModal: () => dispatch(doCloseModal()), - abandonClaim: (claimId, name, txid, nout) => - dispatch(doAbandonClaim(claimId, name, txid, nout)), + abandonClaim: (txid, nout) => dispatch(doAbandonClaim(txid, nout)), }); -export default connect(null, perform)(ModalRevokeClaim); +export default connect(select, perform)(ModalRevokeClaim); diff --git a/ui/js/modal/modalRevokeClaim/view.jsx b/ui/js/modal/modalRevokeClaim/view.jsx index 8078864da..06f1362f8 100644 --- a/ui/js/modal/modalRevokeClaim/view.jsx +++ b/ui/js/modal/modalRevokeClaim/view.jsx @@ -1,5 +1,6 @@ import React from "react"; import { Modal } from "modal/modal"; +import * as txnTypes from "constants/transaction_types"; class ModalRevokeClaim extends React.PureComponent { constructor(props) { @@ -7,27 +8,76 @@ class ModalRevokeClaim extends React.PureComponent { } revokeClaim() { - const { name, claimId, txid, nout } = this.props; + const { txid, nout } = this.props; this.props.closeModal(); - this.props.abandonClaim(claimId, name, txid, nout); + this.props.abandonClaim(txid, nout); + } + + getButtonLabel(type) { + if (type == txnTypes.TIP) { + return "Confirm Tip Unlock"; + } else { + return "Confirm Claim Revoke"; + } + } + + getMsgBody(type) { + if (type == txnTypes.TIP) { + return ( +
+ {__("Are you sure you want to unlock these credits?")}
+
+
+ {__(
+ "These credits are permanently yours and can be\
+ unlocked at any time. Unlocking them allows you to\
+ spend them, but can hurt the performance of your\
+ content in lookups and search results. It is\
+ recommended you leave tips locked until you\
+ need or want to spend them."
+ )}
+
+ {__("Are you sure want to revoke this claim?")}
+
+
+ {__(
+ "This will prevent others from resolving and\
+ accessing the content you published. It will return\
+ the LBC to your spendable balance, less a small\
+ transaction fee."
+ )}
+
- {msg} -
+ {this.getMsgBody(type)}