Skip to content
This repository was archived by the owner on Feb 10, 2025. It is now read-only.

Commit 6891798

Browse files
authored
fix: Update projectsummary (#52)
fix: Update ProjectSummary
1 parent 78e4cba commit 6891798

File tree

6 files changed

+34
-74
lines changed

6 files changed

+34
-74
lines changed

src/components/project/components/ProjectSummary/ProjectSummary.stories.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import type { Meta, StoryObj } from "@storybook/react";
22

3+
import { ProjectApplicationForManager } from "@/features/checker/services/allo";
4+
import { applicationsForManagers } from "@/mocks/mockData/applicationsForManager";
5+
36
import { ProjectSummary } from "./ProjectSummary";
47

58
const meta = {
@@ -25,5 +28,6 @@ export const Default: Story = {
2528
credentials: {},
2629
owners: [],
2730
},
31+
application: applicationsForManagers[0] as unknown as Partial<ProjectApplicationForManager>,
2832
},
2933
};

src/components/project/components/ProjectSummary/ProjectSummary.tsx

+22-6
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,40 @@
11
import * as React from "react";
22

33
import { IconLabel } from "@/components/IconLabel";
4-
import { ProjectMetadata } from "@/features/checker/services/allo";
4+
import { useCredentialverification } from "@/features/checker/hooks";
5+
import { ProjectApplicationForManager, ProjectMetadata } from "@/features/checker/services/allo";
6+
import { isVerified } from "@/lib/passport/credentialVerification";
57
import { IconType } from "@/primitives/Icon";
68

79
export interface ProjectSummaryProps {
810
projectMetadata: ProjectMetadata;
11+
application: Partial<ProjectApplicationForManager>;
912
}
1013

11-
export const ProjectSummary: React.FC<ProjectSummaryProps> = ({ projectMetadata }) => {
12-
const { recipient, createdAt, website, lastUpdated, projectTwitter, projectGithub } =
13-
projectMetadata;
14+
export const ProjectSummary: React.FC<ProjectSummaryProps> = ({ projectMetadata, application }) => {
15+
const { createdAt, website, lastUpdated, projectTwitter, projectGithub } = projectMetadata;
16+
17+
const recipient = application.metadata?.application.recipient;
1418

1519
const appliedOnLabel = `Applied on: ${new Date(createdAt).toLocaleString()}`;
1620
const lastEditedLabel = `Last edited: ${new Date(
1721
lastUpdated.toString() !== "0" ? lastUpdated : createdAt,
1822
).toLocaleString()}`;
1923

24+
const { isTwitterVerified, isGithubVerified } = useCredentialverification(application);
25+
2026
return (
2127
<div className="flex gap-16">
2228
<div className="flex flex-col gap-4">
2329
{recipient && <IconLabel type="address" address={recipient} />}
2430
{website && <IconLabel type="social" platform="website" link={website} />}
2531
{projectTwitter && (
26-
<IconLabel type="social" platform="twitter" link={`https://x.com/${projectTwitter}`} />
32+
<IconLabel
33+
type="social"
34+
platform="twitter"
35+
link={`https://x.com/${projectTwitter}`}
36+
isVerified={isTwitterVerified}
37+
/>
2738
)}
2839
</div>
2940
<div className="flex flex-col gap-4">
@@ -44,7 +55,12 @@ export const ProjectSummary: React.FC<ProjectSummaryProps> = ({ projectMetadata
4455
/>
4556
)}
4657
{projectGithub && (
47-
<IconLabel type="social" platform="github" link={`https://github.com/${projectGithub}`} />
58+
<IconLabel
59+
type="social"
60+
platform="github"
61+
link={`https://github.com/${projectGithub}`}
62+
isVerified={isGithubVerified}
63+
/>
4864
)}
4965
</div>
5066
</div>

src/features/checker/hooks/useCredentialverification.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { isVerified } from "@/lib/passport/credentialVerification";
55
import { ProjectApplicationForManager } from "../services/allo";
66

77
export function useCredentialverification(
8-
applicationMetadata: ProjectApplicationForManager | undefined,
8+
applicationMetadata: Partial<ProjectApplicationForManager> | undefined,
99
) {
1010
const [isTwitterVerified, setIsTwitterVerified] = useState<boolean>(false);
1111
const [isGithubVerified, setIsGithubVerified] = useState<boolean>(false);

src/features/checker/pages/SubmitApplicationEvaluationPage/SubmitApplicationEvaluationPage.tsx

+5-64
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
// src/components/SubmitApplicationEvaluation/SubmitApplicationEvaluationPage.tsx
22
import { useEffect, useState } from "react";
33

4-
5-
64
import { Hex } from "viem";
75

86
import { ApplicationBadge, ApplicationStatus } from "@/components/Badges";
97
import EvaluationForm from "@/components/EvaluationForm/EvaluationForm";
108
import { IconLabel } from "@/components/IconLabel";
119
import { PoolSummary } from "@/components/pool/components/PoolSummary/PoolSummary";
1210
import { ProjectBanner } from "@/components/project/components/ProjectBanner/ProjectBanner";
11+
import { ProjectSummary } from "@/components/project/components/ProjectSummary/ProjectSummary";
1312
import { useToast } from "@/hooks/use-toast";
1413
import { formatDate, DateFormat } from "@/lib/dates/formatDate";
1514
import { Accordion } from "@/primitives/Accordion";
@@ -18,7 +17,7 @@ import { Icon, IconType } from "@/primitives/Icon";
1817
import { ListGrid, ListGridColumn } from "@/primitives/ListGrid";
1918
import { Markdown } from "@/primitives/Markdown/Markdown";
2019

21-
import { useCredentialverification, useGetPastApplications, useInitialize } from "~checker/hooks";
20+
import { useGetPastApplications, useInitialize } from "~checker/hooks";
2221
import { useApplicationOverviewEvaluations } from "~checker/hooks/useApplicationEvaluations";
2322
import { PastApplication } from "~checker/services/allo";
2423
import { EVALUATION_STATUS, EvaluationBody } from "~checker/services/checker/api";
@@ -65,7 +64,6 @@ export const SubmitApplicationEvaluationPage = ({
6564
const [isModalOpen, setIsModalOpen] = useState(false);
6665
const { application, evaluationQuestions } =
6766
useApplicationOverviewEvaluations({ applicationId }) || {};
68-
const { isTwitterVerified, isGithubVerified } = useCredentialverification(application);
6967

7068
const [toastShowed, setToastShowed] = useState(false);
7169
const dispatch = useCheckerDispatchContext();
@@ -102,6 +100,7 @@ export const SubmitApplicationEvaluationPage = ({
102100
if (!application || !evaluationQuestions) return null;
103101

104102
const project = application.metadata.application.project;
103+
105104
const groups = evaluationQuestions.map((q) => ({
106105
id: q.questionIndex.toString(),
107106
heading: q.question,
@@ -238,65 +237,7 @@ export const SubmitApplicationEvaluationPage = ({
238237
/>
239238
}
240239
isOpen={true}
241-
content={
242-
<div className="flex flex-col gap-4">
243-
<div className="flex flex-wrap items-start gap-10">
244-
<div className="flex flex-col gap-4">
245-
{application.metadata.application.recipient && (
246-
<IconLabel
247-
type="address"
248-
address={application.metadata.application.recipient}
249-
/>
250-
)}
251-
{project.website && (
252-
<IconLabel type="social" platform="website" link={project.website} />
253-
)}
254-
{project.projectTwitter && (
255-
<IconLabel
256-
type="social"
257-
platform="twitter"
258-
link={
259-
project.projectTwitter.includes("https://")
260-
? project.projectTwitter
261-
: `https://x.com/${project.projectTwitter}`
262-
}
263-
isVerified={isTwitterVerified}
264-
/>
265-
)}
266-
{project.projectGithub && (
267-
<IconLabel
268-
type="social"
269-
platform="github"
270-
link={
271-
project.projectGithub.includes("https://")
272-
? project.projectGithub
273-
: `https://github.com/${project.projectGithub}`
274-
}
275-
isVerified={isGithubVerified}
276-
/>
277-
)}
278-
</div>
279-
<div className="flex flex-col gap-4">
280-
<IconLabel
281-
type="dateWithPrefix"
282-
prefix="Applied on:"
283-
date={new Date(project.createdAt)}
284-
/>
285-
{project.projectGithub && (
286-
<IconLabel
287-
type="social"
288-
platform="github"
289-
link={
290-
project.projectGithub.includes("https://")
291-
? project.projectGithub
292-
: `https://github.com/${project.projectGithub}`
293-
}
294-
/>
295-
)}
296-
</div>
297-
</div>
298-
</div>
299-
}
240+
content={<ProjectSummary projectMetadata={project} application={application} />}
300241
variant="default"
301242
border="none"
302243
padding="none"
@@ -386,4 +327,4 @@ export const SubmitApplicationEvaluationPage = ({
386327
</div>
387328
</div>
388329
);
389-
};
330+
};

src/features/checker/pages/ViewApplicationEvaluationsPage/ViewApplicationEvaluationsPage.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export const ViewApplicationEvaluationsPage: React.FC<ViewApplicationEvaluations
3030
if (!data) return;
3131

3232
const project = data?.application.metadata.application.project;
33-
project.recipient = data?.application.metadata.application.recipient;
3433

3534
const reviewStatusBadgeVariant =
3635
data?.application.status === "APPROVED"
@@ -90,7 +89,7 @@ export const ViewApplicationEvaluationsPage: React.FC<ViewApplicationEvaluations
9089
{capitalizeWord(data?.application.status)}
9190
</Badge>
9291
</div>
93-
<ProjectSummary projectMetadata={project} />
92+
<ProjectSummary projectMetadata={project} application={data?.application}/>
9493
<div className="h-0.5 bg-[#EAEAEA]" />
9594
{data?.applicationEvaluations.length > 0 ? (
9695
<ReviewDropdownList evaluations={data?.applicationEvaluations} />

src/lib/passport/credentialVerification.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const verifier = new PassportVerifier();
1212

1313
export async function isVerified(
1414
provider: "twitter" | "github",
15-
application: ProjectApplicationForManager | undefined,
15+
application: Partial<ProjectApplicationForManager> | undefined,
1616
): Promise<boolean> {
1717
const applicationMetadata = application?.metadata;
1818
const verifiableCredential = applicationMetadata?.application.project.credentials[provider];

0 commit comments

Comments
 (0)