-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProjectPage.js
63 lines (52 loc) · 1.75 KB
/
ProjectPage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import styles from "./ProjectPage.module.scss";
import { useState, useEffect } from "react";
import { useParams } from "react-router-dom";
import Project from "../components/Project";
import { Navbar } from "../components/Navbar";
import { HeroImage } from "../components/HeroImage";
import { BsArrowUpCircleFill } from "react-icons/bs";
import { HashLink as Link } from "react-router-hash-link";
import { getPledges, getProject } from "../services/project";
const ProjectPage = () => {
const { projectId } = useParams();
const [currentProject, setCurrentProject] = useState();
const [projectPledges, setProjectPledges] = useState();
// getProject("NUEBYucaMWYBlGs9qwX9").then((project) => {
// console.log({ project });
// });
useEffect(() => {
const loadProjectData = async () => {
const project = await getProject(projectId);
console.log({ project });
const pledges = await getPledges(project.pledges);
console.log({ pledges });
setCurrentProject(project);
setProjectPledges(pledges);
};
loadProjectData();
}, [projectId]);
if (!currentProject) {
return <div style={{ color: "white" }}>Project not found</div>;
}
const isLoading = !projectPledges || !currentProject;
const { coverImage, coverImageXl } = currentProject;
return (
<>
<Navbar />
<HeroImage image={coverImage} imageXl={coverImageXl} />
{isLoading ? (
<div>loading...</div>
) : (
<Project pledges={projectPledges} project={currentProject} />
)}
<div className={styles.toTheTopContainer}>
<Link to="#top">
<h2 className={styles.toTheTop}>
<BsArrowUpCircleFill />
</h2>
</Link>
</div>
</>
);
};
export default ProjectPage;