diff --git a/src/components/site/PostFooter.tsx b/src/components/site/PostFooter.tsx index 5a6452ae..9886bfa6 100644 --- a/src/components/site/PostFooter.tsx +++ b/src/components/site/PostFooter.tsx @@ -20,6 +20,8 @@ import { DuplicateIcon } from "@heroicons/react/solid" import { Comment } from "~/components/common/Comment" import { UniLink } from "~/components/ui/UniLink" import { Modal } from "~/components/ui/Modal" +import { Avatar } from "../ui/Avatar" +import { BlockchainIcon } from "~/components/icons/BlockchainIcon" export const PostFooter: React.FC<{ page?: Note @@ -36,22 +38,8 @@ export const PostFooter: React.FC<{ const router = useRouter() let [isLikeOpen, setIsLikeOpen] = useState(false) let [isMintOpen, setIsMintOpen] = useState(false) - - function closeLikeModal() { - setIsLikeOpen(false) - } - - function openLikeModal() { - setIsLikeOpen(true) - } - - function closeMintModal() { - setIsMintOpen(false) - } - - function openMintModal() { - setIsMintOpen(true) - } + let [isLikeListOpen, setIsLikeListOpen] = useState(false) + let [isMintListOpen, setIsMintListOpen] = useState(false) const likes = useGetLikes({ pageId: page?.id, @@ -77,7 +65,7 @@ export const PostFooter: React.FC<{ router.push(`${SITE_URL}/dashboard/new-site`) } else if (page?.id) { if (isLike.data?.count) { - openLikeModal() + setIsLikeOpen(true) } else { likePage.mutate({ address, @@ -95,7 +83,7 @@ export const PostFooter: React.FC<{ router.push(`${SITE_URL}/dashboard/new-site`) } else if (page?.id) { if (isMint.data?.count) { - openMintModal() + setIsMintOpen(true) } else { mintPage.mutate({ address, @@ -155,10 +143,10 @@ export const PostFooter: React.FC<{ return ( <> -
+
+ +
@@ -200,14 +232,14 @@ export const PostFooter: React.FC<{
-
@@ -221,11 +253,93 @@ export const PostFooter: React.FC<{
-
+ +
    + {likes.data?.list?.map((like: any, index) => ( +
  • + + + {like.fromCharacter?.metadata?.content?.name} + + @{like.fromCharacter?.handle} + + + + + +
  • + ))} +
+
+ +
+
+ +
    + {mints.data?.list?.map((mint: any, index) => ( +
  • + + + {mint.character?.metadata?.content?.name} + + @{mint.character?.handle} + + + + + +
  • + ))} +
+
+ +
+
diff --git a/src/components/ui/Avatar.tsx b/src/components/ui/Avatar.tsx index 03a1c453..72ad4d21 100644 --- a/src/components/ui/Avatar.tsx +++ b/src/components/ui/Avatar.tsx @@ -21,7 +21,8 @@ export const Avatar: React.FC< const image = useMemo(() => { for (const image of images) { - if (image) return image + if (image) + return image.replace("ipfs://", "https://gateway.ipfs.io/ipfs/") } }, [images]) @@ -51,7 +52,7 @@ export const Avatar: React.FC< {/* eslint-disable-next-line @next/next/no-img-element */} - {name + {name ) } diff --git a/src/models/page.model.ts b/src/models/page.model.ts index 6e1774df..c9899963 100644 --- a/src/models/page.model.ts +++ b/src/models/page.model.ts @@ -342,7 +342,6 @@ export async function getLikes({ pageId }: { pageId: string }) { pageId.split("-")[1], { linkType: "like", - limit: 0, }, ) } @@ -381,13 +380,19 @@ export async function mintPage({ } export async function getMints({ pageId }: { pageId: string }) { - return indexer.getMintedNotesOfNote( + const data = await indexer.getMintedNotesOfNote( pageId.split("-")[0], pageId.split("-")[1], - { - limit: 0, - }, ) + + await Promise.all( + data.list.map(async (item: any) => { + const owner = item.owner + item.character = await indexer.getPrimaryCharacter(owner) + }), + ) + + return data } export async function checkMint({ diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 5a3404cc..ea495783 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -77,7 +77,7 @@ export default function Home({ region }: { region: string | null }) { }, icon: , title: "Rich Interactions", - text: "Users can follow, comment, like, and collect your blog and posts, all on the blockchain of course.", + text: "Users can follow, comment, like, and mint your blog and posts, all on the blockchain of course.", }, { screenshot: { @@ -105,9 +105,8 @@ export default function Home({ region }: { region: string | null }) { "Only Controlled by Yourself", "Open Source", "Self-hosting", - "Like Interaction", - "Comment Interaction", - "Following Interaction", + "Like Posts", + "Comment Posts", "Custom Domain", "Custom CSS", "Navigation",