Browse Source

Make adding a node observable

master
buttercat1791 10 months ago
parent
commit
34942c5046
  1. 8
      src/lib/data_structures/publication_tree.ts

8
src/lib/data_structures/publication_tree.ts

@ -52,6 +52,8 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -52,6 +52,8 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
*/
#ndk: NDK;
#onNodeAddedCallbacks: Array<(address: string) => void> = [];
#onNodeResolvedCallbacks: Array<(address: string) => void> = [];
constructor(rootEvent: NDKEvent, ndk: NDK) {
@ -187,6 +189,10 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -187,6 +189,10 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
this.#cursor.tryMoveTo(address);
}
onNodeAdded(observer: (address: string) => void) {
this.#onNodeAddedCallbacks.push(observer);
}
/**
* Registers an observer function that is invoked whenever a new node is resolved. Nodes are
* added lazily.
@ -479,6 +485,8 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -479,6 +485,8 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
const lazyNode = new Lazy<PublicationTreeNode>(() => this.#resolveNode(address, parentNode));
parentNode.children!.push(lazyNode);
this.#nodes.set(address, lazyNode);
this.#onNodeAddedCallbacks.forEach(observer => observer(address));
}
/**

Loading…
Cancel
Save