MCPcopy Create free account
hub / github.com/code100x/daily-code / CompleteTrackCard

Function CompleteTrackCard

apps/web/components/admin/CompleteTrackCard.tsx:25–123  ·  view source on GitHub ↗
({ notionId, TrackData }: { notionId: string; TrackData: CompleteTrackCardProps })

Source from the content-addressed store, hash-verified

23 type: string;
24}
25const CompleteTrackCard = ({ notionId, TrackData }: { notionId: string; TrackData: CompleteTrackCardProps }) => {
26 async function handleAddTrack() {
27 setIsSubmitting(true);
28 await createTrack({
29 id: TrackData.trackId,
30 title: TrackData.trackTitle,
31 description: TrackData.trackDescription,
32 image: TrackData.trackImage,
33 hidden: false,
34 problems: problems,
35 selectedCategory: TrackData.selectedCategory,
36 cohort: parseInt(TrackData.cohort),
37 trackType: "NOTION",
38 });
39 await insertData(TrackData.trackId);
40 setIsSubmitting(true);
41 }
42
43 const [addButton, setAddButton] = useState(false);
44 const [problems, setProblems] = useState<{ problem: Prisma.ProblemCreateManyInput; sortingOrder: number }[]>([]);
45 const [isSubmitting, setIsSubmitting] = useState(false);
46
47 useEffect(() => {
48 const fetchData = async () => {
49 try {
50 const response = await fetch(`/api/AddTracks`, {
51 method: "POST",
52 headers: {
53 "Content-Type": "application/json",
54 },
55 body: JSON.stringify({ notionId }),
56 });
57 if (response.ok) {
58 const data: { notionDocId: string; title: string }[] = await response.json();
59
60 const dbData: { problem: Prisma.ProblemCreateManyInput; sortingOrder: number }[] = [];
61
62 for (let i = 0; i < data.length; i++) {
63 let problem = {
64 id: `${TrackData.trackTitle.replace(/[^a-zA-Z0-9]/g, "-")}-${i + 1}`,
65 notionDocId: data[i]?.notionDocId!,
66 title: data[i]?.title!,
67 description: data[i]?.title!,
68 type: ProblemType.Blog,
69 };
70 dbData.push({ problem, sortingOrder: data.length - i });
71 }
72
73 setProblems(dbData);
74 } else {
75 throw new Error("Failed to fetch data");
76 }
77 } catch (error) {
78 console.error("Error fetching data:", error);
79 }
80 };
81
82 if (notionId) {

Callers

nothing calls this directly

Calls 1

fetchDataFunction · 0.85

Tested by

no test coverage detected