From 108cbc7e4d05f789c2f8ba63dc14166037092aa0 Mon Sep 17 00:00:00 2001 From: Afo Date: Sat, 30 Nov 2024 21:11:29 -0800 Subject: [PATCH] Fixed these bugs [BUG] - Zerion #79 [BUG] - Farcaster Login #80 [BUG] - Farcaster Wallet adress #81 [BUG] Farcaster ID #82 [BUG] Endorsements - Symbols Limit #83 [BUG] Endorsement Not In Local Time #84 [BUG] Endorsements submitting appearance (API) #85 [BUG] Long Project name & Description (2 bugs) #86 [BUG] UI/UX on Endorsements page #87 [BUG] Character limit to high for endorsements #88 [BUG] Last endorsement time wrong at times #89 [BUG] Endorsement EAS Link #90 [BUG] Too many pages for pagination. #91 --- packages/client/src/app/projects/page.tsx | 2 +- .../components/Project/Attest/Endorsement.tsx | 2 +- .../src/components/Project/Attest/index.tsx | 2 +- .../src/components/Project/Endorsements.tsx | 2 +- .../src/components/Project/Overview.tsx | 2 +- packages/client/src/hooks/useEndorsements.ts | 6 +-- packages/client/src/utils/text.ts | 44 ++++++++++++------- .../client/src/views/Profile/Endorsements.tsx | 10 +++-- .../client/src/views/Profile/Settings.tsx | 8 ---- 9 files changed, 42 insertions(+), 36 deletions(-) diff --git a/packages/client/src/app/projects/page.tsx b/packages/client/src/app/projects/page.tsx index cda15eb..49ca4e9 100644 --- a/packages/client/src/app/projects/page.tsx +++ b/packages/client/src/app/projects/page.tsx @@ -13,7 +13,7 @@ const ProjectsPage: NextPage = async ({ }) => { const query = searchParams?.query || ""; const currentPage = Number(searchParams?.page) || 1; - const totalPages = 5; + const totalPages = 4; return ( diff --git a/packages/client/src/components/Project/Attest/Endorsement.tsx b/packages/client/src/components/Project/Attest/Endorsement.tsx index 1d7538c..241cbf6 100644 --- a/packages/client/src/components/Project/Attest/Endorsement.tsx +++ b/packages/client/src/components/Project/Attest/Endorsement.tsx @@ -34,7 +34,7 @@ export const ProjectAttestEndorsement = forwardRef< ref={ref} {...props} /> -

500 Characters Max

+

250 Characters Max

); }); diff --git a/packages/client/src/components/Project/Attest/index.tsx b/packages/client/src/components/Project/Attest/index.tsx index bb094f7..62c0531 100644 --- a/packages/client/src/components/Project/Attest/index.tsx +++ b/packages/client/src/components/Project/Attest/index.tsx @@ -32,7 +32,7 @@ function generateSchema(projectCreator: boolean) { .nullish(), }) : z.object({ - endorsement: z.string().min(100).max(1000), + endorsement: z.string().min(100).max(250), metrics: z .array( z.object({ diff --git a/packages/client/src/components/Project/Endorsements.tsx b/packages/client/src/components/Project/Endorsements.tsx index 408e24a..812df19 100644 --- a/packages/client/src/components/Project/Endorsements.tsx +++ b/packages/client/src/components/Project/Endorsements.tsx @@ -27,7 +27,7 @@ export const ProjectEndorsementCard: React.FC = ({

by {formatAddress(endorsement.attester)}

- {endorsement.created_at} + {new Date(endorsement.created_at).toLocaleString()} ); diff --git a/packages/client/src/components/Project/Overview.tsx b/packages/client/src/components/Project/Overview.tsx index acbe1a9..6e0b052 100644 --- a/packages/client/src/components/Project/Overview.tsx +++ b/packages/client/src/components/Project/Overview.tsx @@ -55,7 +55,7 @@ export const ProjectOverview: React.FC = ({ height={120} />
-

{title}

+

{title}

{description}

diff --git a/packages/client/src/hooks/useEndorsements.ts b/packages/client/src/hooks/useEndorsements.ts index 3519765..84eafe5 100644 --- a/packages/client/src/hooks/useEndorsements.ts +++ b/packages/client/src/hooks/useEndorsements.ts @@ -27,8 +27,8 @@ export const useEndorsements = (projectUID: string) => { const { data, refetch } = useQuery({ queryKey: ["endorsements", projectUID], queryFn: () => getProjectEndorsements(projectUID), - staleTime: 30000, - refetchInterval: 120000, + // staleTime: 30000, + refetchInterval: 4000, }); const createEndorsement = async (params: CreateEndorsementParams) => { @@ -64,7 +64,7 @@ export const useEndorsements = (projectUID: string) => { const newAttestationUID = await transaction.wait(); - await delay(2700); + await delay(3200); await refetch(); toast.dismiss(); diff --git a/packages/client/src/utils/text.ts b/packages/client/src/utils/text.ts index 49e2484..53dd0c4 100644 --- a/packages/client/src/utils/text.ts +++ b/packages/client/src/utils/text.ts @@ -18,30 +18,42 @@ export function formatPrice( } export function formatLastUpdated(updatedAt: string) { + const msPerSecond = 1000; + const msPerMinute = 60 * msPerSecond; + const msPerHour = 60 * msPerMinute; + const msPerDay = 24 * msPerHour; + const msPerMonth = 30 * msPerDay; + const msPerYear = 12 * msPerMonth; + const updatedDate = new Date(updatedAt).getTime(); const now = new Date().getTime(); + const differenceInMs = now - updatedDate; + + if (differenceInMs < msPerSecond) { + return "just now"; + } + + if (differenceInMs < msPerMinute) { + return `${Math.floor(differenceInMs / msPerSecond)} seconds ago`; + } - console.log("updatedDate", updatedDate, now); + if (differenceInMs < msPerHour) { + return `${Math.floor(differenceInMs / msPerMinute)} minutes ago`; + } - const differenceInSeconds = Math.floor((now - updatedDate) / 1000); + if (differenceInMs < msPerDay) { + return `${Math.floor(differenceInMs / msPerHour)} hours ago`; + } - const intervals = [ - { label: "year", seconds: 31536000 }, - { label: "month", seconds: 2592000 }, - { label: "day", seconds: 86400 }, - { label: "hour", seconds: 3600 }, - { label: "minute", seconds: 60 }, - { label: "second", seconds: 1 }, - ]; + if (differenceInMs < msPerMonth) { + return `${Math.floor(differenceInMs / msPerDay)} days ago`; + } - for (const interval of intervals) { - const count = Math.floor(differenceInSeconds / interval.seconds); - if (count !== 0) { - return `${count} ${interval.label}${count !== 1 ? "s" : ""} ago`; - } + if (differenceInMs < msPerYear) { + return `${Math.floor(differenceInMs / msPerMonth)} months ago`; } - return "just now"; + return `${Math.floor(differenceInMs / msPerYear)} years ago`; } export function determineSocialMedia(link: string | null) { diff --git a/packages/client/src/views/Profile/Endorsements.tsx b/packages/client/src/views/Profile/Endorsements.tsx index 1198d3b..89a6d28 100644 --- a/packages/client/src/views/Profile/Endorsements.tsx +++ b/packages/client/src/views/Profile/Endorsements.tsx @@ -26,19 +26,21 @@ const ProfileEndorsementsView: React.FC = () => { return (
{endorsements?.length ? ( -
    +
      {endorsements.map((endorsement) => (
    • {endorsement.description}

      - {endorsement.created_at} + + {new Date(endorsement.created_at).toLocaleString()} + diff --git a/packages/client/src/views/Profile/Settings.tsx b/packages/client/src/views/Profile/Settings.tsx index ee7d0db..d3aebe3 100644 --- a/packages/client/src/views/Profile/Settings.tsx +++ b/packages/client/src/views/Profile/Settings.tsx @@ -35,14 +35,6 @@ const ProfileSettings: React.FC = ({ user }) => {

      {address ? formatAddress(address) : ""}
      -
      -

      Farcaster ID

      -

      - Recommended for project builders to claim ownership to enable - self-claim impact attestation. -

      - {walletInfo?.name ?? ""} -
      {address && (