diff --git a/src/classes/event-store.ts b/src/classes/event-store.ts index 619ddbab3..0a5e2f635 100644 --- a/src/classes/event-store.ts +++ b/src/classes/event-store.ts @@ -2,7 +2,6 @@ import { getEventUID } from "../helpers/nostr/events"; import { NostrEvent } from "../types/nostr-event"; import Subject from "./subject"; -type EventFilter = (event: NostrEvent) => boolean; export default class EventStore { name?: string; events = new Map(); @@ -24,9 +23,7 @@ export default class EventStore { if (!existing || event.created_at > existing.created_at) { this.events.set(id, event); this.onEvent.next(event); - return true; } - return false; } clear() { @@ -41,19 +38,17 @@ export default class EventStore { other.onEvent.unsubscribe(this.addEvent, this); } - getFirstEvent(nth = 0, filter?: EventFilter) { + getFirstEvent(nth = 0) { const events = this.getSortedEvents(); - const filteredEvents = filter ? events.filter(filter) : events; for (let i = 0; i <= nth; i++) { - const event = filteredEvents[i]; + const event = events[i]; if (event) return event; } } - getLastEvent(nth = 0, filter?: EventFilter) { + getLastEvent(nth = 0) { const events = this.getSortedEvents(); - const filteredEvents = filter ? events.filter(filter) : events; for (let i = nth; i >= 0; i--) { - const event = filteredEvents[filteredEvents.length - 1 - i]; + const event = events[events.length - 1 - i]; if (event) return event; } } diff --git a/src/classes/timeline-loader.ts b/src/classes/timeline-loader.ts index 5ea77f64e..40a2fa0f7 100644 --- a/src/classes/timeline-loader.ts +++ b/src/classes/timeline-loader.ts @@ -56,14 +56,16 @@ class RelayTimelineLoader { let gotEvents = 0; request.onEvent.subscribe((e) => { - if (this.handleEvent(e)) { - gotEvents++; - } + this.handleEvent(e); + gotEvents++; }); request.onComplete.then(() => { this.loading = false; - if (gotEvents === 0) this.complete = true; this.log(`Got ${gotEvents} events`); + if (gotEvents === 0) { + this.complete = true; + this.log("Complete"); + } this.onBlockFinish.next(); }); @@ -74,8 +76,8 @@ class RelayTimelineLoader { return this.events.addEvent(event); } - getLastEvent(nth = 0, filter?: EventFilter) { - return this.events.getLastEvent(nth, filter); + getLastEvent(nth = 0) { + return this.events.getLastEvent(nth); } } @@ -191,7 +193,7 @@ export class TimelineLoader { let triggeredLoad = false; for (const [relay, loader] of this.relayTimelineLoaders) { if (loader.complete || loader.loading) continue; - const event = loader.getLastEvent(this.loadNextBlockBuffer, this.eventFilter); + const event = loader.getLastEvent(this.loadNextBlockBuffer); if (!event || event.created_at >= this.cursor) { loader.loadNextBlock(); triggeredLoad = true; diff --git a/src/helpers/nostr/lists.ts b/src/helpers/nostr/lists.ts index 41d414e1b..8500af93b 100644 --- a/src/helpers/nostr/lists.ts +++ b/src/helpers/nostr/lists.ts @@ -8,7 +8,9 @@ export const PIN_LIST_KIND = 10001; export const MUTE_LIST_KIND = 10000; export function getListName(event: NostrEvent) { - if (event.kind === 3) return "Following"; + if (event.kind === Kind.Contacts) return "Following"; + if (event.kind === PIN_LIST_KIND) return "Pins"; + if (event.kind === MUTE_LIST_KIND) return "Mute"; return event.tags.find((t) => t[0] === "title")?.[1] || event.tags.find(isDTag)?.[1]; } diff --git a/src/providers/delete-event-provider.tsx b/src/providers/delete-event-provider.tsx index 246d42655..82c70cfbb 100644 --- a/src/providers/delete-event-provider.tsx +++ b/src/providers/delete-event-provider.tsx @@ -32,7 +32,7 @@ import useEventRelays from "../hooks/use-event-relays"; import { useWriteRelayUrls } from "../hooks/use-client-relays"; import { RelayFavicon } from "../components/relay-favicon"; import { ExternalLinkIcon } from "../components/icons"; -import { getEventCoordinate, isReplaceable } from "../helpers/nostr/events"; +import { getEventCoordinate, getEventUID, isReplaceable } from "../helpers/nostr/events"; import NostrPublishAction from "../classes/nostr-publish-action"; import { Tag } from "../types/nostr-event"; @@ -65,7 +65,7 @@ export default function DeleteEventProvider({ children }: PropsWithChildren) { const [defer, setDefer] = useState>(); const [reason, setReason] = useState(""); - const eventRelays = useEventRelays(event?.id); + const eventRelays = useEventRelays(event && getEventUID(event)); const writeRelays = useWriteRelayUrls(eventRelays); const deleteEvent = useCallback((event: Event) => { @@ -94,7 +94,6 @@ export default function DeleteEventProvider({ children }: PropsWithChildren) { }; const signed = await signingService.requestSignature(draft, account); const pub = new NostrPublishAction("Delete", writeRelays, signed); - await pub.onComplete; defer?.resolve(); } catch (e) { if (e instanceof Error) toast({ status: "error", description: e.message }); diff --git a/src/views/lists/index.tsx b/src/views/lists/index.tsx index 7ae29cecd..a5584bfe9 100644 --- a/src/views/lists/index.tsx +++ b/src/views/lists/index.tsx @@ -24,7 +24,7 @@ function ListsPage() { const noteLists = lists.filter((event) => event.kind === NOTE_LIST_KIND); return ( - +