From 1ac26938a6ab0ae0e2cd175fafcf4e150650d426 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 27 Feb 2024 01:41:13 -0800 Subject: [PATCH] feat: add base collection when send base redpacket (#11459) * feat: add base collection when send base rp * fix: prettier * fix: eslint --------- Co-authored-by: nuanyang233 Co-authored-by: guanbinrui <52657989+guanbinrui@users.noreply.github.com> Co-authored-by: guanbinrui --- .../SiteAdaptor/ClaimRequirementsDialog.tsx | 16 +++++++++++++++- .../SelectNonFungibleContractDialog.tsx | 18 +++++++++++++++--- .../SelectNonFungibleContractModal/index.tsx | 6 ++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/ClaimRequirementsDialog.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/ClaimRequirementsDialog.tsx index e715627962d2..e6b7bc7127b5 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/ClaimRequirementsDialog.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/ClaimRequirementsDialog.tsx @@ -17,7 +17,7 @@ import { Icons, type GeneratedIcon } from '@masknet/icons' import { RequirementType, type FireflyRedpacketSettings } from '../types.js' import { EMPTY_LIST, NetworkPluginID, PluginID } from '@masknet/shared-base' import type { NonFungibleCollection } from '@masknet/web3-shared-base' -import { SchemaType, type ChainId } from '@masknet/web3-shared-evm' +import { SchemaType, ChainId } from '@masknet/web3-shared-evm' import { useChainContext } from '@masknet/web3-hooks-base' import { Trans } from 'react-i18next' import { getEnumAsArray } from '@masknet/kit' @@ -139,6 +139,20 @@ export function ClaimRequirementsDialog(props: ClaimRequirementsDialogProps) { schemaType: SchemaType.ERC721, chainId, onSubmit: (value: NonFungibleCollection) => setSelectedCollection(value), + collections: + chainId === ChainId.Base ? + [ + { + chainId: 8453, + name: 'Firefly (Base) Friends', + address: '0x577294402BA4679b6ba4A24B8e03Ce9d0C728e72', + slug: 'Firefly (Base) Friends', + symbol: '', + iconURL: + 'https://remote-image.decentralized-content.com/image?url=https%3A%2F%2Fipfs.decentralized-content.com%2Fipfs%2Fbafybeic5qugbigrxmb4vbyt4qk6cfyqlgmvembkwyrjj3go3lrt74aysci&w=1080&q=75', + }, + ] + : undefined, }) }, [chainId]) diff --git a/packages/shared/src/UI/modals/SelectNonFungibleContractModal/SelectNonFungibleContractDialog.tsx b/packages/shared/src/UI/modals/SelectNonFungibleContractModal/SelectNonFungibleContractDialog.tsx index a70daaba86ee..fb344b772fba 100644 --- a/packages/shared/src/UI/modals/SelectNonFungibleContractModal/SelectNonFungibleContractDialog.tsx +++ b/packages/shared/src/UI/modals/SelectNonFungibleContractModal/SelectNonFungibleContractDialog.tsx @@ -69,10 +69,19 @@ interface SelectNonFungibleContractDialogProps, ): void + initialCollections?: Array> } export const SelectNonFungibleContractDialog = memo( - ({ open, pluginID, chainId, onClose, onSubmit, schemaType }: SelectNonFungibleContractDialogProps) => { + ({ + open, + pluginID, + chainId, + onClose, + onSubmit, + schemaType, + initialCollections, + }: SelectNonFungibleContractDialogProps) => { const t = useSharedTrans() const { classes } = useStyles() const [keyword, setKeyword] = useState('') @@ -116,7 +125,8 @@ export const SelectNonFungibleContractDialog = memo( const filteredCollections = useMemo(() => { const allCollections = [...customizedCollections, ...collections] - return pluginID === NetworkPluginID.PLUGIN_EVM ? + const result = + pluginID === NetworkPluginID.PLUGIN_EVM ? allCollections.filter((x) => { return ( x.address && @@ -127,7 +137,9 @@ export const SelectNonFungibleContractDialog = memo( ) }) : allCollections - }, [customizedCollections, collections, pluginID]) + + return [...result, ...(initialCollections ?? [])] + }, [customizedCollections, collections, pluginID, initialCollections]) const fuse = useMemo(() => { return FuseNonFungibleCollection.create(filteredCollections) }, [filteredCollections]) diff --git a/packages/shared/src/UI/modals/SelectNonFungibleContractModal/index.tsx b/packages/shared/src/UI/modals/SelectNonFungibleContractModal/index.tsx index dc1cb147a3e5..934b59aec6a7 100644 --- a/packages/shared/src/UI/modals/SelectNonFungibleContractModal/index.tsx +++ b/packages/shared/src/UI/modals/SelectNonFungibleContractModal/index.tsx @@ -14,6 +14,7 @@ export interface SelectNonFungibleContractModalOpenProps, ): void + collections?: Array> } export const SelectNonFungibleContractModal = forwardRef< @@ -23,8 +24,11 @@ export const SelectNonFungibleContractModal = forwardRef< const [chainId, setChainId] = useState() const [schemaType, setSchemaType] = useState() const [title, setTitle] = useState() + const [collections, setCollections] = + useState>>() const [onSubmit, setOnSubmit] = useState<(collection: NonFungibleCollection) => void>() + const [open, dispatch] = useSingletonModal(ref, { onOpen(props) { setPluginID(props.pluginID) @@ -32,6 +36,7 @@ export const SelectNonFungibleContractModal = forwardRef< setSchemaType(props.schemaType) setTitle(props.title) setOnSubmit(() => props.onSubmit) + setCollections(props.collections) }, }) @@ -45,6 +50,7 @@ export const SelectNonFungibleContractModal = forwardRef< chainId={chainId} pluginID={pluginID} onSubmit={onSubmit} + initialCollections={collections} /> ) })