(false)
const userSite = useGetUserSites(address)
const router = useRouter()
+ let [isFollowListOpen, setIsFollowListOpen] = useState(false)
const handleClickSubscribe = async () => {
if (!address) {
@@ -90,6 +93,11 @@ export const SiteHeader: React.FC<{
siteId: site?.username || "",
})
+ const siteSubscriptions = useGetSiteSubscriptions({
+ siteId: site?.username || "",
+ })
+ console.log(siteSubscriptions.data)
+
useEffect(() => {
if (
followProgress &&
@@ -175,6 +183,19 @@ export const SiteHeader: React.FC<{
{site?.bio}
)}
+ {siteSubscriptions.data ? (
+ setIsFollowListOpen(true)}
+ >
+
+ {siteSubscriptions.data.total}
+ {" "}
+ Followers
+
+ ) : (
+ ""
+ )}
{subscription.data ? (
+
+
+ {siteSubscriptions.data?.list?.map((sub: any, index) => (
+ -
+
+
+ {sub.character?.metadata?.content?.name}
+
+ @{sub.character?.handle}
+
+
+
+
+
+
+ ))}
+
+
+
+
+
)
}
diff --git a/src/models/site.model.ts b/src/models/site.model.ts
index 3995033d..c9746542 100644
--- a/src/models/site.model.ts
+++ b/src/models/site.model.ts
@@ -2,6 +2,7 @@ import { SiteNavigationItem, Profile } from "~/lib/types"
import { nanoid } from "nanoid"
import { checkReservedWords } from "~/lib/reserved-words"
import unidata from "~/lib/unidata"
+import { indexer, getContract } from "~/lib/crossbell"
export const checkSubdomain = async ({
subdomain,
@@ -113,6 +114,23 @@ export const getSubscription = async (data: {
return !!links?.list?.length
}
+export const getSiteSubscriptions = async (data: { siteId: string }) => {
+ const links = await unidata.links.get({
+ source: "Crossbell Link",
+ identity: data.siteId,
+ platform: "Crossbell",
+ reversed: true,
+ })
+
+ await Promise.all(
+ links?.list.map(async (item: any) => {
+ const owner = item.from
+ item.character = await indexer.getCharacterByHandle(owner)
+ }) || [],
+ )
+ return links
+}
+
export async function updateSite(payload: {
site: string
name?: string
diff --git a/src/queries/site.ts b/src/queries/site.ts
index a88aa210..4aed9472 100644
--- a/src/queries/site.ts
+++ b/src/queries/site.ts
@@ -29,6 +29,15 @@ export const useGetSubscription = (data: {
})
}
+export const useGetSiteSubscriptions = (data: { siteId: string }) => {
+ return useQuery(["getSiteSubscriptions", data], async () => {
+ if (!data.siteId) {
+ return null
+ }
+ return siteModel.getSiteSubscriptions(data)
+ })
+}
+
export function useUpdateSite() {
const queryClient = useQueryClient()
const mutation = useMutation(