UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

75 lines (73 loc) 1.83 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.XAgent = void 0; exports.default = useXAgent; var _react = _interopRequireDefault(require("react")); var _xRequest = _interopRequireDefault(require("../x-request")); let uuid = 0; /** This is a wrap class to avoid developer can get too much on origin object */ class XAgent { config; requestingMap = {}; constructor(config) { this.config = config; } finishRequest(id) { delete this.requestingMap[id]; } request = (info, callbacks) => { const { request } = this.config; const { onUpdate, onSuccess, onError } = callbacks; const id = uuid; uuid += 1; this.requestingMap[id] = true; request?.(info, { // Status should be unique. // One get success or error should not get more message onUpdate: message => { if (this.requestingMap[id]) { onUpdate(message); } }, onSuccess: message => { if (this.requestingMap[id]) { onSuccess(message); this.finishRequest(id); } }, onError: error => { if (this.requestingMap[id]) { onError(error); this.finishRequest(id); } } }); }; isRequesting() { return Object.keys(this.requestingMap).length > 0; } } exports.XAgent = XAgent; function useXAgent(config) { const { request, ...restConfig } = config; return _react.default.useMemo(() => [new XAgent({ request: request || (0, _xRequest.default)({ baseURL: restConfig.baseURL, model: restConfig.model, dangerouslyApiKey: restConfig.dangerouslyApiKey }).create, ...restConfig })], []); }