UNPKG

@ant-design/x-sdk

Version:

placeholder for @ant-design/x-sdk

62 lines (58 loc) 1.87 kB
export default class AbstractChatProvider { _request; _getMessagesFn; _originalCallbacks; get request() { return this._request; } constructor(config) { const request = typeof config.request === 'function' ? config.request() : config.request; if (!request.manual) { throw new Error('request must be manual'); } this._request = request; this._originalCallbacks = this._request.options?.callbacks; } /** * 转换onRequest传入的参数,你可以和Provider实例化时request配置中的params进行合并或者额外处理 * @param requestParams 请求参数 * @param options 请求配置,从Provider实例化时request配置中来 */ /** * 将onRequest传入的参数转换为本地(用户发送)的ChatMessage,用于消息渲染 * @param requestParams onRequest传入的参数 */ /** * 可在更新返回数据时对messages做转换,同时会更新到messages * @param info */ getMessages() { return this?._getMessagesFn(); } injectGetMessages(getMessages) { this._getMessagesFn = getMessages; } injectRequest({ onUpdate, onSuccess, onError }) { const originalOnUpdate = this._originalCallbacks?.onUpdate; const originalOnSuccess = this._originalCallbacks?.onSuccess; const originalOnError = this._originalCallbacks?.onError; this._request.options.callbacks = { onUpdate: (data, responseHeaders) => { onUpdate(data, responseHeaders); if (originalOnUpdate) originalOnUpdate(data, responseHeaders); }, onSuccess: (data, responseHeaders) => { onSuccess(data, responseHeaders); if (originalOnSuccess) originalOnSuccess(data, responseHeaders); }, onError: error => { onError(error); if (originalOnError) originalOnError(error); } }; } }