Really good stuff

This commit is contained in:
austinkelsay 2024-09-06 23:21:40 -05:00
parent 96a6a77355
commit c776567cf3
5 changed files with 44 additions and 21 deletions

View File

@ -1,3 +1,3 @@
# Plebdevs Platform # Plebdevs Platform
still in development still in development

View File

@ -34,7 +34,7 @@ export default function CourseDetails({ processedEvent, paidCourse, lessons, dec
const router = useRouter(); const router = useRouter();
const {ndk, addSigner} = useNDKContext(); const {ndk, addSigner} = useNDKContext();
const lnAddress = process.env.NEXT_PUBLIC_LN_ADDRESS; const lnAddress = process.env.NEXT_PUBLIC_LIGHTNING_ADDRESS;
useEffect(() => { useEffect(() => {
console.log("processedEvent", processedEvent); console.log("processedEvent", processedEvent);

View File

@ -230,7 +230,8 @@ export default function DraftCourseDetails({ processedEvent, draftId, lessons })
['description', summary], ['description', summary],
['l', "Education"], ['l', "Education"],
['price', price.toString()], ['price', price.toString()],
...lessons.map((lesson) => ['a', `${lesson.kind}:${lesson.pubkey}:${lesson.d}`]), // map out the lessons by order of the index property which is on each lesson
...lessons.sort((a, b) => a.index - b.index).map((lesson) => ['a', `${lesson.kind}:${lesson.pubkey}:${lesson.d}`]),
]; ];
return event; return event;
}; };

View File

@ -9,7 +9,7 @@ import { useZapsSubscription } from "@/hooks/nostrQueries/zaps/useZapsSubscripti
import { getTotalFromZaps } from "@/utils/lightning"; import { getTotalFromZaps } from "@/utils/lightning";
import { useSession } from "next-auth/react"; import { useSession } from "next-auth/react";
const lnAddress = process.env.NEXT_PUBLIC_LN_ADDRESS; const lnAddress = process.env.NEXT_PUBLIC_LIGHTNING_ADDRESS;
const ResourceDetails = ({processedEvent, topics, title, summary, image, price, author, paidResource, decryptedContent, handlePaymentSuccess, handlePaymentError}) => { const ResourceDetails = ({processedEvent, topics, title, summary, image, price, author, paidResource, decryptedContent, handlePaymentSuccess, handlePaymentError}) => {
const [zapAmount, setZapAmount] = useState(0); const [zapAmount, setZapAmount] = useState(0);

View File

@ -5,18 +5,22 @@ import { Tag } from 'primereact/tag';
import { Button } from 'primereact/button'; import { Button } from 'primereact/button';
import { ProgressSpinner } from 'primereact/progressspinner'; import { ProgressSpinner } from 'primereact/progressspinner';
import { useNDKContext } from '@/context/NDKContext'; import { useNDKContext } from '@/context/NDKContext';
import { useSession } from 'next-auth/react';
import { findKind0Fields } from '@/utils/nostr'; import { findKind0Fields } from '@/utils/nostr';
import NostrIcon from '../../../public/images/nostr.png'; import NostrIcon from '../../../public/images/nostr.png';
import Image from 'next/image'; import Image from 'next/image';
import { useImageProxy } from '@/hooks/useImageProxy'; import { useImageProxy } from '@/hooks/useImageProxy';
import { nip19 } from 'nostr-tools'; import { nip19 } from 'nostr-tools';
import { useCommunityNotes } from '@/hooks/nostr/useCommunityNotes'; import { useCommunityNotes } from '@/hooks/nostr/useCommunityNotes';
import ZapThreadsWrapper from '@/components/ZapThreadsWrapper';
const NostrFeed = () => { const NostrFeed = () => {
const { communityNotes, isLoading, error } = useCommunityNotes(); const { communityNotes, isLoading, error } = useCommunityNotes();
const { ndk } = useNDKContext(); const { ndk } = useNDKContext();
const { returnImageProxy } = useImageProxy(); const { returnImageProxy } = useImageProxy();
const { data: session } = useSession();
const [authorData, setAuthorData] = useState({}); const [authorData, setAuthorData] = useState({});
const [npub, setNpub] = useState(null);
useEffect(() => { useEffect(() => {
const fetchAuthors = async () => { const fetchAuthors = async () => {
@ -35,6 +39,12 @@ const NostrFeed = () => {
} }
}, [communityNotes]); }, [communityNotes]);
useEffect(() => {
if (session?.user?.pubkey) {
setNpub(nip19.npubEncode(session.user.pubkey));
}
}, [session]);
const fetchAuthor = async (pubkey) => { const fetchAuthor = async (pubkey) => {
try { try {
const filter = { const filter = {
@ -64,12 +74,12 @@ const NostrFeed = () => {
const renderHeader = (message) => ( const renderHeader = (message) => (
<div className="flex flex-row w-full items-center justify-between p-4 bg-gray-800 rounded-t-lg"> <div className="flex flex-row w-full items-center justify-between p-4 bg-gray-800 rounded-t-lg">
<div className="flex flex-row items-center"> <div className="flex flex-row items-center">
<Avatar <Avatar
image={getAvatarImage(message)} image={getAvatarImage(message)}
icon={getAvatarImage(message) ? null : 'pi pi-user'} icon={getAvatarImage(message) ? null : 'pi pi-user'}
shape="circle" shape="circle"
size="large" size="large"
className="border-2 border-blue-400" className="border-2 border-blue-400"
/> />
<p className="pl-4 font-bold text-xl text-white"> <p className="pl-4 font-bold text-xl text-white">
{authorData[message.pubkey]?.username || message.pubkey.substring(0, 12) + '...'} {authorData[message.pubkey]?.username || message.pubkey.substring(0, 12) + '...'}
@ -85,19 +95,31 @@ const NostrFeed = () => {
); );
const footer = (message) => ( const footer = (message) => (
<div className="w-full flex justify-between items-center"> <>
<span className="bg-gray-800 rounded-lg p-2 text-sm text-gray-300"> <div className="w-full flex justify-between items-center">
{new Date(message.created_at * 1000).toLocaleString()} <span className="bg-gray-800 rounded-lg p-2 text-sm text-gray-300">
</span> {new Date(message.created_at * 1000).toLocaleString()}
<Button </span>
label="View on Nostr" <Button
icon="pi pi-external-link" label="View on Nostr"
outlined icon="pi pi-external-link"
size="small" outlined
className='my-2' size="small"
onClick={() => window.open(`https://nostr.band/${nip19.noteEncode(message.id)}`, '_blank')} className='my-2'
/> onClick={() => window.open(`https://nostr.band/${nip19.noteEncode(message.id)}`, '_blank')}
</div> />
</div>
<div className="w-full">
{session?.user?.pubkey && (
<ZapThreadsWrapper
anchor={nip19.noteEncode(message.id)}
user={npub}
relays="wss://nos.lol/, wss://relay.damus.io/, wss://relay.snort.social/, wss://relay.nostr.band/, wss://nostr.mutinywallet.com/, wss://relay.mutinywallet.com/, wss://relay.primal.net/"
disable=""
/>
)}
</div>
</>
); );
if (isLoading) { if (isLoading) {