feat: improve message list

This commit is contained in:
reya
2024-08-04 14:30:29 +07:00
parent 1d9561194d
commit 668238656e
2 changed files with 24 additions and 8 deletions

View File

@@ -296,6 +296,10 @@ pub async fn login(
let filter = Filter::new().kind(Kind::GiftWrap).pubkey(public_key); let filter = Filter::new().kind(Kind::GiftWrap).pubkey(public_key);
// Generate a fake sig for rumor event.
// TODO: Find better way to save unsigned event to database.
let fake_sig = Signature::from_str("f9e79d141c004977192d05a86f81ec7c585179c371f7350a5412d33575a2a356433f58e405c2296ed273e2fe0aafa25b641e39cc4e1f3f261ebf55bce0cbac83").unwrap();
if let Ok(events) = client if let Ok(events) = client
.get_events_of_with_opts( .get_events_of_with_opts(
vec![filter], vec![filter],
@@ -304,10 +308,6 @@ pub async fn login(
) )
.await .await
{ {
// Use fake sig, it doesn't matter.
// TODO: Find better way to save unsigned event to database.
let fake_sig = Signature::from_str("f9e79d141c004977192d05a86f81ec7c585179c371f7350a5412d33575a2a356433f58e405c2296ed273e2fe0aafa25b641e39cc4e1f3f261ebf55bce0cbac83").unwrap();
for event in events.iter() { for event in events.iter() {
if let Ok(UnwrappedGift { rumor, .. }) = client.unwrap_gift_wrap(event).await { if let Ok(UnwrappedGift { rumor, .. }) = client.unwrap_gift_wrap(event).await {
let rumor_clone = rumor.clone(); let rumor_clone = rumor.clone();
@@ -336,6 +336,21 @@ pub async fn login(
if let Ok(UnwrappedGift { rumor, sender }) = if let Ok(UnwrappedGift { rumor, sender }) =
client.unwrap_gift_wrap(&event).await client.unwrap_gift_wrap(&event).await
{ {
let rumor_clone = rumor.clone();
let ev = Event::new(
rumor_clone.id.unwrap(),
rumor_clone.pubkey,
rumor_clone.created_at,
rumor_clone.kind,
rumor_clone.tags,
rumor_clone.content,
fake_sig,
);
if let Err(e) = client.database().save_event(&ev).await {
println!("Error: {}", e)
}
let payload = let payload =
EventPayload { event: rumor.as_json(), sender: sender.to_hex() }; EventPayload { event: rumor.as_json(), sender: sender.to_hex() };

View File

@@ -191,7 +191,7 @@ function List() {
["chats", id], ["chats", id],
(prevEvents: NostrEvent[]) => { (prevEvents: NostrEvent[]) => {
if (!prevEvents) return prevEvents; if (!prevEvents) return prevEvents;
return [...prevEvents, event]; return [event, ...prevEvents];
}, },
); );
}); });
@@ -236,9 +236,6 @@ function List() {
-1.5; -1.5;
}} }}
> >
<div className="h-20 flex items-center justify-center">
<CoopIcon className="size-10 text-neutral-200 dark:text-neutral-800" />
</div>
{isLoading ? ( {isLoading ? (
<> <>
<div className="flex items-center gap-3 my-1.5 px-3"> <div className="flex items-center gap-3 my-1.5 px-3">
@@ -258,6 +255,10 @@ function List() {
Cannot load message. Please try again later. Cannot load message. Please try again later.
</div> </div>
</div> </div>
) : !data.length ? (
<div className="h-20 flex items-center justify-center">
<CoopIcon className="size-10 text-neutral-200 dark:text-neutral-800" />
</div>
) : ( ) : (
data.map((item) => ( data.map((item) => (
<div <div