diff --git a/src/lib/snort_workers/master_worker.ts b/src/lib/snort_workers/master_worker.ts
index 52434f8..284a100 100644
--- a/src/lib/snort_workers/master_worker.ts
+++ b/src/lib/snort_workers/master_worker.ts
@@ -1,12 +1,10 @@
+import { seedRelays } from '@/snort_workers/seed_relays';
+import type { NostrEvent } from '@nostr-dev-kit/ndk';
import { NostrSystem, RequestBuilder, type QueryLike } from '@snort/system';
import { derived, writable } from 'svelte/store';
-import { Command, FrontendData, WorkerData } from './types';
-import { followsFromKind3, getNostrEvent, tagSplits } from './utils';
-import type { NostrEvent } from '@nostr-dev-kit/ndk';
import WorkerPubkeys from './live_subs?worker';
-import WorkerEvents from './fetch_events?worker';
-import { seedRelays } from '@/snort_workers/seed_relays';
-import type { Nostr } from 'nostr-tools';
+import { Command, FrontendData, WorkerData } from './types';
+import { execTime, followsFromKind3, getNostrEvent, tagSplits } from './utils';
let workerData = new WorkerData();
let workerDataStore = writable(workerData);
@@ -27,6 +25,7 @@ async function connect() {
}
workerDataStore.subscribe((data) => {
+ let end = execTime("28 workerDataStore.subscribe")
let fed = new FrontendData();
fed.basePubkey = data.ourPubkey();
fed.baseFollows = data._ourFollows;
@@ -54,32 +53,44 @@ workerDataStore.subscribe((data) => {
});
fed.replies = data.replies;
fed.rawEvents = data.events;
- //console.log(data)
postMessage(fed);
+ end()
});
let lengthOfFollows = derived(workerDataStore, ($wds) => {
return $wds._ourFollows.size;
});
+
+let q_subToFollows: QueryLike
lengthOfFollows.subscribe((x) => {
console.log('follows updated');
if (x > 0) {
- PermaSub([...workerData._ourFollows]);
+ const rb = new RequestBuilder('sub-to-follows');
+ rb.withFilter().authors([...workerData._ourFollows]).kinds([1])
+ rb.withOptions({ leaveOpen: true });
+ if (q_subToFollows) {q_subToFollows.cancel()}
+ q_subToFollows = sys.Query(rb);
+ q_subToFollows.on('event', (evs): void => {
+ let m = new Map()
+ for (let e of evs) {
+ m.set(e.id, e)
+ }
+ if (m.size > 0) {
+ updateReplies(m)
+ }
+ })
}
});
//contract:
onmessage = (m: MessageEvent) => {
- console.log(58)
+ let end = execTime("88, onmessage")
if (m.data.command == 'start') {
start(m.data.pubkey)
- .then(() => {})
- .catch((err) => {
- console.log(err);
- });
}
if (m.data.command == 'push_event') {
+ console.log(96)
let map = new Map()
if (m.data.event) {
for (let e of m.data.event) {
@@ -92,6 +103,7 @@ onmessage = (m: MessageEvent) => {
}
}
}
+ end()
};
//connect to seed relays, get our follows and relays.
@@ -168,10 +180,11 @@ async function start(pubkey?: string, pubkeys?: string[]) {
//fetch all missing roots
//sort roots by number of responses from our follows
-let permaSub: Worker | undefined = undefined;
+//let permaSub: Worker | undefined = undefined;
function updateReplies(newEvents?:Map) {
workerDataStore.update((current) => {
+ let end = execTime("updateReplies")
if (newEvents) {
current.events = new Map([...newEvents, ...current.events]);
}
@@ -248,24 +261,29 @@ function updateReplies(newEvents?:Map) {
current.replies.set([...tagsForEvent.replies][0], existing);
}
}
+ end()
return current;
});
}
-async function PermaSub(pubkeys: string[]) {
- if (pubkeys.length > 0) {
- if (permaSub) {
- permaSub.terminate();
- }
- permaSub = new WorkerPubkeys();
- permaSub.onmessage = (x: MessageEvent
- When you click the Marcus button on any note, it will be saved here to your list of personal meditations so that I can remind you to think about them.
+ When you click the Marcus button on any note, it will be saved here to your list of personal meditations so that I can remind you to add them to your life.