From 3a080daf25a6873903a367fad37a18594f9313d3 Mon Sep 17 00:00:00 2001 From: Serkan Reis Date: Mon, 13 Feb 2023 19:59:16 +0300 Subject: [PATCH] Update confirmation modal --- components/BadgeConfirmationModal.tsx | 67 +++++++++++++++++++++++++++ pages/badges/create.tsx | 67 ++++++++++----------------- 2 files changed, 92 insertions(+), 42 deletions(-) create mode 100644 components/BadgeConfirmationModal.tsx diff --git a/components/BadgeConfirmationModal.tsx b/components/BadgeConfirmationModal.tsx new file mode 100644 index 0000000..1bc6489 --- /dev/null +++ b/components/BadgeConfirmationModal.tsx @@ -0,0 +1,67 @@ +import { useState } from 'react' + +import { Button } from './Button' + +export interface BadgeConfirmationModalProps { + confirm: () => void +} +export const BadgeConfirmationModal = (props: BadgeConfirmationModalProps) => { + const [isChecked, setIsChecked] = useState(false) + return ( +
+ + +
+ ) +} diff --git a/pages/badges/create.tsx b/pages/badges/create.tsx index 5573ce8..3ba053a 100644 --- a/pages/badges/create.tsx +++ b/pages/badges/create.tsx @@ -6,14 +6,16 @@ import clsx from 'clsx' import { Alert } from 'components/Alert' import { Anchor } from 'components/Anchor' +import { BadgeConfirmationModal } from 'components/BadgeConfirmationModal' +import { BadgeLoadingModal } from 'components/BadgeLoadingModal' import type { BadgeDetailsDataProps } from 'components/badges/creation/BadgeDetails' import { BadgeDetails } from 'components/badges/creation/BadgeDetails' import type { ImageUploadDetailsDataProps, MintRule } from 'components/badges/creation/ImageUploadDetails' import { ImageUploadDetails } from 'components/badges/creation/ImageUploadDetails' import { Button } from 'components/Button' import { Conditional } from 'components/Conditional' +import { TextInput } from 'components/forms/FormInput' import { useInputState } from 'components/forms/FormInput.hooks' -import { LoadingModal } from 'components/LoadingModal' import { useContracts } from 'contexts/contracts' import { useWallet } from 'contexts/wallet' import type { DispatchExecuteArgs as BadgeHubDispatchExecuteArgs } from 'contracts/badgeHub/messages/execute' @@ -32,12 +34,6 @@ import { BADGE_HUB_ADDRESS, BLOCK_EXPLORER_URL, NETWORK } from 'utils/constants' import { withMetadata } from 'utils/layout' import { links } from 'utils/links' -import { TextInput } from '../../components/forms/FormInput' - -// import { ConfirmationModal } from '../../components/ConfirmationModal' -// import { badgeHub } from '../../contracts/badgeHub/contract' -// import { isValidAddress } from '../../utils/isValidAddress' - const BadgeCreationPage: NextPage = () => { const wallet = useWallet() const { badgeHub: badgeHubContract } = useContracts() @@ -70,8 +66,10 @@ const BadgeCreationPage: NextPage = () => { try { setReadyToCreateBadge(false) checkImageUploadDetails() - // checkMetadataDetails() - setReadyToCreateBadge(true) + checkBadgeDetails() + setTimeout(() => { + setReadyToCreateBadge(true) + }, 100) } catch (error: any) { toast.error(error.message, { style: { maxWidth: 'none' } }) setUploading(false) @@ -180,32 +178,17 @@ const BadgeCreationPage: NextPage = () => { } } - // const checkBadgeDetails = () => { - // if (!metadataDetails) throw new Error('Please fill out the collection details') - // if (collectionDetails.name === '') throw new Error('Collection name is required') - // if (collectionDetails.description === '') throw new Error('Collection description is required') - // if (collectionDetails.description.length > 512) - // throw new Error('Collection description cannot exceed 512 characters') - // if (uploadDetails?.uploadMethod === 'new' && collectionDetails.imageFile.length === 0) - // throw new Error('Collection cover image is required') - // if ( - // collectionDetails.startTradingTime && - // Number(collectionDetails.startTradingTime) < new Date().getTime() * 1000000 - // ) - // throw new Error('Invalid trading start time') - // if ( - // collectionDetails.startTradingTime && - // Number(collectionDetails.startTradingTime) < Number(mintingDetails?.startTime) - // ) - // throw new Error('Trading start time must be after minting start time') - // if (collectionDetails.externalLink) { - // try { - // const url = new URL(collectionDetails.externalLink) - // } catch (e: any) { - // throw new Error(`Invalid external link: Make sure to include the protocol (e.g. https://)`) - // } - // } - // } + const checkBadgeDetails = () => { + if (!badgeDetails) throw new Error('Please fill out the required fields') + if (keyState.value === '' || !createdBadgeKey) throw new Error('Please generate a key') + if (badgeDetails.external_url) { + try { + const url = new URL(badgeDetails.external_url) + } catch (e: any) { + throw new Error(`Invalid external url: Make sure to include the protocol (e.g. https://)`) + } + } + } const handleGenerateKey = () => { let privKey: Buffer @@ -218,7 +201,7 @@ const BadgeCreationPage: NextPage = () => { console.log('Private Key: ', privateKey) const publicKey = Buffer.from(secp256k1.publicKeyCreate(privKey)).toString('hex') - + setBadgeId(null) keyState.onChange(publicKey) } @@ -265,7 +248,7 @@ const BadgeCreationPage: NextPage = () => {

Create Badge

- +

@@ -442,7 +425,7 @@ const BadgeCreationPage: NextPage = () => {

- + @@ -456,15 +439,15 @@ const BadgeCreationPage: NextPage = () => { />
- {/* - - */} + + +