Add AbortSignal's to things

This commit is contained in:
Alex Gleason 2025-04-23 15:13:17 -05:00
parent 99970309e2
commit 7d81db739c
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
4 changed files with 13 additions and 17 deletions

View File

@ -106,8 +106,9 @@ function usePosts() {
return useQuery({ return useQuery({
queryKey: ['posts'], queryKey: ['posts'],
queryFn: async () => { queryFn: async (c) => {
const events = await nostr.query([{ kinds: [1], limit: 20 }]); const signal = AbortSignal.any([c.signal, AbortSignal.timeout(1500)]);
const events = await nostr.query([{ kinds: [1], limit: 20 }], { signal });
return events; // these events could be transformed into another format return events; // these events could be transformed into another format
}, },
}); });

View File

@ -14,11 +14,11 @@ export function useAuthor(pubkey: string | undefined) {
const [event] = await nostr.query( const [event] = await nostr.query(
[{ kinds: [0], authors: [pubkey!], limit: 1 }], [{ kinds: [0], authors: [pubkey!], limit: 1 }],
{ signal: AbortSignal.any([signal, AbortSignal.timeout(500)]) }, { signal: AbortSignal.any([signal, AbortSignal.timeout(1500)]) },
); );
if (!event) { if (!event) {
return {}; throw new Error('No event found');
} }
try { try {
@ -28,5 +28,6 @@ export function useAuthor(pubkey: string | undefined) {
return { event }; return { event };
} }
}, },
retry: 3,
}); });
} }

View File

@ -17,17 +17,10 @@ export function useLoggedInAccounts() {
const { data: authors = [] } = useQuery({ const { data: authors = [] } = useQuery({
queryKey: ['logins', logins.map((l) => l.id).join(';')], queryKey: ['logins', logins.map((l) => l.id).join(';')],
queryFn: async ({ signal }) => { queryFn: async ({ signal }) => {
let events: NostrEvent[] = []; const events = await nostr.query(
try {
events = await nostr.query(
[{ kinds: [0], authors: logins.map((l) => l.pubkey) }], [{ kinds: [0], authors: logins.map((l) => l.pubkey) }],
{ signal: AbortSignal.any([signal, AbortSignal.timeout(500)]) }, { signal: AbortSignal.any([signal, AbortSignal.timeout(1500)]) },
); );
} catch (error) {
console.error('Error fetching accounts:', error);
return [];
}
return logins.map(({ id, pubkey }): Account => { return logins.map(({ id, pubkey }): Account => {
const event = events.find((e) => e.pubkey === pubkey); const event = events.find((e) => e.pubkey === pubkey);
@ -38,7 +31,8 @@ export function useLoggedInAccounts() {
return { id, pubkey, metadata: {}, event }; return { id, pubkey, metadata: {}, event };
} }
}); });
} },
retry: 3,
}); });
// Current user is the first login // Current user is the first login

View File

@ -23,7 +23,7 @@ export function useNostrPublish() {
tags: t.tags ?? [], tags: t.tags ?? [],
created_at: t.created_at ?? Math.floor(Date.now() / 1000), created_at: t.created_at ?? Math.floor(Date.now() / 1000),
}); });
nostr.event(event); await nostr.event(event, { signal: AbortSignal.timeout(5000) });
} else { } else {
throw new Error("User is not logged in"); throw new Error("User is not logged in");
} }