|
|
|
|
@ -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)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|