UNPKG

stream-chat

Version:

JS SDK for the Stream Chat API

30 lines (27 loc) 1.06 kB
import type { MessageComposer } from '../../messageComposer'; import type { TextComposerMiddlewareExecutorState } from './TextComposerMiddlewareExecutor'; import type { Suggestion } from './types'; import type { Middleware } from '../../../middleware'; export type TextComposerPreValidationMiddleware = Middleware< TextComposerMiddlewareExecutorState<Suggestion>, 'onChange' | 'onSuggestionItemSelect' >; export const createTextComposerPreValidationMiddleware = ( composer: MessageComposer, ): TextComposerPreValidationMiddleware => ({ id: 'stream-io/text-composer/pre-validation-middleware', handlers: { onChange: ({ state, next, forward }) => { const { maxLengthOnEdit } = composer.config.text ?? {}; if (typeof maxLengthOnEdit === 'number' && state.text.length > maxLengthOnEdit) { state.text = state.text.slice(0, maxLengthOnEdit); return next({ ...state, text: state.text, }); } return forward(); }, onSuggestionItemSelect: ({ forward }) => forward(), }, });