Skip to content

Commit

Permalink
feat: updated V3 via EVM logic (#1101)
Browse files Browse the repository at this point in the history
* feat: updated claimUnstakeAndUnlock

* fix: clean up

* feat: added EVM calls

* fix: link to the vote page

* fix: clean up
  • Loading branch information
impelcrypto committed Dec 28, 2023
1 parent ca11ac7 commit 6aeb375
Show file tree
Hide file tree
Showing 8 changed files with 214 additions and 45 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@
.eslintrc.js
babel.config.js
/src-ssr
/src-pwa
/tests/polkadot_wallet
/tests/metamask_wallet
4 changes: 3 additions & 1 deletion src/staking-v3/components/Vote.vue
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,9 @@ export default defineComponent({
}
if (selectedDappAddress.value) {
const dapp = dapps.value.find((dapp) => dapp.address === selectedDappAddress.value);
const dapp = dapps.value.find(
(dapp) => dapp.address.toLowerCase() === selectedDappAddress.value.toLowerCase()
);
if (dapp) {
selectedDapps.value = [dapp];
}
Expand Down
2 changes: 1 addition & 1 deletion src/staking-v3/components/my-staking/MyDapps.vue
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export default defineComponent({
},
},
setup() {
const { registeredDapps, getDapp } = useDapps();
const { getDapp } = useDapps();
const { navigateToVote, navigateToMove } = useDappStakingNavigation();
const { unstake, unstakeFromUnregistered } = useDappStaking();
Expand Down
61 changes: 39 additions & 22 deletions src/staking-v3/hooks/useDappStaking.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export interface RewardsPerPeriod {
export function useDappStaking() {
const { t } = useI18n();
const store = useStore();
const { currentAccount } = useAccount();
const { currentAccount, senderSs58Account } = useAccount();
const { registeredDapps, fetchStakeAmountsToStore, getDapp } = useDapps();
const { decimal } = useChainMetadata();
const { useableBalance } = useBalance(currentAccount);
Expand Down Expand Up @@ -163,32 +163,36 @@ export function useDappStaking() {
return;
}

const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
await stakingService.claimUnstakeAndUnlock(
dapp.chain.address,
amount,
currentAccount.value,
t('stakingV3.unbondSuccess', { dapp: dapp.basic.name })
);
const staker = await stakingService.getStakerRewards(currentAccount.value);
const bonus = await stakingService.getBonusRewards(currentAccount.value);
const staker = await stakingService.getStakerRewards(senderSs58Account.value);
const bonus = await stakingService.getBonusRewards(senderSs58Account.value);
store.commit('stakingV3/setRewards', { ...rewards.value, staker, bonus });
fetchStakerInfoToStore();
getCurrentEraInfo();
fetchStakeAmountsToStore();
};

const unstakeFromUnregistered = async (dappAddress: string, dappName: string): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
await stakingService.claimAllAndUnstakeFromUnregistered(
currentAccount.value,
dappAddress,
t('stakingV3.unbondFromUnregisteredSuccess', { dapp: dappName })
);

const [staker, bonus, dApp] = await Promise.all([
stakingService.getStakerRewards(currentAccount.value),
stakingService.getBonusRewards(currentAccount.value),
stakingService.getStakerRewards(senderSs58Account.value),
stakingService.getBonusRewards(senderSs58Account.value),
stakingService.getDappRewards(dappAddress),
]);
store.commit('stakingV3/setRewards', { ...rewards.value, staker, bonus, dApp });
Expand All @@ -198,9 +202,11 @@ export function useDappStaking() {
};

const claimStakerRewards = async (): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
await stakingService.claimStakerRewards(currentAccount.value, 'success');
const staker = await stakingService.getStakerRewards(currentAccount.value);
const staker = await stakingService.getStakerRewards(senderSs58Account.value);
store.commit('stakingV3/setRewards', { ...rewards.value, staker });
};

Expand Down Expand Up @@ -231,15 +237,19 @@ export function useDappStaking() {
};

const claimBonusRewards = async (): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();

await stakingService.claimBonusRewards(currentAccount.value, 'success');
const bonus = await stakingService.getBonusRewards(currentAccount.value);
const bonus = await stakingService.getBonusRewards(senderSs58Account.value);
store.commit('stakingV3/setRewards', { ...rewards.value, bonus });
};

const claimDappRewards = async (contractAddress: string): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);

const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
if (contractAddress) {
await stakingService.claimDappRewards(contractAddress, currentAccount.value, 'success');
const dApp = await stakingService.getDappRewards(contractAddress);
Expand All @@ -250,24 +260,31 @@ export function useDappStaking() {
};

const claimStakerAndBonusRewards = async (): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();

await stakingService.claimStakerAndBonusRewards(
currentAccount.value,
t('stakingV3.claimRewardSuccess')
);
const staker = await stakingService.getStakerRewards(currentAccount.value);
const bonus = await stakingService.getBonusRewards(currentAccount.value);
const staker = await stakingService.getStakerRewards(senderSs58Account.value);
const bonus = await stakingService.getBonusRewards(senderSs58Account.value);
store.commit('stakingV3/setRewards', { ...rewards.value, staker, bonus });
};

const withdraw = async (): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
await stakingService.claimUnlockedTokens(currentAccount.value, t('stakingV3.withdrawSuccess'));
getCurrentEraInfo();
};

const relock = async (): Promise<void> => {
const stakingService = container.get<IDappStakingService>(Symbols.DappStakingServiceV3);
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
await stakingService.relockUnlockingTokens(currentAccount.value, t('stakingV3.relockSuccess'));
};

Expand All @@ -282,8 +299,8 @@ export function useDappStaking() {
let bonus = BigInt(0);

if (currentAccount.value) {
staker = await stakingV3service.getStakerRewards(currentAccount.value);
bonus = await stakingV3service.getBonusRewards(currentAccount.value);
staker = await stakingV3service.getStakerRewards(senderSs58Account.value);
bonus = await stakingV3service.getBonusRewards(senderSs58Account.value);

if (ownedContractAddress) {
dApp = await stakingV3service.getDappRewards(ownedContractAddress ?? '');
Expand Down Expand Up @@ -389,7 +406,7 @@ export function useDappStaking() {
const stakingRepo = container.get<IDappStakingRepository>(Symbols.DappStakingRepositoryV3);
const [constants, stakerInfo] = await Promise.all([
stakingRepo.getConstants(),
stakingRepo.getStakerInfo(currentAccount.value, false),
stakingRepo.getStakerInfo(senderSs58Account.value, false),
]);

if (amount <= 0) {
Expand Down Expand Up @@ -436,7 +453,7 @@ export function useDappStaking() {
const stakingService = container.get<() => IDappStakingService>(
Symbols.DappStakingServiceFactoryV3
)();
const stakerInfo = await stakingService.getStakerInfo(currentAccount.value, false);
const stakerInfo = await stakingService.getStakerInfo(senderSs58Account.value, false);

store.commit('stakingV3/setStakerInfo', stakerInfo, { root: true });
};
Expand Down
2 changes: 1 addition & 1 deletion src/staking-v3/hooks/useDappStakingNavigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export function useDappStakingNavigation() {

const navigateToVote = (dAppAddress: string | undefined = undefined): void => {
const base = networkParam + Path.DappStaking + Path.Vote;
router.push(`${base}?dappAddress=${dAppAddress ?? ''}`);
router.push(`${base}?dappAddress=${dAppAddress?.toLowerCase() ?? ''}`);
};

const navigateToMove = (dAppAddress: string): void => {
Expand Down
8 changes: 4 additions & 4 deletions src/staking-v3/logic/services/DappStakingService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ export class DappStakingService implements IDappStakingService {
await this.signCall(batch, senderAddress, successMessage);
}

private async getClaimStakerRewardsCall(
protected async getClaimStakerRewardsCall(
senderAddress: string
): Promise<ExtrinsicPayload[] | undefined> {
const { firstSpanIndex, lastSpanIndex, rewardsExpired, eraRewardSpanLength } =
Expand Down Expand Up @@ -185,7 +185,7 @@ export class DappStakingService implements IDappStakingService {
await this.signCall(batch, senderAddress, successMessage);
}

private async getClaimDappRewardsCalls(
protected async getClaimDappRewardsCalls(
contractAddress: string
): Promise<ExtrinsicPayload[] | undefined> {
const result = await this.getDappRewardsAndErasToClaim(contractAddress);
Expand Down Expand Up @@ -219,7 +219,7 @@ export class DappStakingService implements IDappStakingService {
await this.signCall(batch, senderAddress, successMessage);
}

private async getClaimStakerAndBonusRewardsCalls(
protected async getClaimStakerAndBonusRewardsCalls(
senderAddress: string
): Promise<ExtrinsicPayload[]> {
const claimStakerCalls = await this.getClaimStakerRewardsCall(senderAddress);
Expand All @@ -246,7 +246,7 @@ export class DappStakingService implements IDappStakingService {
await this.signCall(batch, senderAddress, successMessage);
}

private async getClaimBonusRewardsCalls(
protected async getClaimBonusRewardsCalls(
senderAddress: string
): Promise<ExtrinsicPayload[] | undefined> {
const result = await this.getBonusRewardsAndContractsToClaim(senderAddress);
Expand Down
Loading

0 comments on commit 6aeb375

Please sign in to comment.