From 26bb321947a8a2b5425c8c3f0bbae6d0c38aee08 Mon Sep 17 00:00:00 2001 From: Harlan Sun <33143119+beyond009@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:20:17 +0800 Subject: [PATCH] fix: bugfix for redpacket history & change api (#11422) * feat: change rp history api for maskbook * fix: remove debug code * chore: review * fix: type error * fix: type error * fix: prettier * chore: remove unused * chore: code review * fix: remove debug code * fix: fix type * fix: type --------- Co-authored-by: beyond009 --- .../FireflyRedPacketDetailsItem.tsx | 27 ++- .../FireflyRedPacketHistoryDetails.tsx | 3 +- .../FireflyRedPacketHistoryList.tsx | 20 +- ...onButton.tsx => RedPacketActionButton.tsx} | 4 +- .../src/SiteAdaptor/RedPacketDialog.tsx | 3 +- .../src/SiteAdaptor/RedPacketHistoryList.tsx | 25 +- .../SiteAdaptor/RedPacketInHistoryList.tsx | 229 ++++++------------ .../SiteAdaptor/hooks/useRedPacketHistory.ts | 63 ++--- .../web3-providers/src/Firefly/RedPacket.ts | 9 +- packages/web3-providers/src/types/Firefly.ts | 13 +- 10 files changed, 149 insertions(+), 247 deletions(-) rename packages/plugins/RedPacket/src/SiteAdaptor/{FireflyRedPacketActionButton.tsx => RedPacketActionButton.tsx} (96%) diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketDetailsItem.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketDetailsItem.tsx index 66771bbff7f9..ca312324d383 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketDetailsItem.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketDetailsItem.tsx @@ -7,7 +7,7 @@ import { Box, ListItem, Typography } from '@mui/material' import { memo } from 'react' import { RedPacketTrans, useRedPacketTrans } from '../locales/index.js' import { format, fromUnixTime } from 'date-fns' -import { FireflyRedPacketActionButton } from './FireflyRedPacketActionButton.js' +import { RedPacketActionButton } from './RedPacketActionButton.js' import { FireflyRedPacketAPI } from '@masknet/web3-providers/types' import { FireflyRedPacketAccountItem } from './FireflyRedPacketAccountItem.js' import { Icons } from '@masknet/icons' @@ -317,20 +317,27 @@ export const FireflyRedPacketDetailsItem = memo(function FireflyRedPacketDetails
{( postReactionStrategy?.payload as FireflyRedPacketAPI.PostReactionStrategyPayload - )?.params?.map((x) => ( - - ))} + )?.params + ?.sort((a, b) => { + if (a.platform === b.platform) return 0 + if (a.platform === FireflyRedPacketAPI.PlatformType.lens) return 1 + if (b.platform === FireflyRedPacketAPI.PlatformType.lens) return -1 + return 0 + }) + .map((x) => ( + + ))}
: null} {redpacket_status && redpacket_status !== FireflyRedPacketAPI.RedPacketStatus.View ? - ({ container: { padding: '12px 16px', height: 474, + overflow: 'auto', '&::-webkit-scrollbar': { display: 'none', }, @@ -76,7 +77,7 @@ export const FireflyRedPacketHistoryDetails = memo(function FireflyRedPacketHist {formatBalance(item.token_amounts, item.token_decimal, { - significant: 2, + significant: 6, isPrecise: true, })}{' '} {item.token_symbol} diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketHistoryList.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketHistoryList.tsx index 2b70aa92bd6a..231cafe2d2fa 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketHistoryList.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketHistoryList.tsx @@ -1,14 +1,13 @@ import { ElementAnchor, EmptyStatus } from '@masknet/shared' -import { createIndicator, type NetworkPluginID } from '@masknet/shared-base' +import { type NetworkPluginID } from '@masknet/shared-base' import { makeStyles } from '@masknet/theme' import { useChainContext } from '@masknet/web3-hooks-base' import { FireflyRedPacketAPI } from '@masknet/web3-providers/types' import { List } from '@mui/material' import { memo, useMemo } from 'react' import { RedPacketTrans, useRedPacketTrans } from '../locales/index.js' -import { useSuspenseInfiniteQuery } from '@tanstack/react-query' -import { FireflyRedPacket } from '../../../../web3-providers/src/Firefly/RedPacket.js' import { FireflyRedPacketDetailsItem } from './FireflyRedPacketDetailsItem.js' +import { useRedPacketHistory } from './hooks/useRedPacketHistory.js' const useStyles = makeStyles()((theme) => { const smallQuery = `@media (max-width: ${theme.breakpoints.values.sm}px)` @@ -53,20 +52,7 @@ export const FireflyRedPacketHistoryList = memo(function RedPacketHistoryList({ const t = useRedPacketTrans() const { classes } = useStyles() const { account } = useChainContext() - const { data: historiesData, fetchNextPage } = useSuspenseInfiniteQuery({ - queryKey: ['fireflyRedPacketHistory', account, historyType], - initialPageParam: createIndicator(undefined, ''), - queryFn: async ({ pageParam }) => { - const res = await FireflyRedPacket.getHistory( - historyType, - account as `0x${string}`, - FireflyRedPacketAPI.SourceType.FireflyPC, - pageParam, - ) - return res - }, - getNextPageParam: (lastPage) => lastPage.nextIndicator, - }) + const { data: historiesData, fetchNextPage } = useRedPacketHistory(account, historyType) const histories = useMemo(() => historiesData.pages.flatMap((page) => page.data), [historiesData]) if (!histories?.length) diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketActionButton.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketActionButton.tsx similarity index 96% rename from packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketActionButton.tsx rename to packages/plugins/RedPacket/src/SiteAdaptor/RedPacketActionButton.tsx index 45506c3ab1d3..808791017799 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/FireflyRedPacketActionButton.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketActionButton.tsx @@ -24,7 +24,7 @@ const useStyles = makeStyles()((theme) => { marginTop: theme.spacing(1), }, '&:disabled': { - background: theme.palette.maskColor.dark, + background: theme.palette.maskColor.primaryMain, color: theme.palette.common.white, }, '&:hover': { @@ -55,7 +55,7 @@ interface Props { createdAt?: number } -export const FireflyRedPacketActionButton = memo(function FireflyRedPacketActionButton(props: Props) { +export const RedPacketActionButton = memo(function RedPacketActionButton(props: Props) { const { redpacketStatus: _redpacketStatus, rpid, diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketDialog.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketDialog.tsx index f8f3830bd608..d276f5f9be23 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketDialog.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketDialog.tsx @@ -94,7 +94,6 @@ export default function RedPacketDialog(props: RedPacketDialogProps) { const [rpid, setRpid] = useState('') const [showClaimRule, setShowClaimRule] = useState(false) const [gasOption, setGasOption] = useState() - const isFirefly = !!props.fireflyContext const [step, setStep] = useState(CreateRedPacketPageStep.NewRedPacketPage) @@ -128,6 +127,8 @@ export default function RedPacketDialog(props: RedPacketDialogProps) { const [openSelectNFTDialog, setOpenSelectNFTDialog] = useState(false) // #endregion + const isFirefly = !!props.fireflyContext + const handleClose = useCallback(() => { setStep(CreateRedPacketPageStep.NewRedPacketPage) setSettings(undefined) diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketHistoryList.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketHistoryList.tsx index 6d8f7fd8943a..818e62a347cc 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketHistoryList.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketHistoryList.tsx @@ -1,10 +1,10 @@ -import { EmptyStatus, LoadingStatus } from '@masknet/shared' +import { EmptyStatus, LoadingStatus, ElementAnchor } from '@masknet/shared' import { type NetworkPluginID } from '@masknet/shared-base' import { makeStyles } from '@masknet/theme' import { useChainContext } from '@masknet/web3-hooks-base' -import { type RedPacketJSONPayload } from '@masknet/web3-providers/types' +import { FireflyRedPacketAPI, type RedPacketJSONPayload } from '@masknet/web3-providers/types' import { List } from '@mui/material' -import { memo } from 'react' +import { memo, useMemo } from 'react' import { useRedPacketTrans } from '../locales/index.js' import { RedPacketInHistoryList } from './RedPacketInHistoryList.js' import { useRedPacketHistory } from './hooks/useRedPacketHistory.js' @@ -42,9 +42,17 @@ export const RedPacketHistoryList = memo(function RedPacketHistoryList({ onSelec const t = useRedPacketTrans() const { classes } = useStyles() const { account, chainId } = useChainContext() - const { data: histories, isPending } = useRedPacketHistory(account, chainId) + const { + data: historiesData, + isLoading, + fetchNextPage, + } = useRedPacketHistory(account, FireflyRedPacketAPI.ActionType.Send, FireflyRedPacketAPI.SourceType.MaskNetwork) + const histories = useMemo( + () => historiesData.pages.flatMap((page) => page.data).filter((x) => x.chain_id === chainId), + [historiesData, chainId], + ) - if (isPending) return + if (isLoading) return if (!histories?.length) return {t.search_no_result()} @@ -52,8 +60,13 @@ export const RedPacketHistoryList = memo(function RedPacketHistoryList({ onSelec
{histories.map((history) => ( - + ))} + fetchNextPage()} />
) diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketInHistoryList.tsx b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketInHistoryList.tsx index 240af1c71cd5..50f75606bf0d 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketInHistoryList.tsx +++ b/packages/plugins/RedPacket/src/SiteAdaptor/RedPacketInHistoryList.tsx @@ -1,23 +1,14 @@ import { TokenIcon } from '@masknet/shared' import { NetworkPluginID } from '@masknet/shared-base' -import { ActionButton, ShadowRootTooltip, makeStyles } from '@masknet/theme' -import { useChainContext, useFungibleToken, useNetworkDescriptor } from '@masknet/web3-hooks-base' -import { - RedPacketStatus, - type RedPacketJSONPayload, - type RedPacketJSONPayloadFromChain, -} from '@masknet/web3-providers/types' -import { formatBalance, minus, type FungibleToken } from '@masknet/web3-shared-base' -import { type ChainId, type SchemaType } from '@masknet/web3-shared-evm' -import { Box, ListItem, Typography, useMediaQuery, type Theme } from '@mui/material' -import { intervalToDuration, nextDay } from 'date-fns' -import { memo, useCallback, useMemo } from 'react' -import { useEverSeen } from '../../../../shared-base-ui/src/hooks/useEverSeen.js' +import { makeStyles } from '@masknet/theme' +import { useChainContext, useNetworkDescriptor } from '@masknet/web3-hooks-base' +import { type RedPacketJSONPayload, FireflyRedPacketAPI } from '@masknet/web3-providers/types' +import { formatBalance } from '@masknet/web3-shared-base' +import { Box, ListItem, Typography } from '@mui/material' +import { format, fromUnixTime } from 'date-fns' +import { memo } from 'react' import { RedPacketTrans, useRedPacketTrans } from '../locales/index.js' -import { useAvailabilityComputed } from './hooks/useAvailabilityComputed.js' -import { useCreateRedPacketReceipt } from './hooks/useCreateRedPacketReceipt.js' -import { useRefundCallback } from './hooks/useRefundCallback.js' -import { dateTimeFormat } from './utils/formatDate.js' +import { RedPacketActionButton } from './RedPacketActionButton.js' const useStyles = makeStyles<{ listItemBackground?: string; listItemBackgroundIcon?: string }>()(( theme, @@ -113,27 +104,6 @@ const useStyles = makeStyles<{ listItemBackground?: string; listItemBackgroundIc fontSize: 13, }, }, - actionButton: { - fontSize: 12, - width: 88, - height: 32, - background: theme.palette.maskColor.dark, - color: theme.palette.maskColor.white, - borderRadius: '999px', - minHeight: 'auto', - [smallQuery]: { - marginTop: theme.spacing(1), - }, - '&:disabled': { - background: theme.palette.maskColor.dark, - color: theme.palette.common.white, - }, - '&:hover': { - background: theme.palette.maskColor.dark, - color: theme.palette.maskColor.white, - opacity: 0.8, - }, - }, footer: { width: '100%', display: 'flex', @@ -149,16 +119,6 @@ const useStyles = makeStyles<{ listItemBackground?: string; listItemBackgroundIc marginRight: 2, }, }, - popperText: { - cursor: 'default', - color: theme.palette.common.white, - fontSize: 12, - }, - disabledButton: { - background: theme.palette.maskColor.dark, - color: theme.palette.common.white, - opacity: 0.6, - }, fullWidthBox: { width: '100%', display: 'flex', @@ -176,88 +136,48 @@ const useStyles = makeStyles<{ listItemBackground?: string; listItemBackgroundIc }) interface RedPacketInHistoryListProps { - history: RedPacketJSONPayload | RedPacketJSONPayloadFromChain + history: FireflyRedPacketAPI.RedPacketSentInfo onSelect: (payload: RedPacketJSONPayload) => void } export const RedPacketInHistoryList = memo(function RedPacketInHistoryList(props: RedPacketInHistoryListProps) { - const { history, onSelect } = props + const { history } = props + const { + rp_msg, + create_time, + claim_numbers, + total_numbers, + total_amounts, + token_decimal, + claim_amounts, + token_symbol, + token_logo, + chain_id, + redpacket_id, + redpacket_status, + claim_strategy, + share_from, + theme_id, + } = history const t = useRedPacketTrans() - const [seen, ref] = useEverSeen() const { account, chainId } = useChainContext() - const isSmall = useMediaQuery((theme: Theme) => theme.breakpoints.down('sm')) - const { data: receipt } = useCreateRedPacketReceipt(seen && !history.rpid ? history.txid : '') const networkDescriptor = useNetworkDescriptor(NetworkPluginID.PLUGIN_EVM, chainId) - const rpid = history.rpid || receipt?.rpid || '' - const creation_time = history.creation_time || receipt?.creation_time || 0 - const { classes, cx } = useStyles({ listItemBackground: networkDescriptor?.backgroundGradient, listItemBackgroundIcon: networkDescriptor ? `url("${networkDescriptor.icon}")` : undefined, }) - const patchedHistory: RedPacketJSONPayload | RedPacketJSONPayloadFromChain = useMemo( - () => ({ ...props.history, rpid, creation_time }), - [props.history, rpid, creation_time], - ) - - const { - value: availability, - computed: { canRefund, canSend, listOfStatus, isPasswordValid }, - password, - retry: revalidateAvailability, - } = useAvailabilityComputed(account, patchedHistory) - - const claimerNumber = availability ? Number(availability.claimed) : 0 - const total_remaining = availability?.balance - - const [{ loading: isRefunding }, refunded, refundCallback] = useRefundCallback( - patchedHistory.contract_version, - account, - rpid, - ) - const tokenAddress = - (patchedHistory as RedPacketJSONPayload).token?.address ?? - (patchedHistory as RedPacketJSONPayloadFromChain).token_address - - const { data: tokenDetailed } = useFungibleToken(NetworkPluginID.PLUGIN_EVM, tokenAddress ?? '', undefined, { - chainId, - }) - - const historyToken = useMemo(() => { - return { - ...(tokenDetailed ?? (patchedHistory as RedPacketJSONPayload).token), - address: tokenAddress, - } as FungibleToken - }, [tokenDetailed, patchedHistory, tokenAddress]) - - const onSendOrRefund = useCallback(async () => { - if (canRefund) { - await refundCallback() - revalidateAvailability() - } - if (canSend) onSelect({ ...patchedHistory, password, token: historyToken }) - }, [onSelect, refundCallback, canRefund, canSend, patchedHistory, historyToken, password]) - - // #region refund time - const refundDuration = - canSend && !isPasswordValid ? intervalToDuration({ start: Date.now(), end: nextDay(creation_time, 1) }) : null - const formatRefundDuration = `${refundDuration?.hours}h ${refundDuration?.minutes}m` - // #endregion - return ( -
+
- {patchedHistory.sender.message === '' ? - t.best_wishes() - : patchedHistory.sender.message} + {!rp_msg ? t.best_wishes() : rp_msg}
@@ -266,44 +186,35 @@ export const RedPacketInHistoryList = memo(function RedPacketInHistoryList(props - {t.history_duration({ time: dateTimeFormat(new Date(creation_time)) })} + className={cx( + classes.info, + classes.message, + redpacket_id ? '' : classes.invisible, + )}> + {t.history_duration({ + time: format(fromUnixTime(create_time), 'M/d/yyyy HH:mm'), + })}
- {canRefund || canSend || listOfStatus.includes(RedPacketStatus.empty) || refunded ? - - {t.data_broken({ duration: formatRefundDuration })} - - : undefined - }> - - - {canSend ? - t.share() - : isRefunding ? - t.refunding() - : listOfStatus.includes(RedPacketStatus.empty) || refunded ? - t.empty() - : t.refund()} - - - + {redpacket_status && redpacket_status !== FireflyRedPacketAPI.RedPacketStatus.View ? + : null}
@@ -314,30 +225,26 @@ export const RedPacketInHistoryList = memo(function RedPacketInHistoryList(props span: , }} values={{ - claimedShares: String(claimerNumber), - shares: String(patchedHistory.shares), - amount: formatBalance(patchedHistory.total, historyToken.decimals ?? 18, { - significant: 6, + claimedShares: String(claim_numbers), + shares: String(total_numbers), + amount: formatBalance(total_amounts, token_decimal ?? 18, { + significant: 2, + isPrecise: true, + }), + claimedAmount: formatBalance(claim_amounts, token_decimal, { + significant: 2, isPrecise: true, }), - claimedAmount: - rpid ? - formatBalance( - minus(patchedHistory.total, total_remaining ?? 0), - historyToken.decimals, - { significant: 6, isPrecise: true }, - ) - : '', - symbol: historyToken.symbol, + symbol: token_symbol, }} /> - {historyToken.logoURL ? + {token_logo ? : null}
diff --git a/packages/plugins/RedPacket/src/SiteAdaptor/hooks/useRedPacketHistory.ts b/packages/plugins/RedPacket/src/SiteAdaptor/hooks/useRedPacketHistory.ts index 9cf5fc2bbbcf..484dab442eee 100644 --- a/packages/plugins/RedPacket/src/SiteAdaptor/hooks/useRedPacketHistory.ts +++ b/packages/plugins/RedPacket/src/SiteAdaptor/hooks/useRedPacketHistory.ts @@ -1,47 +1,30 @@ -import { EMPTY_LIST } from '@masknet/shared-base' -import { useWallet } from '@masknet/web3-hooks-base' -import { EVMWeb3, RedPacket, TheGraphRedPacket } from '@masknet/web3-providers' -import type { RedPacketJSONPayloadFromChain } from '@masknet/web3-providers/types' -import { getRedPacketConstants, type ChainId } from '@masknet/web3-shared-evm' -import { useQuery, type UseQueryResult } from '@tanstack/react-query' -import { uniqBy } from 'lodash-es' - -const CREATE_RED_PACKET_METHOD_ID = '0x5db05aba' +import { FireflyRedPacketAPI } from '@masknet/web3-providers/types' +import { useSuspenseInfiniteQuery, type UseSuspenseInfiniteQueryResult, type InfiniteData } from '@tanstack/react-query' +import { createIndicator } from '@masknet/shared-base' +import { FireflyRedPacket } from '@masknet/web3-providers' +import type { Pageable, PageIndicator } from '@masknet/shared-base' export function useRedPacketHistory( address: string, - chainId: ChainId, -): UseQueryResult { - const wallet = useWallet() - const { HAPPY_RED_PACKET_ADDRESS_V4_BLOCK_HEIGHT, HAPPY_RED_PACKET_ADDRESS_V4 } = getRedPacketConstants(chainId) - return useQuery({ - queryKey: ['red-packet-history', chainId, address, wallet?.owner], - queryFn: async () => { - if (!HAPPY_RED_PACKET_ADDRESS_V4) return EMPTY_LIST as RedPacketJSONPayloadFromChain[] - - if (wallet?.owner) { - const historyTransactions = await TheGraphRedPacket.getHistories( - chainId, - address, - HAPPY_RED_PACKET_ADDRESS_V4, - ) - - if (!historyTransactions) return EMPTY_LIST as RedPacketJSONPayloadFromChain[] - return historyTransactions - } - - const blockNumber = await EVMWeb3.getBlockNumber({ chainId }) - const payloadList = await RedPacket.getHistories( - chainId, - address, - HAPPY_RED_PACKET_ADDRESS_V4, - CREATE_RED_PACKET_METHOD_ID, - HAPPY_RED_PACKET_ADDRESS_V4_BLOCK_HEIGHT ?? 0, - blockNumber, + historyType: FireflyRedPacketAPI.ActionType, + platform?: FireflyRedPacketAPI.SourceType, +): UseSuspenseInfiniteQueryResult< + InfiniteData< + Pageable + > +> { + return useSuspenseInfiniteQuery({ + queryKey: ['RedPacketHistory', address, historyType], + initialPageParam: createIndicator(undefined, ''), + queryFn: async ({ pageParam }) => { + const res = await FireflyRedPacket.getHistory( + historyType, + address as `0x${string}`, + platform ? platform : FireflyRedPacketAPI.SourceType.All, + pageParam, ) - if (!payloadList) return EMPTY_LIST as RedPacketJSONPayloadFromChain[] - - return uniqBy(payloadList, (x) => x.txid) + return res }, + getNextPageParam: (lastPage) => lastPage.nextIndicator, }) } diff --git a/packages/web3-providers/src/Firefly/RedPacket.ts b/packages/web3-providers/src/Firefly/RedPacket.ts index 89c2802a53f6..6779191b2976 100644 --- a/packages/web3-providers/src/Firefly/RedPacket.ts +++ b/packages/web3-providers/src/Firefly/RedPacket.ts @@ -15,9 +15,6 @@ const siteType = getSiteType() const SITE_URL = siteType === EnhanceableSite.Firefly ? location.origin : 'https://firefly.mask.social' const FIREFLY_ROOT_URL = process.env.NEXT_PUBLIC_FIREFLY_API_URL || 'https://api.firefly.land' -type WithoutChainId = Omit -type WithNumberChainId = WithoutChainId & { chain_id: number } - function fetchFireflyJSON(url: string, init?: RequestInit): Promise { return fetchJSON(url, { ...init, @@ -151,8 +148,8 @@ export class FireflyRedPacket { static async getHistory< T extends FireflyRedPacketAPI.ActionType, - R = T extends FireflyRedPacketAPI.ActionType.Claim ? WithNumberChainId - : WithNumberChainId, + R = T extends FireflyRedPacketAPI.ActionType.Claim ? FireflyRedPacketAPI.RedPacketClaimedInfo + : FireflyRedPacketAPI.RedPacketSentInfo, >( actionType: T, from: HexString, @@ -179,7 +176,7 @@ export class FireflyRedPacket { static async getClaimHistory( redpacket_id: string, indicator?: PageIndicator, - ): Promise> { + ): Promise { const url = urlcat(FIREFLY_ROOT_URL, '/v1/redpacket/claimHistory', { redpacketId: redpacket_id, cursor: indicator?.id, diff --git a/packages/web3-providers/src/types/Firefly.ts b/packages/web3-providers/src/types/Firefly.ts index f2f73e37ec0e..1bc70c71cf06 100644 --- a/packages/web3-providers/src/types/Firefly.ts +++ b/packages/web3-providers/src/types/Firefly.ts @@ -1,3 +1,6 @@ +type WithoutChainId = Omit +type WithNumberChainId = WithoutChainId & { chain_id: number } + export namespace FireflyConfigAPI { export type Result = { code: number @@ -183,7 +186,7 @@ export namespace FireflyRedPacketAPI { platformId: string } - export interface RedPacketSentInfo { + export interface RedPacketSentInfoItem { create_time: number total_numbers: string total_amounts: string @@ -203,7 +206,7 @@ export namespace FireflyRedPacketAPI { share_from: string } - export interface RedPacketClaimedInfo { + export interface RedPacketClaimedInfoItem { redpacket_id: HexString received_time: string rp_msg: string @@ -219,6 +222,10 @@ export namespace FireflyRedPacketAPI { ens_name: string } + export interface RedPacketClaimedInfo extends WithNumberChainId {} + export interface RedPacketSentInfo extends WithNumberChainId {} + export interface RedPacketClaimListInfo extends WithNumberChainId {} + export interface ClaimList { creator: string claim_platform: Platform[] @@ -233,7 +240,7 @@ export namespace FireflyRedPacketAPI { platform_handle: string } - export interface RedPacketClaimListInfo { + export interface RedPacketClaimListInfoItem { list: ClaimList[] creator: string create_time: number