fix(plugin-notification-manager): fix template compiling (#5630)

This commit is contained in:
Junyi 2024-11-12 09:28:06 +08:00 committed by GitHub
parent ea63b549ff
commit e42c480d85
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 16 additions and 9 deletions

View File

@ -129,8 +129,8 @@ const MessageList = observer(() => {
<Descriptions key={index} column={1}>
<Descriptions.Item label={t('Content')}>
{' '}
<Tooltip title={message.content.length > 100 ? message.content : ''} mouseEnterDelay={0.5}>
{message.content.slice(0, 100) + (message.content.length > 100 ? '...' : '')}{' '}
<Tooltip title={message.content?.length > 100 ? message.content : ''} mouseEnterDelay={0.5}>
{message.content?.slice(0, 100) + (message.content?.length > 100 ? '...' : '')}{' '}
</Tooltip>
</Descriptions.Item>
<Descriptions.Item label={t('Datetime')}>{dayjs(message.receiveTimestamp).fromNow()}</Descriptions.Item>

View File

@ -65,8 +65,8 @@ export default class InAppNotificationChannel extends BaseNotificationChannel {
type: message.type,
data: {
...message.data,
title: message.data.title.slice(0, 30),
content: message.data.content.slice(0, 105),
title: message.data.title?.slice(0, 30) || '',
content: message.data.content?.slice(0, 105) || '',
},
})}\n\n`,
);

View File

@ -39,7 +39,8 @@ export class NotificationManager implements NotificationManager {
async send(params: SendOptions) {
this.plugin.logger.info('receive sending message request', params);
const channelsRepo = this.plugin.app.db.getRepository(COLLECTION_NAME.channels);
const messageData = { ...(params.receivers ? { receivers: params.receivers } : {}), ...params.message };
const message = compile(params.message ?? {}, params.data ?? {});
const messageData = { ...(params.receivers ? { receivers: params.receivers } : {}), ...message };
const logData: any = {
triggerFrom: params.triggerFrom,
channelName: params.channelName,
@ -53,7 +54,7 @@ export class NotificationManager implements NotificationManager {
logData.channelTitle = channel.title;
logData.notificationType = channel.notificationType;
logData.receivers = params.receivers;
const result = await instance.send({ message: params.message, channel, receivers: params.receivers });
const result = await instance.send({ message, channel, receivers: params.receivers });
logData.status = result.status;
logData.reason = result.reason;
} else {
@ -72,11 +73,16 @@ export class NotificationManager implements NotificationManager {
}
async sendToUsers(options: SendUserOptions) {
this.plugin.logger.info(`notificationManager.sendToUsers options: ${JSON.stringify(options)}`);
const { userIds, channels, message: template = {}, data = {} } = options;
const message = compile(template, data);
const { userIds, channels, message, data = {} } = options;
return await Promise.all(
channels.map((channelName) =>
this.send({ channelName, message, triggerFrom: 'sendToUsers', receivers: { value: userIds, type: 'userId' } }),
this.send({
channelName,
message,
data,
triggerFrom: 'sendToUsers',
receivers: { value: userIds, type: 'userId' },
}),
),
);
}

View File

@ -47,6 +47,7 @@ export interface SendOptions {
message: Record<string, any>;
triggerFrom: string;
receivers?: ReceiversOptions;
data?: Record<string, any>;
}
export interface SendUserOptions {