UNPKG

@river-build/sdk

Version:

For more details, visit the following resources:

57 lines 1.66 kB
import { Observable } from '../../../observable/observable'; export class Threads extends Observable { constructor(initialValue = {}) { super(initialValue); } update(fn) { this.setValue(fn(this.value)); } reset() { this.setValue({}); } get(parentId) { return this.value?.[parentId]; } add(event) { const parentId = event.threadParentId; if (!parentId) { return; } const sorted = [...(this.value[parentId] ?? []), event].sort((a, b) => a.eventNum > b.eventNum ? 1 : -1); this.update((current) => ({ ...current, [parentId]: sorted, })); } remove(event) { const parentId = event.threadParentId; if (!parentId) { return; } const threadEventIndex = this.value[parentId]?.findIndex((e) => e.eventId === event.eventId) ?? -1; if (threadEventIndex === -1) { return; } this.update((current) => ({ ...current, [parentId]: current[parentId] .splice(0, threadEventIndex) .concat(current[parentId].slice(threadEventIndex + 1)), })); } replace(event, eventIndex) { const parentId = event.threadParentId; if (!parentId) { return; } this.update((current) => ({ ...current, [parentId]: [ ...current[parentId].slice(0, eventIndex), event, ...current[parentId].slice(eventIndex + 1), ], })); } } //# sourceMappingURL=threads.js.map