UNPKG

@convo-lang/convo-lang

Version:
35 lines 1.01 kB
import { aryDuplicateRemoveItem } from "@iyio/common"; import { BehaviorSubject } from "rxjs"; /** * A ConvoRoom contains 1 or more conversations and allows conversations to interact with each * other */ export class ConvoRoom { constructor() { this._state = new BehaviorSubject({ conversations: [], lookup: {} }); } get stateSubject() { return this._state; } get state() { return this._state.value; } addConversation(convo) { this._state.next(createState([...this._state.value.conversations, convo])); } removeConversation(convo) { this._state.next(createState(aryDuplicateRemoveItem(this._state.value.conversations, convo))); } } const createState = (conversations) => { const lookup = {}; for (const c of conversations) { if (lookup[c.name] === undefined) { lookup[c.name] = c; } } return { conversations, lookup, }; }; //# sourceMappingURL=ConvoRoom.js.map