UNPKG

remix-nlux

Version:

Remix IDE NLUX integration. Remix IDE is the leading IDE for building and deploying smart contracts on Ethereum. NLUX is a JavaScript and React library for building conversational AI experiences.

53 lines (47 loc) 1.64 kB
import {ChatSegment} from '../../../types/chatSegment/chatSegment'; import {ChatSegmentErrorCallback, ChatSegmentEventsMap} from '../../../types/chatSegment/chatSegmentEvents'; import {ChatSegmentObservable} from '../../../types/chatSegment/chatSegmentObservable'; import {NLErrorId} from '../../../types/exceptions/errors'; import {uid} from '../../../utils/uid'; import {triggerAsyncCallback} from './triggerAsyncCallback'; export const createEmptyErrorSegment = <AiMsg>( errorId: NLErrorId, ): { segment: ChatSegment<AiMsg>, dataTransferMode: 'stream', observable: ChatSegmentObservable<AiMsg>, } => { const errorListeners = new Set< ChatSegmentEventsMap<AiMsg>['error'] >(); const segmentId = uid(); const segment: ChatSegment<AiMsg> = { uid: segmentId, status: 'error', items: [], }; triggerAsyncCallback(() => { errorListeners.forEach((listener) => listener(errorId)); errorListeners.clear(); }); return { segment, dataTransferMode: 'stream', observable: { on: (event, callback) => { if (event === 'error') { errorListeners.add(callback as unknown as ChatSegmentErrorCallback); } }, removeListener: (event, callback) => { errorListeners.delete(callback as unknown as ChatSegmentErrorCallback); }, destroy: () => { errorListeners.clear(); }, get segmentId(): string { return segmentId; }, }, }; };