feat: add test notify
This commit is contained in:
parent
b4ab20ad32
commit
4e3fd9db64
@ -61,6 +61,10 @@ export const MonitorInfo: React.FC<MonitorInfoProps> = React.memo((props) => {
|
||||
onSuccess: defaultSuccessHandler,
|
||||
onError: defaultErrorHandler,
|
||||
});
|
||||
const testNotifyScriptMutation = trpc.monitor.testNotifyScript.useMutation({
|
||||
onSuccess: defaultSuccessHandler,
|
||||
onError: defaultErrorHandler,
|
||||
});
|
||||
|
||||
const trpcUtils = trpc.useContext();
|
||||
|
||||
@ -229,6 +233,15 @@ export const MonitorInfo: React.FC<MonitorInfoProps> = React.memo((props) => {
|
||||
label: t('Show Badge'),
|
||||
onClick: () => setShowBadge(true),
|
||||
},
|
||||
{
|
||||
key: 'testNotify',
|
||||
label: t('Test Notify'),
|
||||
onClick: () =>
|
||||
testNotifyScriptMutation.mutateAsync({
|
||||
workspaceId,
|
||||
monitorId,
|
||||
}),
|
||||
},
|
||||
{
|
||||
type: 'divider',
|
||||
},
|
||||
|
@ -33,6 +33,7 @@ import {
|
||||
monitorPublicInfoSchema,
|
||||
} from '../../model/_schema/monitor.js';
|
||||
import { monitorPageManager } from '../../model/monitor/page/manager.js';
|
||||
import { token } from '../../model/notification/token/index.js';
|
||||
|
||||
export const monitorRouter = router({
|
||||
all: workspaceProcedure
|
||||
@ -204,6 +205,29 @@ export const monitorRouter = router({
|
||||
usage: res.usage,
|
||||
};
|
||||
}),
|
||||
testNotifyScript: workspaceAdminProcedure
|
||||
.input(
|
||||
z.object({
|
||||
monitorId: z.string(),
|
||||
})
|
||||
)
|
||||
.output(z.void())
|
||||
.mutation(async ({ input }) => {
|
||||
const { monitorId } = input;
|
||||
const runner = monitorManager.getRunner(monitorId);
|
||||
if (!runner) {
|
||||
throw new Error('This monitor is not running or not existed.');
|
||||
}
|
||||
|
||||
if (runner.monitor.notifications.length === 0) {
|
||||
throw new Error('This monitor not has any notifications.');
|
||||
}
|
||||
|
||||
await runner.notify('Test title', [
|
||||
token.paragraph('Test content'),
|
||||
token.paragraph(`Send from monitor: ${runner.monitor.name}`),
|
||||
]);
|
||||
}),
|
||||
data: workspaceProcedure
|
||||
.meta(
|
||||
buildMonitorOpenapi({
|
||||
|
Loading…
Reference in New Issue
Block a user