@plteam/chat-ui
Version:
CUI Kit is a free and open-source library for creating AI assistant chat interfaces, built with React, Material UI, and TypeScript
33 lines (32 loc) • 1.46 kB
JavaScript
import * as React from 'react';
import { AdapterModel } from '../../models/AdapterModel';
/**
* @deprecated - We abandoned (perhaps temporarily) React Context because it created unnecessary renders and slowed down the chat
*/
const AdapterContext = React.createContext({
transformThread: (thread) => thread,
});
const useAdapterContext = () => {
return React.useMemo(() => ({
transformMessage: AdapterModel.transformMessage,
transformThread: AdapterModel.transformThread ?? AdapterModel.baseThreadTransformer,
reverseMessageTransforming: AdapterModel.reverseMessageTransforming,
}), [AdapterModel.version]);
};
/**
* A custom hook that provides a function to reverse transform a message using the
* `reverseMessageTransforming` function from the adapter context.
*
* The returned callback function takes a message model as input and applies the
* reverse transformation to the `data` property of the message if the
* `reverseMessageTransforming` function is available in the adapter context.
* If not, it returns the `data` property of the message as-is.
*
*/
export const useInternalMessageTransformer = () => {
const { reverseMessageTransforming } = useAdapterContext();
return React.useCallback((message) => {
return reverseMessageTransforming?.(message.data) ?? message.data;
}, [reverseMessageTransforming]);
};
export { AdapterContext, useAdapterContext };