diff options
Diffstat (limited to 'src/web/app/desktop')
| -rw-r--r-- | src/web/app/desktop/script.js | 43 | ||||
| -rw-r--r-- | src/web/app/desktop/scripts/stream.js | 40 |
2 files changed, 41 insertions, 42 deletions
diff --git a/src/web/app/desktop/script.js b/src/web/app/desktop/script.js index b3691f7ff2..6beba44ffa 100644 --- a/src/web/app/desktop/script.js +++ b/src/web/app/desktop/script.js @@ -11,11 +11,12 @@ import * as riot from 'riot'; import init from '../init'; import route from './router'; import fuckAdBlock from './scripts/fuck-ad-block'; +import getPostSummary from '../common/scripts/get-post-summary'; /** * init */ -init(me => { +init(async (me, stream) => { /** * Fuck AD Block */ @@ -27,10 +28,48 @@ init(me => { if ('Notification' in window) { // 許可を得ていなかったらリクエスト if (Notification.permission == 'default') { - Notification.requestPermission(); + await Notification.requestPermission(); + } + + if (Notification.permission == 'granted') { + registerNotifications(stream); } } // Start routing route(me); }); + +function registerNotifications(stream) { + stream.on('drive_file_created', file => { + const n = new Notification('ファイルがアップロードされました', { + body: file.name, + icon: file.url + '?thumbnail&size=64' + }); + setTimeout(n.close.bind(n), 5000); + }); + + stream.on('mention', post => { + const n = new Notification(`${post.user.name}さんから:`, { + body: getPostSummary(post), + icon: post.user.avatar_url + '?thumbnail&size=64' + }); + setTimeout(n.close.bind(n), 6000); + }); + + stream.on('reply', post => { + const n = new Notification(`${post.user.name}さんから返信:`, { + body: getPostSummary(post), + icon: post.user.avatar_url + '?thumbnail&size=64' + }); + setTimeout(n.close.bind(n), 6000); + }); + + stream.on('quote', post => { + const n = new Notification(`${post.user.name}さんが引用:`, { + body: getPostSummary(post), + icon: post.user.avatar_url + '?thumbnail&size=64' + }); + setTimeout(n.close.bind(n), 6000); + }); +} diff --git a/src/web/app/desktop/scripts/stream.js b/src/web/app/desktop/scripts/stream.js deleted file mode 100644 index b86be4cbd5..0000000000 --- a/src/web/app/desktop/scripts/stream.js +++ /dev/null @@ -1,40 +0,0 @@ -const stream = require('../../common/scripts/stream'); -const getPostSummary = require('../../common/scripts/get-post-summary'); - -module.exports = me => { - const s = stream(me); - - s.event.on('drive_file_created', file => { - const n = new Notification('ファイルがアップロードされました', { - body: file.name, - icon: file.url + '?thumbnail&size=64' - }); - setTimeout(n.close.bind(n), 5000); - }); - - s.event.on('mention', post => { - const n = new Notification(`${post.user.name}さんから:`, { - body: getPostSummary(post), - icon: post.user.avatar_url + '?thumbnail&size=64' - }); - setTimeout(n.close.bind(n), 6000); - }); - - s.event.on('reply', post => { - const n = new Notification(`${post.user.name}さんから返信:`, { - body: getPostSummary(post), - icon: post.user.avatar_url + '?thumbnail&size=64' - }); - setTimeout(n.close.bind(n), 6000); - }); - - s.event.on('quote', post => { - const n = new Notification(`${post.user.name}さんが引用:`, { - body: getPostSummary(post), - icon: post.user.avatar_url + '?thumbnail&size=64' - }); - setTimeout(n.close.bind(n), 6000); - }); - - return s; -}; |