From d794c206785d16469d8af26fdc347a1651a69773 Mon Sep 17 00:00:00 2001 From: austinkelsay Date: Mon, 22 Jul 2024 17:16:36 -0500 Subject: [PATCH] Improvements with course flow, just need to work on unpublished --- .../content/carousels/CoursesCarousel.js | 4 ++-- .../content/carousels/templates/CourseTemplate.js | 14 +++++++++----- src/components/forms/CourseForm.js | 6 +++++- src/utils/nostr.js | 2 ++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/components/content/carousels/CoursesCarousel.js b/src/components/content/carousels/CoursesCarousel.js index 6b6c324..f230fb5 100644 --- a/src/components/content/carousels/CoursesCarousel.js +++ b/src/components/content/carousels/CoursesCarousel.js @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import { Carousel } from 'primereact/carousel'; -import { parseEvent } from '@/utils/nostr'; +import { parseCourseEvent } from '@/utils/nostr'; import { useNostr } from '@/hooks/useNostr'; import CourseTemplate from '@/components/content/carousels/templates/CourseTemplate'; import TemplateSkeleton from '@/components/content/carousels/skeletons/TemplateSkeleton'; @@ -34,7 +34,7 @@ export default function CoursesCarousel() { console.log('fetchedCourses:', fetchedCourses); if (fetchedCourses && fetchedCourses.length > 0) { // First process the courses to be ready for display - const processedCourses = fetchedCourses.map(course => parseEvent(course)); + const processedCourses = fetchedCourses.map(course => parseCourseEvent(course)); console.log('processedCourses:', processedCourses); // Fetch zaps for all processed courses at once diff --git a/src/components/content/carousels/templates/CourseTemplate.js b/src/components/content/carousels/templates/CourseTemplate.js index 85f7fe8..2294c2d 100644 --- a/src/components/content/carousels/templates/CourseTemplate.js +++ b/src/components/content/carousels/templates/CourseTemplate.js @@ -14,7 +14,7 @@ const CourseTemplate = (course) => { useEffect(() => { if (!course || !course.zaps) return; - + let total = 0; course.zaps.forEach((zap) => { const bolt11Tag = zap.tags.find(tag => tag[0] === "bolt11"); @@ -27,7 +27,6 @@ const CourseTemplate = (course) => { setZapAmount(total); }, [course]); - return (
{

- {course.title} + {course.name || course.title}

-

{course.summary}

+

{course.description || course.summary}

- {formatTimestampToHowLongAgo(course.published_at)} + {course?.published_at && course.published_at !== "" ? ( + formatTimestampToHowLongAgo(course.published_at) + ) : ( + formatTimestampToHowLongAgo(course.created_at) + ) + }

diff --git a/src/components/forms/CourseForm.js b/src/components/forms/CourseForm.js index 9903753..8127e03 100644 --- a/src/components/forms/CourseForm.js +++ b/src/components/forms/CourseForm.js @@ -111,11 +111,15 @@ const CourseForm = () => { }), axios.delete(`/api/drafts/${lesson.id}`) ]); + + } - processedLessons.push({ id: lesson?.d }); + processedLessons.push({ id: lesson?.d || lesson.id }); } + // Need to set aside a final processed lessons that included lesson.kind, lesson.pubkey, lesson.d + // Step 2: Create and publish course const courseEvent = createCourseEvent(newCourseId, title, summary, coverImage, selectedLessons); const signedCourseEvent = await window.nostr.signEvent(courseEvent); diff --git a/src/utils/nostr.js b/src/utils/nostr.js index d138b8b..2bd9bd1 100644 --- a/src/utils/nostr.js +++ b/src/utils/nostr.js @@ -92,8 +92,10 @@ export const parseCourseEvent = (event) => { description: '', image: '', published_at: '', + created_at: event.created_at, topics: [], d: '', + tags: event.tags }; // Iterate over the tags array to extract data