Skip to content

Commit

Permalink
Merge pull request #479 from persistenceOne/bond-status
Browse files Browse the repository at this point in the history
  • Loading branch information
blackpanther1881 authored Sep 4, 2023
2 parents 2e393a2 + dbc455d commit 3d49bc5
Show file tree
Hide file tree
Showing 11 changed files with 3,316 additions and 2,473 deletions.
Binary file added public/favicons/warning_icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
221 changes: 113 additions & 108 deletions src/assets/scss/_common.scss

Large diffs are not rendered by default.

5,433 changes: 3,101 additions & 2,332 deletions src/assets/scss/index.css

Large diffs are not rendered by default.

8 changes: 1 addition & 7 deletions src/assets/scss/index.css.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src/constants/tokenizeShares.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ export const TX_TOKENIZE_SHARE_STATUS_FAILED =
export const TX_TOKENIZE_SHARE_STATUS_SUCCESS =
"TX_TOKENIZE_SHARE_STATUS_SUCCESS";
export const TX_TOKENIZE_TXN_INFO_SET = "TX_TOKENIZE_TXN_INFO_SET";
export const TX_TOKENIZE_BUTTON_SET = "TX_TOKENIZE_BUTTON_SET";
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { useTranslation } from "react-i18next";
import { LOGIN_INFO } from "../../../../constants/localStorage";
import { stringToNumber } from "../../../../utils/scripts";
import { DefaultChainInfo } from "../../../../config";
import { fetchValidatorBonds } from "../../../../store/actions/tokenizeShares";

const DelegatedValidators = (props) => {
const { t } = useTranslation();
Expand All @@ -30,6 +31,12 @@ const DelegatedValidators = (props) => {
error: new Error("")
})
);
dispatch(
fetchValidatorBonds(
validator.operatorAddress,
loginInfo && loginInfo.address
)
);
dispatch(
setValidatorTxModalName({
value: "delegator-actions"
Expand Down
20 changes: 19 additions & 1 deletion src/containers/Staking/Validators/ModalValidator/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ import ReactGA from "react-ga4";
const ModalValidator = () => {
const { t } = useTranslation();
const show = useSelector((state) => state.validators.validatorTxModal);
const tokenizeButtonStatus = useSelector(
(state) => state.tokenizeShares.tokenizeButton
);
const validator = useSelector((state) => state.validators.validator.value);
const txnModalName = useSelector(
(state) => state.validators.validatorModalName.value
Expand Down Expand Up @@ -137,7 +140,7 @@ const ModalValidator = () => {
>
{t("CLAIM_REWARDS")}
</button>
{txnModalName === "delegator-actions" ? (
{txnModalName === "delegator-actions" && tokenizeButtonStatus ? (
<button
onClick={() => handleRoute("Tokenize")}
className="button button-primary"
Expand All @@ -148,6 +151,21 @@ const ModalValidator = () => {
""
)}
</div>
{txnModalName === "delegator-actions" && tokenizeButtonStatus ? (
<p className="amount-warning text-left">
<span>
<img
src="/favicons/warning_icon.png"
width={20}
className="mr-2"
></img>
</span>
<b>Transfer Delegation</b> feature is in beta mode, kindly contact
team if you face any disturbances.
</p>
) : (
""
)}
{helper.foundationNodeCheck(
validator.operatorAddress && validator.operatorAddress
) ? (
Expand Down
3 changes: 2 additions & 1 deletion src/containers/Transactions/ModalTokenize/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { fetchTokenizedSharesByAddress } from "../../../store/actions/tokenizeSh
import { Spinner } from "../../../components/Spinner";
import { txFailed } from "../../../store/actions/transactions/common";

const ModalTokenize = (props) => {
const ModalTokenize = () => {
const dispatch = useDispatch();
const validator = useSelector((state) => state.validators.validator.value);
const show = useSelector((state) => state.tokenizeShares.modal);
Expand All @@ -31,6 +31,7 @@ const ModalTokenize = (props) => {
const response = useSelector((state) => state.common.error);
const loginInfo = JSON.parse(localStorage.getItem(LOGIN_INFO));

console.log(validator, "validatorvalidator123");
useEffect(() => {
fetchTokenizedSharesByAddress(loginInfo && loginInfo.address);
}, []);
Expand Down
68 changes: 47 additions & 21 deletions src/store/actions/tokenizeShares.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import * as Sentry from "@sentry/browser";
import { getTokenizedShares } from "../../utils/actions";
import { tokenValueConversion } from "../../utils/helper";
import { decimalize, stringToNumber } from "../../utils/scripts";
import { handleTokenizeTxButton } from "./transactions/tokenizeShares";
import Long from "long";

export const fetchTokenizedSharesSuccess = (list) => {
return {
Expand Down Expand Up @@ -110,26 +112,50 @@ export const fetchTokenizedShareRewards = (address) => {
};
};

export const fetchValidatorBonds = async (address) => {
try {
console.log(address, "fetchTokenizedShareRewards clled ");
const rpcClient = await transactions.RpcClient();
const lsNativeQueryService = new LsNativeStakingQueryClient(rpcClient);
const response = await lsNativeQueryService.UnbondingDelegation({
validatorAddr:
"persistencevaloper1qhx8lgm9a0kfxptwgcftjt32w0a00lh5z9zf3y",
delegatorAddr: "persistence1lngwr8ymx3q6gtsff2h8407mawz9azp6kmut02"
});
console.log(response, "fetchValidatorBonds");
if (response) {
console.log(response, "fetchValidatorBonds");
export const fetchValidatorBonds = (validatorAddr, dlgtAddress) => {
return async (dispatch) => {
try {
console.log(dlgtAddress, "fetchValidatorBonds clled ", validatorAddr);
const rpcClient = await transactions.RpcClient();
const lsNativeQueryService = new LsNativeStakingQueryClient(rpcClient);

let key = new Uint8Array();
let validatorDelegations = [];

do {
const response = await lsNativeQueryService.ValidatorDelegations({
validatorAddr: validatorAddr,
pagination: {
key: key,
offset: Long.fromNumber(0, true),
limit: Long.fromNumber(0, true),
countTotal: true
}
});
key = response.pagination.nextKey;
validatorDelegations.push(...response.delegationResponses);
} while (key.length !== 0);
// const response = await lsNativeQueryService.ValidatorDelegations({
// validatorAddr: validatorAddr
// });
let bondStatus = false;
/* for loop instead of find for performance; stop iteration once we get any item as true */
for (let i = 0; i < validatorDelegations.length; i++) {
if (bondStatus) break;

const validatorDelegation = validatorDelegations[i];
if (validatorDelegation.delegation.validatorBond == true)
bondStatus = true;
}

dispatch(handleTokenizeTxButton(bondStatus));
return false;
} catch (error) {
console.log(error, "fetchValidatorBonds error");
Sentry.captureException(
error.response ? error.response.data.message : error.message
);
dispatch(handleTokenizeTxButton(false));
}
return [];
} catch (error) {
console.log(error, "fetchValidatorBonds error");
Sentry.captureException(
error.response ? error.response.data.message : error.message
);
return [];
}
};
};
10 changes: 9 additions & 1 deletion src/store/actions/transactions/tokenizeShares.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {
TX_TOKENIZE_MODAL_SHOW,
TX_TOKENIZE_OWNER_ADDRESS_SET,
TX_TOKENIZE_SHARE_STATUS_SET,
TX_TOKENIZE_TXN_INFO_SET
TX_TOKENIZE_TXN_INFO_SET,
TX_TOKENIZE_BUTTON_SET
} from "../../../constants/tokenizeShares";
import { setTxIno, setTxName } from "./common";
import { showFeeModal } from "./fee";
Expand Down Expand Up @@ -59,6 +60,13 @@ export const setTxTokenizeShareStatus = (data) => {
};
};

export const handleTokenizeTxButton = (data) => {
return {
type: TX_TOKENIZE_BUTTON_SET,
data
};
};

export const submitFormData = (message) => (dispatch, getState) => {
dispatch(
setTxName({
Expand Down
18 changes: 16 additions & 2 deletions src/store/reducers/transactions/tokenizeShares.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import {
TX_TOKENIZE_SHARE_STATUS_FAILED,
TX_TOKENIZE_SHARE_STATUS_SUCCESS,
TX_TOKENIZE_TXN_INFO_SET,
TX_TOKENIZE_SHARE_STATUS_SET
TX_TOKENIZE_SHARE_STATUS_SET,
TX_TOKENIZE_BUTTON_SET
} from "../../../constants/tokenizeShares";
import { UNBOND_DELEGATIONS_LIST } from "../../../constants/unbond";
import { VALIDATOR_TX_MODAL_HIDE } from "../../../constants/validators";

const toAddress = (
state = {
Expand Down Expand Up @@ -146,6 +148,17 @@ const txnInfo = (
}
};

const tokenizeButton = (state = false, { type, data }) => {
switch (type) {
case TX_TOKENIZE_BUTTON_SET:
return data;
case VALIDATOR_TX_MODAL_HIDE:
return false;
default:
return state;
}
};

// const tokenizeShareTxStatus = (state = "pending", { type }) => {
// switch (type) {
// case TX_TOKENIZE_SHARE_STATUS_SUCCESS:
Expand All @@ -170,5 +183,6 @@ export default combineReducers({
memo,
toAddress,
tokenizeShareTxStatus,
txnInfo
txnInfo,
tokenizeButton
});

0 comments on commit 3d49bc5

Please sign in to comment.