@ant-design/x-sdk
Version:
placeholder for @ant-design/x-sdk
62 lines (58 loc) • 1.87 kB
JavaScript
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);
}
};
}
}