Add sound on incoming invites (#400)
authorAjay Bura <32841439+ajbura@users.noreply.github.com>
Sat, 19 Mar 2022 13:25:57 +0000 (18:55 +0530)
committerGitHub <noreply@github.com>
Sat, 19 Mar 2022 13:25:57 +0000 (18:55 +0530)
* Add invite sound

Signed-off-by: Ajay Bura <ajbura@gmail.com>
* Add credits

Signed-off-by: Ajay Bura <ajbura@gmail.com>
* Change invite sound to google material

public/sound/invite.ogg [new file with mode: 0755]
src/client/state/Notifications.js

diff --git a/public/sound/invite.ogg b/public/sound/invite.ogg
new file mode 100755 (executable)
index 0000000..4a00af6
Binary files /dev/null and b/public/sound/invite.ogg differ
index 7bcd95061fd9b819b38b2df0bd5718e78cc1a722..963385262b2469a4e6d89988e295d3146c68ff82 100644 (file)
@@ -7,6 +7,7 @@ import navigation from './navigation';
 import settings from './settings';
 
 import NotificationSound from '../../../public/sound/notification.ogg';
+import InviteSound from '../../../public/sound/invite.ogg';
 
 function isNotifEvent(mEvent) {
   const eType = mEvent.getType();
@@ -222,21 +223,28 @@ class Notifications extends EventEmitter {
         silent: settings.isNotificationSounds,
       });
       if (settings.isNotificationSounds) {
-        noti.onshow = () => this._playNotiSounds();
+        noti.onshow = () => this._playNotiSound();
       }
       noti.onclick = () => selectRoom(room.roomId, mEvent.getId());
     } else {
-      this._playNotiSounds();
+      this._playNotiSound();
     }
   }
 
-  _playNotiSounds() {
+  _playNotiSound() {
     if (!this._notiAudio) {
       this._notiAudio = new Audio(NotificationSound);
     }
     this._notiAudio.play();
   }
 
+  _playInviteSound() {
+    if (!this._inviteAudio) {
+      this._inviteAudio = new Audio(InviteSound);
+    }
+    this._inviteAudio.play();
+  }
+
   _listenEvents() {
     this.matrixClient.on('Room.timeline', (mEvent, room) => {
       if (room.isSpaceRoom()) return;
@@ -316,6 +324,9 @@ class Notifications extends EventEmitter {
       if (membership === 'leave' && this.hasNoti(room.roomId)) {
         this.deleteNoti(room.roomId);
       }
+      if (membership === 'invite') {
+        this._playInviteSound();
+      }
     });
   }
 }