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.
Hydro/packages/ui-default/components/message/index.page.js

50 lines
1.5 KiB
JavaScript

import { AutoloadPage } from 'vj/misc/Page';
import { InfoDialog } from 'vj/components/dialog';
import Notification from 'vj/components/notification';
import { FLAG_ALERT } from 'vj/constant/message';
import i18n from 'vj/utils/i18n';
import tpl from 'vj/utils/tpl';
const messagePage = new AutoloadPage('messagePage', () => {
async function init() {
if (UserContext.unreadMsg) {
new Notification({
type: 'info',
message: i18n('You have mew message.'),
action: () => window.open('/home/messages', '_blank'),
}).show();
}
const { default: SockJs } = await import('../socket');
const sock = new SockJs('/home/messages-conn');
sock.onmessage = (message) => {
const msg = JSON.parse(message.data);
console.log('Received message', msg);
if (msg.mdoc.flag & FLAG_ALERT) {
// Is alert
new InfoDialog({
$body: tpl`
<div class="typo">
<p>${i18n('Message from {0}:', msg.mdoc.from)}</p>
<p>${i18n(msg.mdoc.content)}</p>
</div>`,
}).open();
} else {
// Is message
new Notification({
title: msg.udoc.uname,
avatar: msg.udoc.gravatar_url,
message: msg.mdoc.content,
duration: 15000,
action: () => window.open(`/home/messages?uid=${msg.udoc._id}`, '_blank'),
}).show();
}
};
}
if (UserContext._id !== 0) init();
});
export default messagePage;