diff --git a/src/components/masa-interface/pages/create-soulname/create-soulname.tsx b/src/components/masa-interface/pages/create-soulname/create-soulname.tsx index ab2bd96f..02b93695 100644 --- a/src/components/masa-interface/pages/create-soulname/create-soulname.tsx +++ b/src/components/masa-interface/pages/create-soulname/create-soulname.tsx @@ -4,6 +4,7 @@ import { useDebounce, useMasa } from '../../../../provider'; import { MasaLoading } from '../../../masa-loading'; import { PaymentMethod } from '@masa-finance/masa-sdk'; import { Spinner } from '../../../spinner'; +import { Select } from '../../../select'; export const InterfaceCreateSoulname = (): JSX.Element => { const { @@ -12,16 +13,35 @@ export const InterfaceCreateSoulname = (): JSX.Element => { identity, closeModal, masa, - currentNetwork, } = useMasa(); + const paymentMethods = useMemo(() => { + const tokensAvailable = { + [masa?.config.network?.nativeCurrency?.name ?? '']: + masa?.config.network?.nativeCurrency?.name, + ...masa?.config.network?.addresses.tokens, + }; + + const values: { name: PaymentMethod; value: string }[] = []; + for (let token in tokensAvailable) { + values.push({ + name: token as PaymentMethod, + value: tokensAvailable[token], + }); + } + + return values; + }, [masa]); + const [soulname, setSoulname] = useState(''); const [extension, setExtension] = useState(); const [loadingIsAvailable, setLoadingIsAvailable] = useState(false); const [isAvailable, setIsAvailable] = useState(true); const [registrationPeriod, setRegistrationPeriod] = useState(1); const [registrationPrice, setRegistrationPrice] = useState('0'); - const [paymentMethod] = useState('ETH'); + const [paymentMethod, setPaymentMethod] = useState( + paymentMethods[0]?.name + ); const [isLoadingMint, setLoadingMint] = useState(false); const [showError, setShowError] = useState(false); @@ -102,10 +122,14 @@ export const InterfaceCreateSoulname = (): JSX.Element => { // do we have an identity yet? identity?.identityId ? // yes, only mint soul name - await masa?.soulName.create('ETH', soulname, registrationPeriod) + await masa?.soulName.create( + paymentMethod, + soulname, + registrationPeriod + ) : // nope, mint both await handlePurchaseIdentityWithSoulname?.( - 'ETH', + paymentMethod, soulname, registrationPeriod ); @@ -124,6 +148,7 @@ export const InterfaceCreateSoulname = (): JSX.Element => { handlePurchaseIdentityWithSoulname, identity, closeModal, + paymentMethod ]); if (isLoading) return ; @@ -242,25 +267,21 @@ export const InterfaceCreateSoulname = (): JSX.Element => { - { + setPaymentMethod(e.target?.value); + }} readOnly={true} /> - - {/*
- -

Estimated total (Price + Gas)

-
*/}
diff --git a/src/components/select/index.ts b/src/components/select/index.ts new file mode 100644 index 00000000..de9bdf23 --- /dev/null +++ b/src/components/select/index.ts @@ -0,0 +1 @@ +export { Select } from './select'; diff --git a/src/components/select/select.tsx b/src/components/select/select.tsx new file mode 100644 index 00000000..04a8f90f --- /dev/null +++ b/src/components/select/select.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +interface InputProps extends React.HTMLProps { + label?: string; + required?: boolean; + values?: any[]; +} +export const Select = ({ label, required, values, className, ...rest }: InputProps) => { + return ( +
+ {label && ( + + )} + +
+ ); +}; diff --git a/stories/masa.stories.tsx b/stories/masa.stories.tsx index fc2f06bf..e924d9ef 100644 --- a/stories/masa.stories.tsx +++ b/stories/masa.stories.tsx @@ -3,6 +3,7 @@ import React, { useCallback } from 'react'; import { MasaProvider, queryClient, useMasa } from '../src'; import { Args, Meta, Story } from '@storybook/react'; +import { EnvironmentName } from '@masa-finance/masa-sdk'; const meta: Meta = { title: 'SDK Test',