forked from wangziqi/gongxue-base
fix permissions and teacher attendance workflows
This commit is contained in:
15
apps/admin/src/ui/AppMessageBridge.tsx
Normal file
15
apps/admin/src/ui/AppMessageBridge.tsx
Normal file
@@ -0,0 +1,15 @@
|
||||
import { useEffect } from 'react';
|
||||
import useMessage from 'antd/es/message/useMessage';
|
||||
import { bindMessageApi } from './app-message';
|
||||
|
||||
const AppMessageBridge: React.FC = () => {
|
||||
const [messageApi, contextHolder] = useMessage();
|
||||
|
||||
useEffect(() => {
|
||||
bindMessageApi(messageApi);
|
||||
}, [messageApi]);
|
||||
|
||||
return contextHolder;
|
||||
};
|
||||
|
||||
export default AppMessageBridge;
|
||||
21
apps/admin/src/ui/app-message.integration.test.ts
Normal file
21
apps/admin/src/ui/app-message.integration.test.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import { bindMessageApi, message } from './app-message';
|
||||
|
||||
describe('app message bridge', () => {
|
||||
it('delegates messages to the Ant Design App context instance', () => {
|
||||
const api = {
|
||||
success: vi.fn(),
|
||||
error: vi.fn(),
|
||||
warning: vi.fn(),
|
||||
};
|
||||
bindMessageApi(api as never);
|
||||
|
||||
message.success('保存成功');
|
||||
message.error('保存失败');
|
||||
message.warning('请检查');
|
||||
|
||||
expect(api.success).toHaveBeenCalledWith('保存成功');
|
||||
expect(api.error).toHaveBeenCalledWith('保存失败');
|
||||
expect(api.warning).toHaveBeenCalledWith('请检查');
|
||||
});
|
||||
});
|
||||
20
apps/admin/src/ui/app-message.ts
Normal file
20
apps/admin/src/ui/app-message.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import type { MessageInstance } from 'antd/es/message/interface';
|
||||
|
||||
let messageApi: MessageInstance | undefined;
|
||||
|
||||
export function bindMessageApi(api: MessageInstance): void {
|
||||
messageApi = api;
|
||||
}
|
||||
|
||||
function requireMessageApi(): MessageInstance {
|
||||
if (!messageApi) {
|
||||
throw new Error('Ant Design message API has not been initialized');
|
||||
}
|
||||
return messageApi;
|
||||
}
|
||||
|
||||
export const message: Pick<MessageInstance, 'success' | 'error' | 'warning'> = {
|
||||
success: (...args) => requireMessageApi().success(...args),
|
||||
error: (...args) => requireMessageApi().error(...args),
|
||||
warning: (...args) => requireMessageApi().warning(...args),
|
||||
};
|
||||
Reference in New Issue
Block a user