(message: any)
| 30 | } |
| 31 | |
| 32 | function onMessage(message: any) { |
| 33 | broadcastMsg({ type: 'message', payload: message }); |
| 34 | let acked = false; |
| 35 | let payload = message; |
| 36 | ack[message.mdoc._id] = () => { acked = true; }; |
| 37 | ack[`${message.mdoc._id}-i18n`] = (v) => { payload = v; }; |
| 38 | if (message.mdoc.flag & FLAG_I18N) broadcastMsg({ type: 'i18n', payload: message }); |
| 39 | setTimeout(() => { |
| 40 | delete ack[message.mdoc._id]; |
| 41 | delete ack[`${message.mdoc._id}-i18n`]; |
| 42 | if (acked) return; |
| 43 | if (message.mdoc.flag & FLAG_INFO) return; |
| 44 | if (Notification?.permission !== 'granted') { |
| 45 | console.log('Notification permission denied'); |
| 46 | return; |
| 47 | } |
| 48 | console.log('Sending as system notification'); |
| 49 | // eslint-disable-next-line no-new |
| 50 | new Notification( |
| 51 | payload.udoc._id === 1 ? payload.mdoc.content.split('\n')[0] : payload.udoc.uname || 'Hydro Notification', |
| 52 | payload.udoc._id === 1 ? { |
| 53 | tag: `notification-${payload.mdoc._id}`, |
| 54 | icon: payload.mdoc.avatar || '/android-chrome-192x192.png', |
| 55 | body: payload.mdoc.content.split('\n').slice(1).join('\n'), |
| 56 | } : { |
| 57 | tag: `message-${payload.mdoc._id}`, |
| 58 | icon: payload.udoc.avatarUrl || '/android-chrome-192x192.png', |
| 59 | body: payload.mdoc.content, |
| 60 | }, |
| 61 | ); |
| 62 | }, 3000); |
| 63 | } |
| 64 | |
| 65 | function initConn(path: string, port: MessagePort, cookie: any) { |
| 66 | ports.add(port); |
no test coverage detected