This commit is contained in:
smolgrrr 2023-10-30 21:31:08 +11:00
parent aaacff5cb6
commit 8e6c396620
3 changed files with 13 additions and 30 deletions

View File

@ -5,6 +5,7 @@ import { Event } from 'nostr-tools';
import { nip19 } from 'nostr-tools'; import { nip19 } from 'nostr-tools';
import { getMetadata, uniqBy } from '../../utils/utils'; import { getMetadata, uniqBy } from '../../utils/utils';
import ContentPreview from '../Modals/TextModal'; import ContentPreview from '../Modals/TextModal';
import { useEffect } from 'react';
const colorCombos = [ const colorCombos = [
'from-red-400 to-yellow-500', 'from-red-400 to-yellow-500',
@ -63,7 +64,7 @@ const ReplyCard = ({ event, metadata, replyCount, repliedTo }: { event: Event, m
metadataParsed = getMetadata(metadata); metadataParsed = getMetadata(metadata);
} }
// const replyPubkeys = event.tags.filter(tag => tag[0] === 'p'); const replyPubkeys = event.tags.filter(tag => tag[0] === 'p');
// const getMetadataEvent = (event: Event) => { // const getMetadataEvent = (event: Event) => {
// const metadataEvent = uniqEvents.find(e => e.pubkey === event.pubkey && e.kind === 0); // const metadataEvent = uniqEvents.find(e => e.pubkey === event.pubkey && e.kind === 0);
@ -72,6 +73,9 @@ const ReplyCard = ({ event, metadata, replyCount, repliedTo }: { event: Event, m
// } // }
// return null; // return null;
// } // }
useEffect(() => {
console.log(repliedTo)
}, []);
return ( return (
<> <>
@ -100,9 +104,9 @@ const ReplyCard = ({ event, metadata, replyCount, repliedTo }: { event: Event, m
</div> </div>
<div className="flex items-center my-1" > <div className="flex items-center my-1" >
<span className="text-xs text-gray-500">Reply to: </span> <span className="text-xs text-gray-500">Reply to: </span>
{uniqBy(repliedTo, 'pubkey').map((event, index) => ( {repliedTo.map((event, index) => (
<> <>
<img className={`h-5 w-5 rounded-full`} src={getMetadata(event).picture} /> {/* <img className={`h-5 w-5 rounded-full`} src={getMetadata(event).picture} /> */}
<div className={`h-5 w-5 bg-gradient-to-r ${getColorFromHash(event.pubkey, colorCombos)} rounded-full`} /> <div className={`h-5 w-5 bg-gradient-to-r ${getColorFromHash(event.pubkey, colorCombos)} rounded-full`} />
</> </>
))} ))}

View File

@ -19,7 +19,6 @@ const Thread = () => {
const { id } = useParams(); const { id } = useParams();
const [events, setEvents] = useState<Event[]>([]); // Initialize state const [events, setEvents] = useState<Event[]>([]); // Initialize state
let decodeResult = nip19.decode(id as string); let decodeResult = nip19.decode(id as string);
const [comment, setComment] = useState("");
const [showForm, setShowForm] = useState(false); const [showForm, setShowForm] = useState(false);
const [postType, setPostType] = useState(""); const [postType, setPostType] = useState("");
@ -41,28 +40,6 @@ const Thread = () => {
}; };
}, []); // Empty dependency array means this useEffect runs once when the component mounts }, []); // Empty dependency array means this useEffect runs once when the component mounts
const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
let sk = generatePrivateKey();
try {
const event = minePow({
kind: 1,
tags: [],
content: comment,
created_at: Math.floor(Date.now() / 1000),
pubkey: getPublicKey(sk),
}, difficulty);
const signedEvent = finishEvent(event, sk);
await publish(signedEvent);
console.log(signedEvent.id);
} catch (error) {
setComment(comment + " " + error);
}
};
const uniqEvents = events.length > 0 ? uniqBy(events, "id") : []; const uniqEvents = events.length > 0 ? uniqBy(events, "id") : [];
const getMetadataEvent = (event: Event) => { const getMetadataEvent = (event: Event) => {
@ -78,7 +55,7 @@ const Thread = () => {
} }
const repliedList = (event: Event): Event[] => { const repliedList = (event: Event): Event[] => {
return uniqEvents.filter(e => event.tags.some(tag => tag[0] === 'p' && tag[1] === e.pubkey) && e.kind === 0); return uniqEvents.filter(e => event.tags.some(tag => tag[0] === 'p' && tag[1] === e.pubkey));
} }
if (!uniqEvents[0]) { if (!uniqEvents[0]) {
@ -127,7 +104,7 @@ const Thread = () => {
/> />
</div> </div>
<div> <div>
<ThreadPost state={showForm} type={postType} /> <ThreadPost OPEvent={uniqEvents[0]} state={showForm} type={postType} />
</div> </div>
<div className="col-span-full h-0.5 bg-neutral-900"></div> {/* This is the white line separator */} <div className="col-span-full h-0.5 bg-neutral-900"></div> {/* This is the white line separator */}
{uniqEvents {uniqEvents

View File

@ -1,13 +1,13 @@
import { useParams } from 'react-router-dom'; import { useParams } from 'react-router-dom';
import { useState, useMemo, useEffect } from "react"; import { useState, useMemo, useEffect } from "react";
import { ArrowUpTrayIcon, CpuChipIcon } from '@heroicons/react/24/outline'; import { ArrowUpTrayIcon, CpuChipIcon } from '@heroicons/react/24/outline';
import { generatePrivateKey, getPublicKey, finishEvent } from 'nostr-tools'; import { generatePrivateKey, getPublicKey, finishEvent, Event as NostrEvent } from 'nostr-tools';
import { publish } from '../../utils/relays'; import { publish } from '../../utils/relays';
import NostrImg from '../../utils/ImgUpload'; import NostrImg from '../../utils/ImgUpload';
import { nip19 } from 'nostr-tools'; import { nip19 } from 'nostr-tools';
const ThreadPost = ({ state, type }: { state: Boolean, type: String }) => { const ThreadPost = ({ OPEvent, state, type }: { OPEvent: NostrEvent, state: Boolean, type: String }) => {
const { id } = useParams(); const { id } = useParams();
const [comment, setComment] = useState(""); const [comment, setComment] = useState("");
const [file, setFile] = useState(""); const [file, setFile] = useState("");
@ -47,8 +47,10 @@ const ThreadPost = ({ state, type }: { state: Boolean, type: String }) => {
let modifiedComment = comment + " " + file; let modifiedComment = comment + " " + file;
if (type === 'r') { if (type === 'r') {
tags.push(["e", id as string]) tags.push(["e", id as string])
tags.push(["p", OPEvent.pubkey])
} else if (type === 'q') { } else if (type === 'q') {
tags.push(["q", id as string]) tags.push(["q", id as string])
tags.push(["p", OPEvent.pubkey])
modifiedComment += ' nostr:' + nip19.noteEncode(id); modifiedComment += ' nostr:' + nip19.noteEncode(id);
} }