From 7bd98270f81316e431665fdaa60cb9c487525112 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 24 Dec 2024 09:26:33 -0800 Subject: [PATCH] Temporarily handle old data format for events --- src/routes/+layout.svelte | 69 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 360746b5..dda7827b 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -5,7 +5,18 @@ import {get, derived} from "svelte/store" import {dev} from "$app/environment" import {bytesToHex, hexToBytes} from "@noble/hashes/utils" - import {identity, sleep, take, sortBy, ago, now, HOUR, WEEK, Worker} from "@welshman/lib" + import { + identity, + sleep, + take, + sortBy, + ago, + now, + HOUR, + WEEK, + Worker, + throttle, + } from "@welshman/lib" import type {TrustedEvent} from "@welshman/util" import { PROFILE, @@ -18,7 +29,7 @@ getPubkeyTagValues, getListTags, } from "@welshman/util" - import {throttled} from "@welshman/store" + import {throttled, custom} from "@welshman/store" import { relays, handles, @@ -136,6 +147,58 @@ ) } + const migrate = (data: any[], options: any) => (options.migrate ? options.migrate(data) : data) + + // TODO: remove this + const fromRepositoryAndTracker = (repository: any, tracker: any, options: any = {}) => ({ + options, + keyPath: "id", + store: custom( + setter => { + let onUpdate = () => { + const events = migrate(repository.dump(), options) + + setter( + events.map((event: any) => { + const relays = Array.from(tracker.getRelays(event.id)) + + return {id: event.id, event, relays} + }), + ) + } + + if (options.throttle) { + onUpdate = throttle(options.throttle, onUpdate) + } + + onUpdate() + tracker.on("update", onUpdate) + repository.on("update", onUpdate) + + return () => { + tracker.off("update", onUpdate) + } + }, + { + set: (items: {event: TrustedEvent; relays: string[]}[]) => { + const events: TrustedEvent[] = [] + const relaysById = new Map>() + + for (const {event, relays} of items) { + if (!event) { + continue + } + events.push(event) + relaysById.set(event.id, new Set(relays)) + } + + repository.load(events) + tracker.load(relaysById) + }, + }, + ), + }) + if (!db) { setupTracking() setupAnalytics() @@ -151,7 +214,7 @@ throttle: 3000, migrate: migratePlaintext, }), - events: storageAdapters.fromRepositoryAndTracker(repository, tracker, { + events: fromRepositoryAndTracker(repository, tracker, { throttle: 3000, migrate: migrateEvents, }),