From c55ed072b84778729691c2a036ed2b5e823abb93 Mon Sep 17 00:00:00 2001 From: name Date: Mon, 23 Dec 2024 15:07:37 +0300 Subject: [PATCH 01/17] removing mp4 in upload format --- packages/frontend/components/UploadForm/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend/components/UploadForm/index.tsx b/packages/frontend/components/UploadForm/index.tsx index da59339..4e71a57 100644 --- a/packages/frontend/components/UploadForm/index.tsx +++ b/packages/frontend/components/UploadForm/index.tsx @@ -261,7 +261,6 @@ const UploadForm = () => { MIME_TYPES.webp, MIME_TYPES.svg, MIME_TYPES.gif, - MIME_TYPES.mp4, ]} > {() => dropzoneChildren(image)} From 1540e920c6c4542b1b3fd9cc1114a9e78c2dd7c5 Mon Sep 17 00:00:00 2001 From: name Date: Thu, 2 Jan 2025 16:12:36 +0700 Subject: [PATCH 02/17] improving upload page, static page for posts and index --- .../frontend/components/Post/DisplayMedia.tsx | 1 + .../frontend/components/Posts/PostCard.tsx | 8 +- .../frontend/components/UploadForm/index.tsx | 124 ++++++++++-------- packages/frontend/hooks/api/posts/index.ts | 5 +- packages/frontend/package.json | 1 - .../pages/api/metis/pages/[number].tsx | 6 +- packages/frontend/pages/index.tsx | 93 ++++++------- packages/frontend/pages/post/[id].tsx | 86 ++++++++++-- packages/frontend/yarn.lock | 25 +--- 9 files changed, 206 insertions(+), 143 deletions(-) diff --git a/packages/frontend/components/Post/DisplayMedia.tsx b/packages/frontend/components/Post/DisplayMedia.tsx index ec025c7..07f4b36 100644 --- a/packages/frontend/components/Post/DisplayMedia.tsx +++ b/packages/frontend/components/Post/DisplayMedia.tsx @@ -47,6 +47,7 @@ const DisplayMedia: React.FC = ({ post }) => { width={width} src={post.image} alt={post.name} + loading="lazy" style={{ height: "95%", borderRadius: "10px", diff --git a/packages/frontend/components/Posts/PostCard.tsx b/packages/frontend/components/Posts/PostCard.tsx index 88edb38..6fff322 100644 --- a/packages/frontend/components/Posts/PostCard.tsx +++ b/packages/frontend/components/Posts/PostCard.tsx @@ -4,8 +4,14 @@ import Link from "next/link"; import type { Post } from "@/services/upload"; +type PostReduced = { + image: string; + name: string; + tokenId: number; +}; + interface IMyProps { - post: Post; + post: PostReduced; } const PostCard: React.FC = ({ post }) => { diff --git a/packages/frontend/components/UploadForm/index.tsx b/packages/frontend/components/UploadForm/index.tsx index 4e71a57..8045eae 100644 --- a/packages/frontend/components/UploadForm/index.tsx +++ b/packages/frontend/components/UploadForm/index.tsx @@ -3,7 +3,6 @@ import { Paper, Title, TextInput, - Textarea, Group, Button, Image, @@ -13,7 +12,6 @@ import { } from "@mantine/core"; import { Dropzone, MIME_TYPES } from "@mantine/dropzone"; import { useState, useEffect } from "react"; -import ReactPlayer from "react-player"; import { Upload, Replace } from "tabler-icons-react"; import { useAccount, @@ -29,24 +27,21 @@ import { getContractInfo } from "@/utils/contracts"; export const dropzoneChildren = (image: File | undefined) => { if (image) { - let link = URL.createObjectURL(image); + let link: string = URL.createObjectURL(image); return ( - {image.type[0] === "i" ? ( - uploaded image - ) : ( - - )} + uploaded image + { const { address: senderAddress } = useAccount(); const { address: contractAddress, abi } = getContractInfo(); - const { data: hash, writeContract: writeMintPost } = useWriteContract(); + const { + data: hash, + writeContract: writeMintPost, + status, + } = useWriteContract(); const [name, setName] = useState(""); const [description, setDescription] = useState(""); @@ -98,17 +97,14 @@ const UploadForm = () => { const [postReceiver, setPostReceiver] = useState<`0x${string}` | undefined>( senderAddress ); - - const [isPostUpdated, setIsPostUpdated] = useState(false); - const [isPostLoading, setIsPostLoading] = useState(false); - - const [cid, setCid] = useState(""); - + const [ensName, setEnsName] = useState(""); const [provider, setProvider] = useState<"Pinata">("Pinata"); - const [lastHash, setLastHash] = useState(""); + const [isPostReady, setIsPostReady] = useState(false); + const [isPostLoading, setIsPostLoading] = useState(false); - const [ensName, setEnsName] = useState(""); + const [cid, setCID] = useState(""); + const [lastHash, setLastHash] = useState(); const config = createConfig({ chains: [mainnet], @@ -129,6 +125,7 @@ const UploadForm = () => { image?: File ) { if (description !== "" && name !== "" && image && postReceiver) { + setIsPostLoading(true); const cid: string | undefined = await UploadData({ data: { name: name, description: description, image: image }, provider: provider, @@ -138,13 +135,12 @@ const UploadForm = () => { throw new Error("no cid"); } - setCid(cid); + setCID(cid); + setIsPostReady(true); setImage(undefined); setName(""); setDescription(""); - - setIsPostLoading(true); } } @@ -160,14 +156,9 @@ const UploadForm = () => { setPostReceiver(receiverAddress); } - if (isPostLoading) { - setIsPostUpdated(true); - console.log("Updated response:" + cid); - } - - if (hash && hash !== lastHash && isPostUpdated) { + if (hash && hash !== lastHash && isPostReady) { setLastHash(hash); - setIsPostUpdated(false); + setIsPostReady(false); setIsPostLoading(false); } }, [ @@ -176,10 +167,11 @@ const UploadForm = () => { receiverAddress, lastHash, cid, - isPostUpdated, + isPostReady, senderAddress, ensName, hash, + fetchedAccount, ]); return ( @@ -214,7 +206,7 @@ const UploadForm = () => { )} - {!isPostUpdated ? ( + {!isPostLoading ? (
{ value={name} onChange={(e) => setName(e.target.value)} /> -