Messages now play notification sounds.

This commit is contained in:
rainbow napkin 2025-10-06 21:21:54 -04:00
parent 976e157cf1
commit e85fb18ce5
3 changed files with 51 additions and 2 deletions

View file

@ -37,6 +37,11 @@ class pmPanel extends panelObj{
*/
this.uuid = crypto.randomUUID();
/**
* PM TX Sound
*/
this.txSound = '/nonfree/imsend.ogg';
//Tell PMHandler to start tracking this panel
this.client.pmHandler.panelList.set(this.uuid, null);
@ -131,6 +136,10 @@ class pmPanel extends panelObj{
//Send message out to server
this.client.pmSocket.emit("pm", preprocessedMessage);
if(localStorage.getItem('txPMSound') == 'true'){
utils.ux.playSound(this.txSound);
}
}
//Clear our prompt
@ -247,6 +256,13 @@ class pmPanel extends panelObj{
* @param {Object} message - Message to render
*/
renderMessage(message){
//If we have an empty message
console.log(message);
if(message.msg == null || message.msg == ''){
//BAIL!!
return;
}
//Run postprocessing functions on chat message
const postprocessedMessage = client.chatBox.chatPostprocessor.postprocess(message, true);

View file

@ -43,6 +43,21 @@ class pmHandler{
*/
this.panelList = new Map();
/**
* PM RX Sound
*/
this.rxSound = '/nonfree/imrecv.ogg';
/**
* Open Sesh Sound
*/
this.openSeshSound = '/nonfree/opensesh.ogg';
/**
* End Sesh Sound
*/
this.endSeshSound = '/nonfree/closesesh.ogg';
this.defineListeners();
this.setupInput();
}
@ -118,17 +133,30 @@ class pmHandler{
//Generate a new sesh
const sesh = new pmSesh(data, client);
//Notify user of new message/sesh
this.handlePing();
this.handlePing((data.msg == '' || data.msg == null));
//Add it to the sesh list
this.seshList.set(sesh.id, sesh);
}
//If this isn't an empty message (sesh-starter), and PM's always make noise, and we didn't send the message
if(data.msg != '' && data.msg != null && localStorage.getItem('rxPMSound') == 'all' && data.user != this.client.user.user){
//make sum noize!
utils.ux.playSound(this.rxSound);
}
}
handlePing(){
handlePing(newSesh = false){
//Light up the icon
this.pmIcon.classList.add('positive-low');
if(newSesh && (localStorage.getItem('newSeshSound') == 'true')){
utils.ux.playSound(this.openSeshSound);
}else if(localStorage.getItem('rxPMSound') == 'unread'){
utils.ux.playSound(this.rxSound);
}
}
//Handles UI updates after reading all messages

View file

@ -297,6 +297,11 @@ class canopyUXUtils{
}
playSound(url){
const audio = new Audio(url);
audio.play();
}
newTableRow(cellContent){
//Create an empty table row to hold the cells
const entryRow = document.createElement('tr');