51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
/**
|
||
* 带主题等上下文的、可全局使用的message api
|
||
* toco-ui/antd 组件库的message无法直接全局使用,主题上下文会丢失
|
||
*/
|
||
import { message as tocoMessage } from '@toco-design/components';
|
||
|
||
type Message = ReturnType<typeof tocoMessage.useMessage>[0];
|
||
|
||
class GlobalMessage {
|
||
private static instance: GlobalMessage;
|
||
private message: Message;
|
||
|
||
private constructor() {
|
||
this.message = tocoMessage;
|
||
}
|
||
|
||
public static getInstance(): GlobalMessage {
|
||
if (!GlobalMessage.instance) {
|
||
GlobalMessage.instance = new GlobalMessage();
|
||
}
|
||
return GlobalMessage.instance;
|
||
}
|
||
|
||
public setMessage(message: Message) {
|
||
this.message = message;
|
||
}
|
||
|
||
public success(content: string, duration?: number, onClose?: () => void) {
|
||
this.message.success(content, duration, onClose);
|
||
}
|
||
|
||
public error(content: string, duration?: number, onClose?: () => void) {
|
||
this.message.error(content, duration, onClose);
|
||
}
|
||
|
||
public info(content: string, duration?: number, onClose?: () => void) {
|
||
this.message.info(content, duration, onClose);
|
||
}
|
||
|
||
public warning(content: string, duration?: number, onClose?: () => void) {
|
||
this.message.warning(content, duration, onClose);
|
||
}
|
||
|
||
public loading(content: string, duration?: number, onClose?: () => void) {
|
||
this.message.loading(content, duration, onClose);
|
||
}
|
||
}
|
||
|
||
const globalMessage = GlobalMessage.getInstance();
|
||
export default globalMessage;
|