feat: improve message list
This commit is contained in:
@@ -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() };
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user