Browse Source

Allow bookmark observers

master
buttercat1791 9 months ago
parent
commit
80c7514489
  1. 19
      src/lib/data_structures/publication_tree.ts

19
src/lib/data_structures/publication_tree.ts

@ -61,9 +61,11 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -61,9 +61,11 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
*/
#ndk: NDK;
#onNodeAddedCallbacks: Array<(address: string) => void> = [];
#nodeAddedObservers: Array<(address: string) => void> = [];
#onNodeResolvedCallbacks: Array<(address: string) => void> = [];
#nodeResolvedObservers: Array<(address: string) => void> = [];
#bookmarkMovedObservers: Array<(address: string) => void> = [];
constructor(rootEvent: NDKEvent, ndk: NDK) {
const rootAddress = rootEvent.tagAddress();
@ -195,11 +197,16 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -195,11 +197,16 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
*/
setBookmark(address: string) {
this.#bookmark = address;
this.#bookmarkMovedObservers.forEach(observer => observer(address));
this.#cursor.tryMoveTo(address);
}
onBookmarkMoved(observer: (address: string) => void) {
this.#bookmarkMovedObservers.push(observer);
}
onNodeAdded(observer: (address: string) => void) {
this.#onNodeAddedCallbacks.push(observer);
this.#nodeAddedObservers.push(observer);
}
/**
@ -209,7 +216,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -209,7 +216,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
* @param observer The observer function.
*/
onNodeResolved(observer: (address: string) => void) {
this.#onNodeResolvedCallbacks.push(observer);
this.#nodeResolvedObservers.push(observer);
}
// #region Iteration Cursor
@ -560,7 +567,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -560,7 +567,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
parentNode.children!.push(lazyNode);
this.#nodes.set(address, lazyNode);
this.#onNodeAddedCallbacks.forEach(observer => observer(address));
this.#nodeAddedObservers.forEach(observer => observer(address));
}
/**
@ -614,7 +621,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> { @@ -614,7 +621,7 @@ export class PublicationTree implements AsyncIterable<NDKEvent | null> {
}
// TODO: We may need to move this to `#addNode`, so the observer is notified more eagerly.
this.#onNodeResolvedCallbacks.forEach(observer => observer(address));
this.#nodeResolvedObservers.forEach(observer => observer(address));
return node;
}

Loading…
Cancel
Save