1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

added token and refactor TokenApprove (es ButtonApprove)

This commit is contained in:
Enzo Vezzaro 2022-06-20 07:22:29 -04:00
parent 37d1c0cf82
commit b0e57c66df
5 changed files with 66 additions and 23 deletions

View File

@ -1,11 +1,6 @@
import React from 'react' import React from 'react'
import { ComponentStory, ComponentMeta } from '@storybook/react' import { ComponentStory, ComponentMeta } from '@storybook/react'
import Conversion, { ConversionProps } from '@shared/Price/Conversion' import Conversion, { ConversionProps } from '@shared/Price/Conversion'
import {
locale,
currency,
prices
} from '../../../../../.storybook/__mockdata__'
export default { export default {
title: 'Component/@shared/Price/Conversion', title: 'Component/@shared/Price/Conversion',

View File

@ -2,6 +2,9 @@ import React from 'react'
import { ComponentStory, ComponentMeta } from '@storybook/react' import { ComponentStory, ComponentMeta } from '@storybook/react'
import Token, { TokenProps } from '@shared/Token' import Token, { TokenProps } from '@shared/Token'
import { locale, currency, prices } from '../../../../.storybook/__mockdata__' import { locale, currency, prices } from '../../../../.storybook/__mockdata__'
import { PricesProvider } from '@context/Prices'
import { UserPreferencesProvider } from '@context/UserPreferences'
import { MarketMetadataProvider } from '@context/MarketMetadata'
export default { export default {
title: 'Component/@shared/Token', title: 'Component/@shared/Token',
@ -9,7 +12,15 @@ export default {
} as ComponentMeta<typeof Token> } as ComponentMeta<typeof Token>
const Template: ComponentStory<typeof Token> = (args: TokenProps) => { const Template: ComponentStory<typeof Token> = (args: TokenProps) => {
return <Token {...args} /> return (
<MarketMetadataProvider>
<UserPreferencesProvider>
<PricesProvider>
<Token {...args} />
</PricesProvider>
</UserPreferencesProvider>
</MarketMetadataProvider>
)
} }
interface Props { interface Props {
@ -19,8 +30,5 @@ interface Props {
export const Default: Props = Template.bind({}) export const Default: Props = Template.bind({})
Default.args = { Default.args = {
symbol: 'ETH', symbol: 'ETH',
balance: '1', balance: '1'
locale,
currency,
prices
} }

View File

@ -5,7 +5,7 @@ import { useUserPreferences } from '@context/UserPreferences'
import Tooltip from '@shared/atoms/Tooltip' import Tooltip from '@shared/atoms/Tooltip'
import content from '../../../../content/price.json' import content from '../../../../content/price.json'
export function ButtonApprove({ export function TokenApprove({
amount, amount,
tokenSymbol, tokenSymbol,
approveTokens, approveTokens,

View File

@ -0,0 +1,38 @@
import React from 'react'
import { ComponentStory, ComponentMeta } from '@storybook/react'
import TokenApproval, { TokenApprovalProps } from '@shared/TokenApproval'
import { UserPreferencesProvider } from '@context/UserPreferences'
import { MarketMetadataProvider } from '@context/MarketMetadata'
export default {
title: 'Component/@shared/TokenApproval',
component: TokenApproval
} as ComponentMeta<typeof TokenApproval>
const Template: ComponentStory<typeof TokenApproval> = (
args: TokenApprovalProps
) => {
return (
<MarketMetadataProvider>
<UserPreferencesProvider>
<TokenApproval {...args} />
</UserPreferencesProvider>
</MarketMetadataProvider>
)
}
interface Props {
args: TokenApprovalProps
}
export const Default: Props = Template.bind({})
Default.args = {
actionButton: <p>test</p>,
disabled: false,
amount: '1',
tokenAddress: '0x0000000000000000000000000000000000000000',
tokenSymbol: 'ETH',
setIsTokenApproved: () => {
console.log('clicked')
}
}

View File

@ -2,9 +2,19 @@ import React, { ReactElement, useCallback, useEffect, useState } from 'react'
import { useAsset } from '@context/Asset' import { useAsset } from '@context/Asset'
import { useWeb3 } from '@context/Web3' import { useWeb3 } from '@context/Web3'
import Decimal from 'decimal.js' import Decimal from 'decimal.js'
import { ButtonApprove } from './ButtonApprove' import { TokenApprove } from './TokenApprove'
import { allowance, approve, LoggerInstance } from '@oceanprotocol/lib' import { allowance, approve, LoggerInstance } from '@oceanprotocol/lib'
export interface TokenApprovalProps {
actionButton: JSX.Element
disabled: boolean
amount: string
tokenAddress: string
tokenSymbol: string
setSubmitting?: (isSubmitting: boolean) => void
setIsTokenApproved: (isApproved: boolean) => void
}
export default function TokenApproval({ export default function TokenApproval({
actionButton, actionButton,
disabled, disabled,
@ -13,19 +23,11 @@ export default function TokenApproval({
tokenSymbol, tokenSymbol,
setSubmitting, setSubmitting,
setIsTokenApproved setIsTokenApproved
}: { }: TokenApprovalProps): ReactElement {
actionButton: JSX.Element
disabled: boolean
amount: string
tokenAddress: string
tokenSymbol: string
setSubmitting?: (isSubmitting: boolean) => void
setIsTokenApproved: (isApproved: boolean) => void
}): ReactElement {
const { asset, isAssetNetwork } = useAsset() const { asset, isAssetNetwork } = useAsset()
const { web3, accountId } = useWeb3()
const [tokenApproved, setTokenApproved] = useState(false) const [tokenApproved, setTokenApproved] = useState(false)
const [loading, setLoading] = useState(false) const [loading, setLoading] = useState(false)
const { web3, accountId } = useWeb3()
const spender = asset?.accessDetails?.addressOrId const spender = asset?.accessDetails?.addressOrId
@ -84,7 +86,7 @@ export default function TokenApproval({
typeof amount === 'undefined' ? ( typeof amount === 'undefined' ? (
actionButton actionButton
) : ( ) : (
<ButtonApprove <TokenApprove
amount={amount} amount={amount}
tokenSymbol={tokenSymbol} tokenSymbol={tokenSymbol}
approveTokens={approveTokens} approveTokens={approveTokens}