diff --git a/apps/trading/.env.stagnet1 b/apps/trading/.env.stagnet1 index c30708ad7..8634b87af 100644 --- a/apps/trading/.env.stagnet1 +++ b/apps/trading/.env.stagnet1 @@ -26,6 +26,7 @@ NX_ICEBERG_ORDERS=true # NX_PRODUCT_PERPETUALS NX_METAMASK_SNAPS=true NX_REFERRALS=true +NX_TEAM_COMPETITION=true NX_CHARTING_LIBRARY_PATH=https://assets.vega.community/trading-view-bundle/v0.0.1/ NX_CHARTING_LIBRARY_HASH=PDjWaqPFndDp+LCvqbKvntWriaqNzNpZ5i9R/BULzCg= diff --git a/apps/trading/client-pages/competitions/competitions-create-team.tsx b/apps/trading/client-pages/competitions/competitions-create-team.tsx index ee12a5c0c..e8ead8e9e 100644 --- a/apps/trading/client-pages/competitions/competitions-create-team.tsx +++ b/apps/trading/client-pages/competitions/competitions-create-team.tsx @@ -1,28 +1,9 @@ import { useSearchParams } from 'react-router-dom'; -import { Controller, useForm } from 'react-hook-form'; -import { - Intent, - TextArea, - TradingAnchorButton, - TradingButton, - TradingCheckbox, - TradingFormGroup, - TradingInput, - TradingInputError, -} from '@vegaprotocol/ui-toolkit'; -import { - useVegaWallet, - type CreateReferralSet, - type Status, - useVegaWalletDialogStore, -} from '@vegaprotocol/wallet'; -import { - addDecimalsFormatNumber, - isValidVegaPublicKey, - URL_REGEX, -} from '@vegaprotocol/utils'; +import { Intent, TradingAnchorButton } from '@vegaprotocol/ui-toolkit'; +import { useVegaWallet, useVegaWalletDialogStore } from '@vegaprotocol/wallet'; +import { addDecimalsFormatNumber } from '@vegaprotocol/utils'; import { useT } from '../../lib/use-t'; -import { useCreateReferralSet } from '../../lib/hooks/use-create-referral-set'; +import { useReferralSetTransaction } from '../../lib/hooks/use-referral-set-transaction'; import { DApp, TokenStaticLinks, useLinks } from '@vegaprotocol/environment'; import { RainbowButton } from '../../components/rainbow-button'; import { usePageTitle } from '../../lib/hooks/use-page-title'; @@ -30,14 +11,7 @@ import { ErrorBoundary } from '../../components/error-boundary'; import { Box } from '../../components/competitions/box'; import { LayoutWithGradient } from '../../components/layouts-inner'; import { Links } from '../../lib/links'; - -interface FormFields { - name: string; - url: string; - avatarUrl: string; - private: boolean; - allowList: string; -} +import { TeamForm, TransactionType } from './team-form'; export const CompetitionsCreateTeam = () => { const [searchParams] = useSearchParams(); @@ -85,7 +59,7 @@ const CreateTeamFormContainer = ({ isSolo }: { isSolo: boolean }) => { const createLink = useLinks(DApp.Governance); const { err, status, code, isEligible, requiredStake, onSubmit } = - useCreateReferralSet({ + useReferralSetTransaction({ onSuccess: (code) => { // For some reason team creation takes a long time, too long even to make // polling viable, so its not feasible to navigate to the team page @@ -146,7 +120,8 @@ const CreateTeamFormContainer = ({ isSolo }: { isSolo: boolean }) => { } return ( - { /> ); }; - -const CreateTeamForm = ({ - status, - err, - isSolo, - onSubmit, -}: { - status: ReturnType['status']; - err: ReturnType['err']; - isSolo: boolean; - onSubmit: (tx: CreateReferralSet) => void; -}) => { - const t = useT(); - - const { - register, - handleSubmit, - control, - watch, - formState: { errors }, - } = useForm({ - defaultValues: { - private: isSolo, - }, - }); - - const isPrivate = watch('private'); - - const createTeam = (fields: FormFields) => { - onSubmit({ - createReferralSet: { - isTeam: true, - team: { - name: fields.name, - teamUrl: fields.url, - avatarUrl: fields.avatarUrl, - closed: fields.private, - allowList: fields.private ? parseAllowListText(fields.allowList) : [], - }, - }, - }); - }; - - return ( -
- - - {errors.name?.message && ( - - {errors.name.message} - - )} - - - - {errors.url?.message && ( - - {errors.url.message} - - )} - - - - {errors.avatarUrl?.message && ( - - {errors.avatarUrl.message} - - )} - - - { - return ( - { - field.onChange(value); - }} - disabled={isSolo} - /> - ); - }} - /> - - {isPrivate && ( - -