You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/web/plugins/com.msgbyte.notify/src/index.ts

37 lines
968 B
TypeScript

import {
regSocketEventListener,
getGlobalState,
getCachedUserInfo,
} from '@capital/common';
if (Notification.permission === 'default') {
Notification.requestPermission();
}
regSocketEventListener({
eventName: 'chat.message.add',
eventFn: (message) => {
const currentUserId = getGlobalState()?.user.info._id;
if (currentUserId !== message.author) {
// 创建通知
// TODO: 需要增加所在群组
if (Notification.permission === 'granted') {
Promise.all([getCachedUserInfo(currentUserId)]).then(([userInfo]) => {
console.log(userInfo, message);
const nickname = userInfo?.nickname ?? '';
const icon = userInfo?.avatar ?? undefined;
const content = message.content;
new Notification(`来自 ${nickname}`, {
body: content,
icon,
tag: 'tailchat-message',
renotify: true,
});
});
}
}
},
});