Skip to content

Commit 0322064

Browse files
authored
Add remaining project has erc20 token where missing (#4546)
1 parent f1e64c1 commit 0322064

File tree

5 files changed

+35
-28
lines changed

5 files changed

+35
-28
lines changed

src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/PayProjectModal/components/ReceiveTokensItem.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Trans } from '@lingui/macro'
22
import { CartItemBadge } from 'components/CartItemBadge'
33
import { ProjectHeaderLogo } from 'components/Project/ProjectHeader/ProjectHeaderLogo'
44
import { twMerge } from 'tailwind-merge'
5-
// import { useProjectHasErc20Token } from 'packages/v2v3/components/V2V3Project/ProjectDashboard/hooks/useProjectHasErc20Token'
65
// import { BUYBACK_DELEGATE_ENABLED_PROJECT_IDS } from 'packages/v2v3/constants/buybackDelegateEnabledProjectIds'
76
import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token'
87
import { useProjectPaymentTokens } from '../hooks/useProjectPaymentTokens'
@@ -11,7 +10,6 @@ export const ReceiveTokensItem = ({ className }: { className?: string }) => {
1110
const { receivedTickets, receivedTokenSymbolText } = useProjectPaymentTokens()
1211
const projectHasErc20Token = useProjectHasErc20Token()
1312

14-
1513
if (receivedTickets === '0') {
1614
return null
1715
}
@@ -24,11 +22,11 @@ export const ReceiveTokensItem = ({ className }: { className?: string }) => {
2422
<span className="ml-3">
2523
<Trans>{receivedTokenSymbolText}</Trans>
2624
</span>
27-
{ projectHasErc20Token ?
25+
{projectHasErc20Token ? (
2826
<CartItemBadge className="ml-2">
2927
<Trans>ERC-20</Trans>
3028
</CartItemBadge>
31-
: null}
29+
) : null}
3230
</div>
3331
<div>{receivedTickets}</div>
3432
</div>

src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/PayProjectModal/hooks/usePayProjectModal/usePayProjectTx.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
} from 'juice-sdk-react'
1313
import { useProjectSelector } from 'packages/v4/components/ProjectDashboard/redux/hooks'
1414
import { useV4NftRewards } from 'packages/v4/contexts/V4NftRewards/V4NftRewardsProvider'
15+
import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token'
1516
import { V4_CURRENCY_ETH } from 'packages/v4/utils/currency'
1617
import { ProjectPayReceipt } from 'packages/v4/views/V4ProjectDashboard/hooks/useProjectPageQueries'
1718
import { wagmiConfig } from 'packages/v4/wagmiConfig'
@@ -47,8 +48,8 @@ export const usePayProjectTx = ({
4748
} = useV4NftRewards()
4849
const converter = useCurrencyConverter()
4950
const { receivedTickets } = useProjectPaymentTokens()
50-
// TODO: implement
51-
// const projectHasErc20 = useProjectHasErc20()
51+
// TODO: is this needed for preferClaimedTokens?
52+
const projectHasErc20 = useProjectHasErc20Token()
5253

5354
const buildPayReceipt = useCallback(
5455
(txHash: Hash): ProjectPayReceipt => {

src/packages/v4/components/ProjectDashboard/V4PayRedeemCard/V4PayRedeemCard.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import { Callout } from 'components/Callout/Callout'
55
import { useJBRulesetContext } from 'juice-sdk-react'
66
import { useV4NftRewards } from 'packages/v4/contexts/V4NftRewards/V4NftRewardsProvider'
77
import { usePayoutLimit } from 'packages/v4/hooks/usePayoutLimit'
8+
import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token'
89
import { MAX_PAYOUT_LIMIT } from 'packages/v4/utils/math'
10+
import { useV4TokensPanel } from 'packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/hooks/useV4TokensPanel'
911
import React, { ReactNode } from 'react'
1012
import { twMerge } from 'tailwind-merge'
1113
import { useProjectDispatch, useProjectSelector } from '../redux/hooks'
@@ -28,14 +30,14 @@ export const V4PayRedeemCard: React.FC<PayRedeemCardProps> = ({
2830
const { data: payoutLimit } = usePayoutLimit()
2931
const dispatch = useProjectDispatch()
3032

31-
const projectHasErc20Token = false // TODO
33+
const projectHasErc20Token = useProjectHasErc20Token()
3234

3335
// TODO: We should probably break out tokens panel hook into reusable module
34-
// const { userTokenBalance: panelBalance } = useTokensPanel()
35-
// const tokenBalance = panelBalance
36-
// ? parseFloat(panelBalance.replaceAll(',', ''))
37-
// : undefined
38-
const tokenBalance = 0 // TODO
36+
const { userTokenBalance: panelBalance } = useV4TokensPanel()
37+
const tokenBalance = React.useMemo(() => {
38+
if (!panelBalance) return undefined
39+
return panelBalance.toFloat()
40+
}, [panelBalance])
3941
const redeems = {
4042
loading: ruleset.isLoading,
4143
enabled:

src/packages/v4/views/V4ProjectDashboard/V4ProjectTabs/V4TokensPanel/V4TokensPanel.tsx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AddTokenToMetamaskButton } from 'components/buttons/AddTokenToMetamaskB
1313
import { ISSUE_ERC20_EXPLANATION } from 'components/strings'
1414
import { useJBContractContext } from 'juice-sdk-react'
1515
import { V4TokenHoldersModal } from 'packages/v4/components/modals/V4TokenHoldersModal/V4TokenHoldersModal'
16+
import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token'
1617
import { v4ProjectRoute } from 'packages/v4/utils/routes'
1718
import { useCallback, useState } from 'react'
1819
import { reloadWindow } from 'utils/windowUtils'
@@ -34,6 +35,7 @@ export const V4TokensPanel = () => {
3435
projectToken,
3536
totalSupply,
3637
} = useV4TokensPanel()
38+
const projectHasErc20Token = useProjectHasErc20Token()
3739

3840
const { canMintTokens } = useV4BalanceMenuItemsUserFlags()
3941

@@ -76,7 +78,7 @@ export const V4TokensPanel = () => {
7678
<span className="flex flex-col justify-between gap-5 md:flex-row md:items-center">
7779
<Trans>{userTokenBalance.format(8)} tokens</Trans>
7880
<div className="flex flex-col justify-between gap-5 md:flex-row md:items-center md:gap-4">
79-
{/* {projectHasErc20Token && (
81+
{projectHasErc20Token && (
8082
<Button
8183
className="p-0 text-start md:text-end"
8284
type="link"
@@ -87,7 +89,7 @@ export const V4TokensPanel = () => {
8789
>
8890
<Trans>Claim ERC-20 token</Trans>
8991
</Button>
90-
)} */}
92+
)}
9193
{/* <RedeemTokensButton
9294
containerClassName="w-full md:w-fit"
9395
className="h-12 w-full md:h-10"
@@ -179,7 +181,7 @@ const ProjectTokenCard = () => {
179181
const chainId = useChainId()
180182
const { projectId: projectIdBig } = useJBContractContext()
181183
const projectId = Number(projectIdBig)
182-
184+
183185
const {
184186
projectToken,
185187
projectTokenAddress,
@@ -203,25 +205,26 @@ const ProjectTokenCard = () => {
203205
</div>
204206
{projectTokenAddress && projectHasErc20Token && (
205207
<AddTokenToMetamaskButton
206-
className="mt-2"
208+
className="mt-2"
207209
tokenAddress={projectTokenAddress}
208210
/>
209211
)}
210212
{canCreateErc20Token ? (
211213
<Tooltip title={ISSUE_ERC20_EXPLANATION}>
212-
<a href={`${v4ProjectRoute({ chainId, projectId })}/settings/createerc20`}>
213-
<Button
214-
size="small"
215-
icon={<SettingOutlined />}
216-
type='link'
217-
>
214+
<a
215+
href={`${v4ProjectRoute({
216+
chainId,
217+
projectId,
218+
})}/settings/createerc20`}
219+
>
220+
<Button size="small" icon={<SettingOutlined />} type="link">
218221
<span>
219222
<Trans>Create ERC-20 Token</Trans>
220223
</span>
221224
</Button>
222225
</a>
223226
</Tooltip>
224-
): null}
227+
) : null}
225228
</>
226229
}
227230
/>

src/packages/v4/views/V4ProjectSettings/ProjectSettingsDashboard.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,13 @@ import { Trans } from '@lingui/macro'
22
import { Button } from 'antd'
33
import EthereumAddress from 'components/EthereumAddress'
44
import Loading from 'components/Loading'
5-
import { NativeTokenValue, useJBContractContext, useJBProjectMetadataContext } from 'juice-sdk-react'
5+
import {
6+
NativeTokenValue,
7+
useJBContractContext,
8+
useJBProjectMetadataContext,
9+
} from 'juice-sdk-react'
610
import Link from 'next/link'
11+
import { useProjectHasErc20Token } from 'packages/v4/hooks/useProjectHasErc20Token'
712
import { useV4BalanceOfNativeTerminal } from 'packages/v4/hooks/useV4BalanceOfNativeTerminal'
813
import useProjectOwnerOf from 'packages/v4/hooks/useV4ProjectOwnerOf'
914
import { useV4WalletHasPermission } from 'packages/v4/hooks/useV4WalletHasPermission'
@@ -58,7 +63,7 @@ export function ProjectSettingsDashboard() {
5863
const { metadata } = useJBProjectMetadataContext()
5964

6065
const { distributableAmount } = useV4DistributableAmount()
61-
const projectHasErc20Token = false // @v4TODO
66+
const projectHasErc20Token = useProjectHasErc20Token()
6267
const hasIssueTicketsPermission = useV4WalletHasPermission(
6368
V4OperatorPermission.MINT_TOKENS,
6469
)
@@ -113,9 +118,7 @@ export function ProjectSettingsDashboard() {
113118
</div>
114119
<div className="text-xl">
115120
{!loading ? (
116-
<NativeTokenValue
117-
wei={distributableAmount.value}
118-
/>
121+
<NativeTokenValue wei={distributableAmount.value} />
119122
) : (
120123
<Loading />
121124
)}

0 commit comments

Comments
 (0)