Skip to content

Commit

Permalink
fix/total claimed calculation (#122)
Browse files Browse the repository at this point in the history
* referral program starting

* fixes after review

* ref page

* referral page

* env update

* ref input fixes

* fix referee input

* claim ref modal

* build fixes

* fixes after review

* fixes for total claimed
  • Loading branch information
Sorizen authored Nov 15, 2024
1 parent c4687aa commit 4b2c07c
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 8 deletions.
46 changes: 46 additions & 0 deletions src/common/InfoDashboard/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
ChartData,
UserReferral,
UserReferralDepositedAmount,
ReferrerTotalClaimed,
} from '@/types'
import { SORTING_ORDER } from '@/enums'

Expand Down Expand Up @@ -50,6 +51,35 @@ export async function fetchSpecificUserReferrers(
return data.userReferrers
}

export async function fetchReferrersTotalClaimed(
poolId: string | number,
user: string,
type: NETWORK_IDS,
): Promise<ReferrerTotalClaimed[]> {
const queryPattern = _generateReferrersTotalClaimedPattern(
String(poolId),
user.toLowerCase(),
)

const apolloClient =
type === NETWORK_IDS.mainnet
? config.mainnetApolloClient
: config.testnetApolloClient

const query = gql`
query GetReferrersTotalClaimed {
${queryPattern}
}
`

const { data } = await apolloClient.query({
query,
variables: {},
})

return data.referrers
}

export async function fetchDepositedAmountUserReferrers(
poolId: string | number,
referrer: string,
Expand Down Expand Up @@ -354,3 +384,19 @@ function _generateDepositAmountUserReferrersPattern(
}
`
}

function _generateReferrersTotalClaimedPattern(
poolId: string,
user: string,
): string {
return `
referrers(
where: {
user: "${user}",
poolId: "${poolId}"
}
) {
totalClaimed
}
`
}
20 changes: 19 additions & 1 deletion src/composables/use-referral-info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
} from '@/types'
import {
fetchDepositedAmountUserReferrers,
fetchReferrersTotalClaimed,
fetchSpecificUserReferrers,
} from '@/common/InfoDashboard/helpers'
import { useRoute } from 'vue-router'
Expand Down Expand Up @@ -86,18 +87,35 @@ export const useReferralInfo = (poolId: number) => {
return resultIndex
}

const getTotalClaimedTokens = async (
userAddress: string,
): Promise<BigNumber> => {
const data = await fetchReferrersTotalClaimed(
poolId,
userAddress,
route.query.network as NETWORK_IDS,
)

return data.reduce((acc, item) => {
acc = acc.add(item.totalClaimed)
return acc
}, BigNumber.from(0))
}

const getRefData = async (userAddress: string): Promise<ReferralData> => {
const [currentReward, multiplier, refData, depositedAmount] =
const [currentReward, multiplier, refData, depositedAmount, totalClaimed] =
await Promise.all([
getCurrentReferrerReward(userAddress),
getReferrerMultiplier(userAddress),
getReferrersData(userAddress),
getDepositedAmountByUser(userAddress),
getTotalClaimedTokens(userAddress),
])

const foundTier = findTierIndex(refData.amountStaked)

return {
totalClaimed,
depositedAmount,
currentReward,
multiplier,
Expand Down
18 changes: 15 additions & 3 deletions src/pages/Referrals/RefereesList/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@
:sorting="sortingOrder"
@sort="chooseSortingOrder"
/>
<div class="referees-list__users-wrapper">
<div
class="referees-list__users-wrapper"
:class="{ 'referees-list__users-wrapper--small': !isPaginationShown }"
>
<template v-if="isLoaded">
<error-message
v-if="isLoadFailed"
Expand All @@ -25,7 +28,10 @@
:deposited-amount="humanizeDepositedAmount(user.amount)"
/>
</div>
<div class="referees-list__pagination-wrapper">
<div
v-if="isPaginationShown"
class="referees-list__pagination-wrapper"
>
<pagination
v-model:current-page="currentPage"
:total-items="refsCount"
Expand All @@ -40,7 +46,7 @@
</template>

<script setup lang="ts">
import { ref, watch } from 'vue'
import { computed, ref, watch } from 'vue'
import RefereeListItem from './RefereeListItem.vue'
import RefereesListNavigation from './RefereesListNavigation.vue'
import { SORTING_ORDER } from '@/enums'
Expand All @@ -67,6 +73,8 @@ const isLoadFailed = ref(false)
const sortingOrder = ref(SORTING_ORDER.none)
const usersList = ref<UserReferral[]>([])
const isPaginationShown = computed(() => refsCount > DEFAULT_PAGE_LIMIT)
const chooseSortingOrder = (order: SORTING_ORDER) => {
if (sortingOrder.value === order) {
sortingOrder.value = SORTING_ORDER.none
Expand Down Expand Up @@ -150,6 +158,10 @@ watch(
gap: toRem(10);
min-height: toRem(410);
position: relative;
&--small {
min-height: fit-content;
}
}
.referees-list__system-message {
Expand Down
10 changes: 6 additions & 4 deletions src/pages/Referrals/ReferralSystemRate.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
symbol: web3ProvidersStore.rewardsTokenSymbol,
})
"
:disabled="!availableToClaim"
:disabled="!Boolean(availableToClaim)"
@click="emit('claim-ref-bonus')"
/>
</div>
Expand Down Expand Up @@ -84,7 +84,9 @@ const availableToClaim = computed(() =>
)
const isClaimButtonHidden = computed(
() => route.query.user && route.query.user !== web3ProvidersStore.address,
() =>
Boolean(route.query.user) &&
route.query.user !== web3ProvidersStore.address,
)
const info = computed(() => [
Expand Down Expand Up @@ -112,10 +114,10 @@ const info = computed(() => [
symbol: web3ProvidersStore.rewardsTokenSymbol,
}),
value: `${
props.referralData?.currentReward
props.referralData?.totalClaimed
? parseFloat(
parseFloat(
ethers.utils.formatUnits(props.referralData?.currentReward),
ethers.utils.formatUnits(props.referralData?.totalClaimed),
).toFixed(ROUND_DIGITS),
)
: 0
Expand Down
5 changes: 5 additions & 0 deletions src/types/referral.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { ethers } from 'ethers'
export type ReferralData = {
tier: number | string
currentReward: ethers.BigNumber
totalClaimed: ethers.BigNumber
multiplier: ethers.BigNumber
amountStaked: ethers.BigNumber
virtualAmountStaked: ethers.BigNumber
Expand All @@ -22,3 +23,7 @@ export type UserReferral = {
export type UserReferralDepositedAmount = {
amount: string
}

export type ReferrerTotalClaimed = {
totalClaimed: string
}

0 comments on commit 4b2c07c

Please sign in to comment.