|
|
/**
|
|
|
* 同步加载的代码
|
|
|
* 用于导出常见的模块依赖
|
|
|
*/
|
|
|
|
|
|
import _pick from 'lodash/pick';
|
|
|
export * from './reg';
|
|
|
export * from './context';
|
|
|
export { useGroupPanelParams } from '@/routes/Main/Content/Group/utils';
|
|
|
|
|
|
/**
|
|
|
* @deprecated 从component引用
|
|
|
*/
|
|
|
export {
|
|
|
openModal,
|
|
|
closeModal,
|
|
|
ModalWrapper,
|
|
|
useModalContext,
|
|
|
openConfirmModal,
|
|
|
openReconfirmModal,
|
|
|
} from '@/components/Modal';
|
|
|
export { Loadable } from '@/components/Loadable';
|
|
|
export { useIsMobile } from '@/hooks/useIsMobile';
|
|
|
export {
|
|
|
getGlobalState,
|
|
|
useGlobalSocketEvent,
|
|
|
} from '@/utils/global-state-helper';
|
|
|
export { setUserJWT, getJWTUserInfo } from '@/utils/jwt-helper';
|
|
|
export { dataUrlToFile } from '@/utils/file-helper';
|
|
|
export {
|
|
|
urlSearchStringify,
|
|
|
urlSearchParse,
|
|
|
appendUrlSearch,
|
|
|
} from '@/utils/url-helper';
|
|
|
export { getServiceWorkerRegistration } from '@/utils/sw-helper';
|
|
|
export { postMessageEvent } from '@/utils/event-helper';
|
|
|
import {
|
|
|
/**
|
|
|
* 注意: Tailchat 内部的request不会被导出为插件可用模块,如果需要网络请求的话请自行import axios(以作为复用依赖)
|
|
|
* 因为有内置中间件逻辑
|
|
|
*/
|
|
|
request,
|
|
|
RequestConfig,
|
|
|
useUserInfo,
|
|
|
} from 'tailchat-shared';
|
|
|
export {
|
|
|
getServiceUrl,
|
|
|
getCachedUserInfo,
|
|
|
getCachedConverseInfo,
|
|
|
getCachedBaseGroupInfo,
|
|
|
getCachedUserSettings,
|
|
|
localTrans,
|
|
|
getLanguage,
|
|
|
sharedEvent,
|
|
|
useAsync,
|
|
|
useAsyncFn,
|
|
|
useAsyncRefresh,
|
|
|
useAsyncRequest,
|
|
|
useEvent,
|
|
|
uploadFile,
|
|
|
showToasts,
|
|
|
showSuccessToasts,
|
|
|
showErrorToasts,
|
|
|
fetchAvailableServices,
|
|
|
isValidStr,
|
|
|
useGroupPanelInfo,
|
|
|
sendMessage,
|
|
|
showMessageTime,
|
|
|
joinArray,
|
|
|
useConverseMessageContext,
|
|
|
loginWithToken,
|
|
|
} from 'tailchat-shared';
|
|
|
|
|
|
export { navigate } from '@/components/AppRouterApi';
|
|
|
export { useLocation, useNavigate } from 'react-router';
|
|
|
|
|
|
export {
|
|
|
/**
|
|
|
* @deprecated please use createMetaFormSchema from @capital/component
|
|
|
*/
|
|
|
createMetaFormSchema as createFastFormSchema,
|
|
|
/**
|
|
|
* @deprecated please use metaFormFieldSchema from @capital/component
|
|
|
*/
|
|
|
metaFormFieldSchema as fieldSchema,
|
|
|
getTextColorHex,
|
|
|
} from 'tailchat-design';
|
|
|
|
|
|
/**
|
|
|
* 插件版本的useUserInfo
|
|
|
*/
|
|
|
export function useCurrentUserInfo() {
|
|
|
const userInfo = useUserInfo();
|
|
|
|
|
|
return _pick(userInfo, ['email', 'nickname', 'discriminator', 'avatar']);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 处理axios的request config
|
|
|
*
|
|
|
* 为了防止用户的jwt因为请求被传递到其他地方
|
|
|
*/
|
|
|
function purgeRequestConfig(config?: RequestConfig) {
|
|
|
if (!config) {
|
|
|
return undefined;
|
|
|
}
|
|
|
|
|
|
return _pick(config, [
|
|
|
'transformRequest',
|
|
|
'transformResponse',
|
|
|
'headers',
|
|
|
'params',
|
|
|
'data',
|
|
|
'timeout',
|
|
|
'withCredentials',
|
|
|
'xsrfCookieName',
|
|
|
'xsrfHeaderName',
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 插件仅可以通过这种方式进行网络请求发送
|
|
|
*/
|
|
|
export function createPluginRequest(pluginName: string) {
|
|
|
return {
|
|
|
get(actionName: string, config?: RequestConfig) {
|
|
|
return request.get(
|
|
|
`/api/plugin:${pluginName}/${actionName.replace(/\./g, '/')}`,
|
|
|
purgeRequestConfig(config)
|
|
|
);
|
|
|
},
|
|
|
post(actionName: string, data?: any, config?: RequestConfig) {
|
|
|
return request.post(
|
|
|
`/api/plugin:${pluginName}/${actionName.replace(/\./g, '/')}`,
|
|
|
data,
|
|
|
purgeRequestConfig(config)
|
|
|
);
|
|
|
},
|
|
|
};
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 发起一个网络请求
|
|
|
*
|
|
|
* 与上面的相比,是不限定在plugin中的
|
|
|
*/
|
|
|
export function postRequest(url: string, data?: any, config?: RequestConfig) {
|
|
|
return request.post(`/api${url}`, data, purgeRequestConfig(config));
|
|
|
}
|