diff --git a/src/snek/static/app.js b/src/snek/static/app.js index 7ddc9e8..b04e8fb 100644 --- a/src/snek/static/app.js +++ b/src/snek/static/app.js @@ -263,10 +263,12 @@ class NotificationAudio { this.schedule = new Schedule(timeout); } - sounds = [ - "/audio/soundfx.d_beep3.mp3", - "/audio/mention1.wav" - ]; + sounds = { + "message": "/audio/soundfx.d_beep3.mp3", + "mention": "/audio/750607__deadrobotmusic__notification-sound-1.wav", + "messageOtherChannel": "/audio/750608__deadrobotmusic__notification-sound-2.wav", + "ping": "/audio/750609__deadrobotmusic__notification-sound-3.wav", + } play(soundIndex = 0) { this.schedule.delay(() => { diff --git a/src/snek/static/audio/750607__deadrobotmusic__notification-sound-1.wav b/src/snek/static/audio/750607__deadrobotmusic__notification-sound-1.wav new file mode 100644 index 0000000..640937d Binary files /dev/null and b/src/snek/static/audio/750607__deadrobotmusic__notification-sound-1.wav differ diff --git a/src/snek/static/audio/750608__deadrobotmusic__notification-sound-2.wav b/src/snek/static/audio/750608__deadrobotmusic__notification-sound-2.wav new file mode 100644 index 0000000..ff5347c Binary files /dev/null and b/src/snek/static/audio/750608__deadrobotmusic__notification-sound-2.wav differ diff --git a/src/snek/static/audio/750609__deadrobotmusic__notification-sound-3.wav b/src/snek/static/audio/750609__deadrobotmusic__notification-sound-3.wav new file mode 100644 index 0000000..0334845 Binary files /dev/null and b/src/snek/static/audio/750609__deadrobotmusic__notification-sound-3.wav differ diff --git a/src/snek/templates/web.html b/src/snek/templates/web.html index 4d50b0f..fb935c8 100644 --- a/src/snek/templates/web.html +++ b/src/snek/templates/web.html @@ -116,19 +116,32 @@ setInterval(updateTimes, 1000); - function isMention(message){ + function isMentionToMe(message){ const mentionText = '@{{ user.username.value }}'; return message.toLowerCase().includes(mentionText); } + function extractMentions(message) { + return [...new Set(message.match(/@\w+/g) || [])]; + } + function isMentionForSomeoneElse(message){ + const mentions = extractMentions(message); + const mentionText = '@{{ user.username.value }}'; + return mentions.length > 0 && mentions.indexOf(mentionText) == -1; + } app.addEventListener("channel-message", (data) => { - if (data.channel_uid !== channelUid) return; - + if (data.channel_uid !== channelUid) { + if(!isMentionForSomeoneElse(data.message)){ + app.playSound("messageOtherChannel"); + } + + return; + } if (data.username !== "{{ user.username.value }}") { - if(isMention(data.message)){ - app.playSound(1); - }else{ - app.playSound(0); + if(isMentionToMe(data.message)){ + app.playSound("mention"); + }else if (!isMentionForSomeoneElse(data.message)){ + app.playSound("message"); } }