Polymiddleware is Web Chat's unified middleware approach. It allows for deep, cascaded UI customization by enabling you to add, remove, replace, or decorate UI elements. Middleware is passed via a single polymiddleware prop to the ReactWebChat component and operates in a cascading sequence where upstream middleware can influence downstream rendering.
To use it, create an array of middleware functions (often wrapped in specific creators like createActivityPolymiddleware) and pass them to the polymiddleware prop. Use useMemo to ensure the middleware array is stable across re-renders.
function MyChatUI() {
const polymiddleware = useMemo(
() => [
createActivityPolymiddleware(
next => request =>
request.activity.type === 'event'
? // Handle rendering of event activity though <EventActivity activity={request.activity}>
reactComponent(EventActivity, { activity: request.activity })
: // Continue rendering.
next(request)
),
createActivityPolymiddleware(...),
createActivityPolymiddleware(...),
// Handle rendering of error box.
createErrorBoxPolymiddleware(...)
],
[]
);
return (
<ReactWebChat
polymiddleware={polymiddleware}
// ... other props ...
/>
);
}