TAO/client/src/components/Home.tsx

56 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-09-02 07:24:30 +00:00
import React, { useEffect, useState } from 'react';
import { relayInit } from 'nostr-tools';
import PostCard from './PostCard/PostCard';
2023-09-03 12:46:07 +00:00
import Header from './Header/Header';
2023-09-03 13:04:25 +00:00
import NewThreadCard from './PostCard/NewThreadCard';
2023-09-15 07:06:37 +00:00
import { getPow } from '../utils/mine';
import { Event } from 'nostr-tools';
2023-09-02 07:24:30 +00:00
const relay = relayInit('wss://nostr.lu.ke');
2023-09-02 07:24:30 +00:00
const Home = () => {
// Define the type of the state variable
const [events, setEvents] = useState<Event[]>([]);
useEffect(() => {
relay.on('connect', async () => {
console.log(`connected to ${relay.url}`);
const eventList = await relay.list([
{
kinds: [1],
2023-09-15 07:06:37 +00:00
limit: 200,
2023-09-02 07:24:30 +00:00
},
]);
2023-09-15 07:06:37 +00:00
// Filter events with a difficulty greater than 10
const filteredEvents = eventList.filter(event => getPow(event.id) > 2);
2023-09-02 07:24:30 +00:00
// Assuming eventList is of type Event[]
2023-09-15 07:06:37 +00:00
setEvents(filteredEvents);
2023-09-02 07:24:30 +00:00
});
relay.on('error', () => {
console.log(`failed to connect to ${relay.url}`);
});
relay.connect();
}, []);
return (
2023-09-03 12:46:07 +00:00
<>
2023-09-14 13:44:13 +00:00
<main className="bg-black text-white min-h-screen">
2023-09-02 07:24:30 +00:00
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 p-4">
2023-09-03 13:04:25 +00:00
<NewThreadCard />
2023-09-15 07:06:37 +00:00
{events.sort((a, b) => b.created_at - a.created_at).map((event, index) => (
<PostCard key={index} event={event}/>
2023-09-02 07:24:30 +00:00
))}
</div>
2023-09-03 12:46:07 +00:00
</main>
{/* <Header /> */}
2023-09-03 12:46:07 +00:00
</>
2023-09-02 07:24:30 +00:00
);
};
export default Home;