@cainiaofe/cn-ui-m
Version:
61 lines (60 loc) • 2.54 kB
JavaScript
import { __assign, __rest } from "tslib";
import $i18n from "../../locales/i18n";
import React from 'react';
import { getRequestService, CnUploadContext, defaultCnUploadRequestConfig, } from '@cainiaofe/cn-ui-common';
import { getErrorMsg } from '@cainiaofe/cn-ui-utils';
import { CnMessage } from "../cn-message";
import { UploadView } from './components/upload';
export var OSSUpload = React.forwardRef(function (props, ref) {
var service = props.service, requestConfig = props.requestConfig, onErrorProps = props.onError, placeholder = props.placeholder, uploadConfirm = props.uploadConfirm, restProps = __rest(props, ["service", "requestConfig", "onError", "placeholder", "uploadConfirm"]);
var fetchOSSToken = function (params) {
var _a;
var getRequestConfig = function () {
// 标准逻辑
if (requestConfig)
return requestConfig;
// start 兼容逻辑
var _service = service;
if (_service) {
// 自定义函数
if (typeof _service === 'function') {
return { service: _service };
}
// requestConfig 配置
return _service;
}
// end 兼容逻辑
return defaultCnUploadRequestConfig;
};
return (_a = getRequestService(getRequestConfig())) === null || _a === void 0 ? void 0 : _a(params);
};
/**
* 组件内部主动通过 CnMessage.error 暴露错误内容
*/
var onError = function (file) {
var error = file.error;
if (!error)
return;
var result = onErrorProps === null || onErrorProps === void 0 ? void 0 : onErrorProps(error, file);
if (result === false)
return;
var msg = getErrorMsg(error, file.errorMsg ||
$i18n.get({
id: 'OssCredentialAcquisitionFailed',
dm: 'OSS凭证获取失败',
}));
CnMessage.error({ content: msg });
};
return (React.createElement(CnUploadContext, __assign({}, restProps, { onError: onError, fetchOSSToken: fetchOSSToken }),
React.createElement(UploadView, __assign({ ref: ref, placeholder: placeholder, uploadConfirm: uploadConfirm }, restProps))));
});
OSSUpload.defaultProps = {
headers: {},
multiple: false,
readOnly: false,
showPreview: true,
showRemove: true,
showDownload: true,
openFileDialogOnClick: true,
};
OSSUpload.displayName = 'CnOSSUpload';