From bcf5aaee8727425a974e9d090c39fdf67ca53a24 Mon Sep 17 00:00:00 2001 From: 0xzio Date: Thu, 14 Nov 2024 20:32:06 +0800 Subject: [PATCH] feat: improve create-fi page --- app/(blog)/wallet/page.tsx | 2 +- app/(creator-fi)/CreatorFiLayout.tsx | 32 +++++++------------ app/(creator-fi)/Space/HolderList.tsx | 10 +++--- app/(creator-fi)/Space/SpaceAddress.tsx | 4 +-- app/(creator-fi)/Space/SpaceBasicInfo.tsx | 22 +++++-------- app/(creator-fi)/Space/SpaceNav.tsx | 6 +--- app/(creator-fi)/Space/SpaceStats.tsx | 6 ++-- app/(creator-fi)/Space/TradeList.tsx | 4 +-- app/(creator-fi)/Space/Transaction.tsx | 2 +- app/(creator-fi)/SpaceToken/BuyBtn.tsx | 7 ++-- app/(creator-fi)/SpaceToken/BuyPanel.tsx | 6 ++-- app/(creator-fi)/SpaceToken/SellBtn.tsx | 3 +- app/(creator-fi)/SpaceToken/SellPanel.tsx | 8 ++--- .../SpaceToken/hooks/useSpaceTokenBalance.ts | 4 +-- .../components/MemberDialog/MemberDialog.tsx | 10 +++--- .../components/MemberDialog/TokenSelect.tsx | 6 ++-- app/(creator-fi)/components/NumberInput.tsx | 2 +- app/(creator-fi)/creator-fi/layout.tsx | 5 +-- app/(creator-fi)/creator-fi/members/page.tsx | 6 ++-- app/(creator-fi)/creator-fi/page.tsx | 4 +-- .../plans/AddPlanDialog/AddPlanForm.tsx | 4 +-- .../creator-fi/plans/PlanItem.tsx | 4 +-- .../creator-fi/plans/PlanList.tsx | 4 +-- .../plans/UpdatePlanDialog/UpdatePlanForm.tsx | 4 +-- .../creator-fi/staking/StakingPanel.tsx | 4 +-- .../creator-fi/subscription-records/page.tsx | 5 ++- app/(creator-fi)/creator-fi/trade/page.tsx | 11 +++++-- app/(creator-fi)/hooks/useContributors.ts | 4 +-- app/(creator-fi)/hooks/useHolders.ts | 4 +-- app/(creator-fi)/hooks/useMembers.ts | 4 +-- app/(creator-fi)/hooks/usePlans.ts | 3 +- app/(creator-fi)/hooks/useShareOrders.ts | 4 +-- app/(creator-fi)/hooks/useSpace.ts | 1 - .../hooks/useSubscriptionRecords.ts | 4 +-- app/(creator-fi)/hooks/useSubscriptions.ts | 3 +- app/(creator-fi)/hooks/useTokenBalance.ts | 4 +-- app/(creator-fi)/hooks/useTrades.ts | 4 +-- app/(creator-fi)/hooks/useVestings.ts | 3 +- app/(creator-fi)/layout.tsx | 26 ++++++++++----- components/PostActions/PostActions.tsx | 2 +- .../PostActions/TipToken/TipTokenDialog.tsx | 12 +++++-- components/PostActions/TippedAmount.tsx | 32 +++++++++++++++++-- components/SpaceContext.tsx | 26 +++++++++++++++ components/ui/dialog.tsx | 2 +- hooks/useTipStats.ts | 4 +-- lib/fetchers.ts | 20 +++++++++++- next.config.js | 2 +- 47 files changed, 213 insertions(+), 136 deletions(-) create mode 100644 components/SpaceContext.tsx diff --git a/app/(blog)/wallet/page.tsx b/app/(blog)/wallet/page.tsx index 607661fa..b19f97ff 100644 --- a/app/(blog)/wallet/page.tsx +++ b/app/(blog)/wallet/page.tsx @@ -5,7 +5,7 @@ export const revalidate = 3600 * 24 export default async function Page() { return ( -
+
) diff --git a/app/(creator-fi)/CreatorFiLayout.tsx b/app/(creator-fi)/CreatorFiLayout.tsx index b7e91e46..13d9f468 100644 --- a/app/(creator-fi)/CreatorFiLayout.tsx +++ b/app/(creator-fi)/CreatorFiLayout.tsx @@ -3,18 +3,18 @@ import { PropsWithChildren, Suspense } from 'react' import { useQueryEthBalance } from '@/app/(creator-fi)/hooks/useEthBalance' import { useQueryEthPrice } from '@/app/(creator-fi)/hooks/useEthPrice' -import { useQuerySpace, useSpace } from '@/app/(creator-fi)/hooks/useSpace' import { ClientOnly } from '@/components/ClientOnly' import LoadingCircle from '@/components/icons/loading-circle' import { Profile } from '@/components/Profile/Profile' +import { SpaceType } from '@/lib/types' import Link from 'next/link' import { SpaceBasicInfo } from './Space/SpaceBasicInfo' import { SpaceNav } from './Space/SpaceNav' interface HeaderProps { - isLoading: boolean + space: SpaceType } -function Header({ isLoading }: HeaderProps) { +function Header({ space }: HeaderProps) { return (
@@ -36,10 +36,9 @@ function Header({ isLoading }: HeaderProps) { > - {isLoading &&
Loading..
} - {!isLoading && } +
- +
@@ -47,26 +46,17 @@ function Header({ isLoading }: HeaderProps) { ) } -export function CreatorFiLayout({ children }: PropsWithChildren) { +interface Props { + space: SpaceType +} + +export function CreatorFiLayout({ children, space }: PropsWithChildren) { useQueryEthPrice() useQueryEthBalance() - useQuerySpace() - const { space } = useSpace() - - if (!space?.address) { - return ( - <> -
-
- -
- - ) - } return ( <> -
+
{children} ) diff --git a/app/(creator-fi)/Space/HolderList.tsx b/app/(creator-fi)/Space/HolderList.tsx index c449ccea..e440e0c4 100644 --- a/app/(creator-fi)/Space/HolderList.tsx +++ b/app/(creator-fi)/Space/HolderList.tsx @@ -1,16 +1,16 @@ 'use client' +import { useHolders } from '@/app/(creator-fi)/hooks/useHolders' +import { useSpaceContext } from '@/components/SpaceContext' import { Skeleton } from '@/components/ui/skeleton' import { UserAvatar } from '@/components/UserAvatar' -import { useHolders } from '@/app/(creator-fi)/hooks/useHolders' -import { useSpace } from '@/app/(creator-fi)/hooks/useSpace' import { precision } from '@/lib/math' import { cn, shortenAddress } from '@/lib/utils' interface Props {} export function HolderList({}: Props) { - const { space } = useSpace() + const space = useSpaceContext() const { holders, isLoading } = useHolders() if (isLoading) { @@ -38,7 +38,9 @@ export function HolderList({}: Props) {
{shortenAddress(item.account)}
- {precision.toDecimal(item.balance).toFixed(2)} + + {precision.toDecimal(item.balance).toFixed(2)} + {space.symbolName}
diff --git a/app/(creator-fi)/Space/SpaceAddress.tsx b/app/(creator-fi)/Space/SpaceAddress.tsx index 914b55a5..7be73e61 100644 --- a/app/(creator-fi)/Space/SpaceAddress.tsx +++ b/app/(creator-fi)/Space/SpaceAddress.tsx @@ -2,12 +2,12 @@ import { Badge } from '@/components/ui/badge' import { useCopyToClipboard } from '@/app/(creator-fi)/hooks/useCopyToClipboard' -import { useSpace } from '@/app/(creator-fi)/hooks/useSpace' import { Copy } from 'lucide-react' import { toast } from 'sonner' +import { useSpaceContext } from '@/components/SpaceContext' export function SpaceAddress() { - const { space } = useSpace() + const space = useSpaceContext() const { address = '' } = space const { copy } = useCopyToClipboard() return ( diff --git a/app/(creator-fi)/Space/SpaceBasicInfo.tsx b/app/(creator-fi)/Space/SpaceBasicInfo.tsx index 0eef18f8..0761fee7 100644 --- a/app/(creator-fi)/Space/SpaceBasicInfo.tsx +++ b/app/(creator-fi)/Space/SpaceBasicInfo.tsx @@ -1,33 +1,27 @@ 'use client' -import { useAddress } from '@/app/(creator-fi)/hooks/useAddress' -import { useSpace } from '@/app/(creator-fi)/hooks/useSpace' import { Button } from '@/components/ui/button' -import { getSpaceId } from '@/lib/getSpaceId' +import { SpaceType } from '@/lib/types' +import { getUrl } from '@/lib/utils' -interface Props {} - -export function SpaceBasicInfo({}: Props) { - const address = useAddress() - const { space } = useSpace() - const spaceId = getSpaceId() +interface Props { + space: SpaceType +} +export function SpaceBasicInfo({ space }: Props) { return (
{space.name
{space.name}
{/* */}
-
+
Buy
{address ? (