diff --git a/app/(creator-fi)/creator-fi/members/page.tsx b/app/(creator-fi)/creator-fi/members/page.tsx
index 19ebef54..d7d49915 100644
--- a/app/(creator-fi)/creator-fi/members/page.tsx
+++ b/app/(creator-fi)/creator-fi/members/page.tsx
@@ -1,14 +1,12 @@
'use client'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
+import { useSpaceContext } from '../../../../components/SpaceContext'
import { MemberList } from '../../Space/MemberList'
export const dynamic = 'force-static'
// export const revalidate = 3600 * 24
export default function Page() {
- const { space } = useSpace()
-
- if (!space) return null
+ const space = useSpaceContext()
return
}
diff --git a/app/(creator-fi)/creator-fi/page.tsx b/app/(creator-fi)/creator-fi/page.tsx
index 562b2e98..feab4d5a 100644
--- a/app/(creator-fi)/creator-fi/page.tsx
+++ b/app/(creator-fi)/creator-fi/page.tsx
@@ -1,12 +1,12 @@
'use client'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
import { PlateEditor } from '@/components/editor/plate-editor'
+import { useSpaceContext } from '@/components/SpaceContext'
export const dynamic = 'force-static'
export default function Page() {
- const { space } = useSpace()
+ const space = useSpaceContext()
return
}
diff --git a/app/(creator-fi)/creator-fi/plans/AddPlanDialog/AddPlanForm.tsx b/app/(creator-fi)/creator-fi/plans/AddPlanDialog/AddPlanForm.tsx
index 9d984294..e7bab384 100644
--- a/app/(creator-fi)/creator-fi/plans/AddPlanDialog/AddPlanForm.tsx
+++ b/app/(creator-fi)/creator-fi/plans/AddPlanDialog/AddPlanForm.tsx
@@ -5,8 +5,8 @@ import { useForm } from 'react-hook-form'
import { NumberInput } from '@/app/(creator-fi)/components/NumberInput'
import { editorDefaultValue } from '@/app/(creator-fi)/constants'
import { useEthPrice } from '@/app/(creator-fi)/hooks/useEthPrice'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
import LoadingDots from '@/components/icons/loading-dots'
+import { useSpaceContext } from '@/components/SpaceContext'
import { Button } from '@/components/ui/button'
import {
Form,
@@ -38,7 +38,7 @@ const FormSchema = z.object({
export function AddPlanForm() {
const [isLoading, setLoading] = useState(false)
const { setIsOpen } = useAddPlanDialog()
- const { space } = useSpace()
+ const space = useSpaceContext()
const { ethPrice } = useEthPrice()
const wagmiConfig = useWagmiConfig()
const checkChain = useCheckChain()
diff --git a/app/(creator-fi)/creator-fi/plans/PlanItem.tsx b/app/(creator-fi)/creator-fi/plans/PlanItem.tsx
index 520888da..5820dd5f 100644
--- a/app/(creator-fi)/creator-fi/plans/PlanItem.tsx
+++ b/app/(creator-fi)/creator-fi/plans/PlanItem.tsx
@@ -5,9 +5,9 @@ import { Plan } from '@/app/(creator-fi)/domains/Plan'
import { useAddress } from '@/app/(creator-fi)/hooks/useAddress'
import { useEthPrice } from '@/app/(creator-fi)/hooks/useEthPrice'
import { useMembers } from '@/app/(creator-fi)/hooks/useMembers'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
import { useSubscriptions } from '@/app/(creator-fi)/hooks/useSubscriptions'
import { PlateEditor } from '@/components/editor/plate-editor'
+import { useSpaceContext } from '@/components/SpaceContext'
import { Button } from '@/components/ui/button'
import { Card } from '@/components/ui/card'
import { useConnectModal } from '@rainbow-me/rainbowkit'
@@ -23,7 +23,7 @@ export function PlanItem({ plan }: Props) {
const address = useAddress()
const { ethPrice } = useEthPrice()
const { setState } = useUpdatePlanDialog()
- const { space } = useSpace()
+ const space = useSpaceContext()
const { isConnected } = useAccount()
const { openConnectModal } = useConnectModal()
const { subscriptions } = useSubscriptions()
diff --git a/app/(creator-fi)/creator-fi/plans/PlanList.tsx b/app/(creator-fi)/creator-fi/plans/PlanList.tsx
index 40d572e0..6fd4c6ad 100644
--- a/app/(creator-fi)/creator-fi/plans/PlanList.tsx
+++ b/app/(creator-fi)/creator-fi/plans/PlanList.tsx
@@ -3,7 +3,7 @@
import { MemberDialog } from '@/app/(creator-fi)/components/MemberDialog/MemberDialog'
import { useAddress } from '@/app/(creator-fi)/hooks/useAddress'
import { usePlans } from '@/app/(creator-fi)/hooks/usePlans'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
+import { useSpaceContext } from '@/components/SpaceContext'
import { AddPlanDialog } from './AddPlanDialog/AddPlanDialog'
import { PlanItem } from './PlanItem'
import { UpdatePlanDialog } from './UpdatePlanDialog/UpdatePlanDialog'
@@ -12,7 +12,7 @@ interface Props {}
export function PlanList({}: Props) {
const { plans, isLoading } = usePlans()
- const { space } = useSpace()
+ const space = useSpaceContext()
const address = useAddress()
if (isLoading) return
Loading...
diff --git a/app/(creator-fi)/creator-fi/plans/UpdatePlanDialog/UpdatePlanForm.tsx b/app/(creator-fi)/creator-fi/plans/UpdatePlanDialog/UpdatePlanForm.tsx
index ae41a0cd..6665fcd3 100644
--- a/app/(creator-fi)/creator-fi/plans/UpdatePlanDialog/UpdatePlanForm.tsx
+++ b/app/(creator-fi)/creator-fi/plans/UpdatePlanDialog/UpdatePlanForm.tsx
@@ -6,9 +6,9 @@ import { NumberInput } from '@/app/(creator-fi)/components/NumberInput'
import { PlanStatus } from '@/app/(creator-fi)/domains/Plan'
import { useEthPrice } from '@/app/(creator-fi)/hooks/useEthPrice'
import { usePlans } from '@/app/(creator-fi)/hooks/usePlans'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
import { PlateEditor } from '@/components/editor/plate-editor'
import LoadingDots from '@/components/icons/loading-dots'
+import { useSpaceContext } from '@/components/SpaceContext'
import { Button } from '@/components/ui/button'
import {
Form,
@@ -44,7 +44,7 @@ export function UpdatePlanForm() {
const [isLoading, setLoading] = useState(false)
const wagmiConfig = useWagmiConfig()
const { setIsOpen } = useUpdatePlanDialog()
- const { space } = useSpace()
+ const space = useSpaceContext()
const { ethPrice } = useEthPrice()
const { plan } = useUpdatePlanDialog()
const { refetch } = usePlans()
diff --git a/app/(creator-fi)/creator-fi/staking/StakingPanel.tsx b/app/(creator-fi)/creator-fi/staking/StakingPanel.tsx
index f1a7f8ca..54236e97 100644
--- a/app/(creator-fi)/creator-fi/staking/StakingPanel.tsx
+++ b/app/(creator-fi)/creator-fi/staking/StakingPanel.tsx
@@ -1,6 +1,6 @@
import { useMemo, useState } from 'react'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
import LoadingDots from '@/components/icons/loading-dots'
+import { useSpaceContext } from '@/components/SpaceContext'
import { Button } from '@/components/ui/button'
import { WalletConnectButton } from '@/components/WalletConnectButton'
import { useCheckChain } from '@/hooks/useCheckChain'
@@ -25,7 +25,7 @@ export const StakingPanel = () => {
const { writeContractAsync } = useWriteContract()
const [tokenAmount, setTokenAmount] = useState
('')
const { data: tokenBalance } = useSpaceTokenBalance()
- const { space } = useSpace()
+ const space = useSpaceContext()
const { isConnected } = useAccount()
const wagmiConfig = useWagmiConfig()
const checkChain = useCheckChain()
diff --git a/app/(creator-fi)/creator-fi/subscription-records/page.tsx b/app/(creator-fi)/creator-fi/subscription-records/page.tsx
index f8971f45..0bf9553f 100644
--- a/app/(creator-fi)/creator-fi/subscription-records/page.tsx
+++ b/app/(creator-fi)/creator-fi/subscription-records/page.tsx
@@ -1,12 +1,11 @@
'use client'
-import { useSpace } from '@/app/(creator-fi)/hooks/useSpace'
+import { useSpaceContext } from '@/components/SpaceContext'
import { SubscriptionRecordList } from '../../Space/SubscriptionRecordList'
export const dynamic = 'force-static'
export default function Page() {
- const { space } = useSpace()
- if (!space) return
+ const space = useSpaceContext()
return
}
diff --git a/app/(creator-fi)/creator-fi/trade/page.tsx b/app/(creator-fi)/creator-fi/trade/page.tsx
index afe5be27..6b3be8a6 100644
--- a/app/(creator-fi)/creator-fi/trade/page.tsx
+++ b/app/(creator-fi)/creator-fi/trade/page.tsx
@@ -1,13 +1,20 @@
+import { getSite, getSpace } from '@/lib/fetchers'
import { Transaction } from '../../Space/Transaction'
export const dynamic = 'force-static'
export const revalidate = 3600 * 24
-export default function Page() {
+export default async function Page() {
+ const site = await getSite()
+ if (!site?.spaceId) return null
+ const space = await getSpace(site.spaceId)
+
return (
-
Trade token
+
+ Trade ${space.symbol} token
+
diff --git a/app/(creator-fi)/hooks/useContributors.ts b/app/(creator-fi)/hooks/useContributors.ts
index 83e88ca6..663e32f5 100644
--- a/app/(creator-fi)/hooks/useContributors.ts
+++ b/app/(creator-fi)/hooks/useContributors.ts
@@ -1,10 +1,10 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
-import { useSpace } from './useSpace'
export function useContributors() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const { data: contributors = [], ...rest } = useReadContract({
address: space.address as Address,
abi: spaceAbi,
diff --git a/app/(creator-fi)/hooks/useHolders.ts b/app/(creator-fi)/hooks/useHolders.ts
index 70949ad2..fadb82de 100644
--- a/app/(creator-fi)/hooks/useHolders.ts
+++ b/app/(creator-fi)/hooks/useHolders.ts
@@ -1,11 +1,11 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { RESPACE_SUBGRAPH_URL } from '@/lib/constants'
import { Holder } from '@/lib/types'
import { useQuery } from '@tanstack/react-query'
import { gql, request } from 'graphql-request'
-import { useSpace } from './useSpace'
export function useHolders() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const query = gql`
query getHolders($spaceAddress: String!) {
diff --git a/app/(creator-fi)/hooks/useMembers.ts b/app/(creator-fi)/hooks/useMembers.ts
index 0ca302b7..9e118489 100644
--- a/app/(creator-fi)/hooks/useMembers.ts
+++ b/app/(creator-fi)/hooks/useMembers.ts
@@ -1,10 +1,10 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
-import { useSpace } from './useSpace'
export function useMembers() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const { data: members = [], ...rest } = useReadContract({
address: space.address as Address,
abi: spaceAbi,
diff --git a/app/(creator-fi)/hooks/usePlans.ts b/app/(creator-fi)/hooks/usePlans.ts
index 635b40fb..34310185 100644
--- a/app/(creator-fi)/hooks/usePlans.ts
+++ b/app/(creator-fi)/hooks/usePlans.ts
@@ -1,4 +1,5 @@
import { Plan, PlanInfo } from '@/app/(creator-fi)/domains/Plan'
+import { useSpaceContext } from '@/components/SpaceContext'
import { useWagmiConfig } from '@/hooks/useWagmiConfig'
import { spaceAbi } from '@/lib/abi'
import { isIPFSCID } from '@/lib/utils'
@@ -9,7 +10,7 @@ import { IPFS_GATEWAY } from '../constants'
import { useSpace } from './useSpace'
export function usePlans() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const wagmiConfig = useWagmiConfig()
const { data: plans = [], ...rest } = useQuery({
queryKey: ['plans', space.address],
diff --git a/app/(creator-fi)/hooks/useShareOrders.ts b/app/(creator-fi)/hooks/useShareOrders.ts
index 9984c09c..12dde0c2 100644
--- a/app/(creator-fi)/hooks/useShareOrders.ts
+++ b/app/(creator-fi)/hooks/useShareOrders.ts
@@ -1,10 +1,10 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
-import { useSpace } from './useSpace'
export function useShareOrders() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const { data: orders = [], ...rest } = useReadContract({
address: space.address as Address,
abi: spaceAbi,
diff --git a/app/(creator-fi)/hooks/useSpace.ts b/app/(creator-fi)/hooks/useSpace.ts
index e95925c8..78001ab8 100644
--- a/app/(creator-fi)/hooks/useSpace.ts
+++ b/app/(creator-fi)/hooks/useSpace.ts
@@ -20,7 +20,6 @@ export function useSpace() {
export function useQuerySpace() {
const spaceId = getSpaceId()
- console.log('=========spaceId:', spaceId)
const { data, ...rest } = useQuery({
queryKey: ['space'],
diff --git a/app/(creator-fi)/hooks/useSubscriptionRecords.ts b/app/(creator-fi)/hooks/useSubscriptionRecords.ts
index 70fe7f7e..8a69d735 100644
--- a/app/(creator-fi)/hooks/useSubscriptionRecords.ts
+++ b/app/(creator-fi)/hooks/useSubscriptionRecords.ts
@@ -1,11 +1,11 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { RESPACE_SUBGRAPH_URL } from '@/lib/constants'
import { SubscriptionRecord, Trade } from '@/lib/types'
import { useQuery } from '@tanstack/react-query'
import { gql, request } from 'graphql-request'
-import { useSpace } from './useSpace'
export function useSubscriptionRecords() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const query = gql`
query getSubscriptionRecords($spaceAddress: String!) {
diff --git a/app/(creator-fi)/hooks/useSubscriptions.ts b/app/(creator-fi)/hooks/useSubscriptions.ts
index 4c79525a..4c9d9fff 100644
--- a/app/(creator-fi)/hooks/useSubscriptions.ts
+++ b/app/(creator-fi)/hooks/useSubscriptions.ts
@@ -1,11 +1,12 @@
import { Subscription } from '@/app/(creator-fi)/domains/Subscription'
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
import { useSpace } from './useSpace'
export function useSubscriptions() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const { data = [], ...rest } = useReadContract({
address: space.address as Address,
abi: spaceAbi,
diff --git a/app/(creator-fi)/hooks/useTokenBalance.ts b/app/(creator-fi)/hooks/useTokenBalance.ts
index 277492dc..78782b5a 100644
--- a/app/(creator-fi)/hooks/useTokenBalance.ts
+++ b/app/(creator-fi)/hooks/useTokenBalance.ts
@@ -1,15 +1,15 @@
import { EthBalance } from '@/app/(creator-fi)/domains/EthBalance'
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { atom } from 'jotai'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
import { useAddress } from './useAddress'
-import { useSpace } from './useSpace'
export const ethBalanceAtom = atom({} as EthBalance)
export function useTokenBalance() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const address = useAddress()
const res = useReadContract({
address: space.address as Address,
diff --git a/app/(creator-fi)/hooks/useTrades.ts b/app/(creator-fi)/hooks/useTrades.ts
index 8475ea36..427c21ca 100644
--- a/app/(creator-fi)/hooks/useTrades.ts
+++ b/app/(creator-fi)/hooks/useTrades.ts
@@ -1,11 +1,11 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { RESPACE_SUBGRAPH_URL } from '@/lib/constants'
import { Trade } from '@/lib/types'
import { useQuery } from '@tanstack/react-query'
import { gql, request } from 'graphql-request'
-import { useSpace } from './useSpace'
export function useTrades() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const query = gql`
query getTrades($spaceAddress: String!) {
diff --git a/app/(creator-fi)/hooks/useVestings.ts b/app/(creator-fi)/hooks/useVestings.ts
index 539b51bc..4625fc73 100644
--- a/app/(creator-fi)/hooks/useVestings.ts
+++ b/app/(creator-fi)/hooks/useVestings.ts
@@ -1,3 +1,4 @@
+import { useSpaceContext } from '@/components/SpaceContext'
import { spaceAbi } from '@/lib/abi'
import { Address } from 'viem'
import { useReadContract } from 'wagmi'
@@ -13,7 +14,7 @@ export type Vesting = {
}
export function useVestings() {
- const { space } = useSpace()
+ const space = useSpaceContext()
const { data: vestings = [], ...rest } = useReadContract({
address: space.address as Address,
abi: spaceAbi,
diff --git a/app/(creator-fi)/layout.tsx b/app/(creator-fi)/layout.tsx
index 793ca6b0..23343f7c 100644
--- a/app/(creator-fi)/layout.tsx
+++ b/app/(creator-fi)/layout.tsx
@@ -1,17 +1,27 @@
-'use client'
-
+import { getSite, getSpace } from '@/lib/fetchers'
import { StoreProvider } from '@/store'
import { Toaster } from 'sonner'
+import { SpaceProvider } from '../../components/SpaceContext'
import { CreatorFiLayout } from './CreatorFiLayout'
-export default function Layout({ children }: { children: React.ReactNode }) {
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ const site = await getSite()
+ if (!site?.spaceId) return null
+ const space = await getSpace(site.spaceId)
+
return (
-
-
-
- {children}
-
+
+
+
+
+ {children}
+
+
)
}
diff --git a/components/PostActions/PostActions.tsx b/components/PostActions/PostActions.tsx
index 601fdbab..5e37a5dc 100644
--- a/components/PostActions/PostActions.tsx
+++ b/components/PostActions/PostActions.tsx
@@ -25,8 +25,8 @@ export function PostActions({ post, receivers }: Props) {