feat: rewrite message component

This commit is contained in:
qishaoxuan
2022-07-28 23:42:05 +08:00
parent d5f6ab0bb5
commit 0cce817813
10 changed files with 224 additions and 88 deletions
@@ -0,0 +1,83 @@
import {
NotificationInstance,
type NotificationController,
type NotificationInstanceProps,
type NotificationContent,
type NotificationOption,
type NotificationKey,
} from '../notification';
import {
SuccessMessage,
ErrorMessage,
InfoMessage,
WarningMessage,
} from './MessageContent';
type MessageMethod = (
message: NotificationContent,
option?: Omit<NotificationOption, 'content'>
) => Promise<NotificationKey>;
export class Message {
private _notificationController: NotificationController = null;
private _notificationProps: NotificationInstanceProps = {};
constructor(props: NotificationInstanceProps) {
this._notificationProps = props;
}
private _ensureController() {
if (!this._notificationController) {
NotificationInstance(
this._notificationProps,
notificationController => {
this._notificationController = notificationController;
}
);
}
}
public success: MessageMethod = async (message, option) => {
await this._ensureController();
return this._notificationController.add(message, {
content: (key, message) => (
<SuccessMessage id={key} message={message} />
),
...option,
});
};
public error: MessageMethod = async (message, option) => {
await this._ensureController();
return this._notificationController.add(message, {
content: (key, message) => (
<ErrorMessage id={key} message={message} />
),
...option,
});
};
public warning: MessageMethod = async (message, option) => {
await this._ensureController();
return this._notificationController.add(message, {
content: (key, message) => (
<WarningMessage id={key} message={message} />
),
...option,
});
};
public info: MessageMethod = async (message, option) => {
await this._ensureController();
return this._notificationController.add(message, {
content: (key, message) => (
<InfoMessage id={key} message={message} />
),
...option,
});
};
}