diff --git a/www/css/panel/pm.css b/www/css/panel/pm.css
index df2db42..09b3c56 100644
--- a/www/css/panel/pm.css
+++ b/www/css/panel/pm.css
@@ -22,8 +22,6 @@ along with this program. If not, see .*/
#pm-panel-sesh-list-container{
flex: 1;
max-width: 10em;
- width: calc(100% - 1.25em);
- margin-left: 0.25em;
}
#pm-panel-sesh-container{
@@ -35,11 +33,11 @@ along with this program. If not, see .*/
}
#pm-panel-start-sesh{
+ width: calc(100% - 1.25em);
+ margin-left: 0.25em;
padding: 0 0.5em;
text-wrap: nowrap;
display: flex;
- font-size: 1.2em;
- font-weight: bold;
}
#pm-panel-start-sesh span{
@@ -53,16 +51,4 @@ along with this program. If not, see .*/
#pm-panel-sesh-control-div{
margin: 0.5em;
-}
-
-div.pm-panel-sesh-list-entry{
- padding: 0 0.5em;
- display: flex;
- flex-direction: row;
-}
-
-div.pm-panel-sesh-list-entry, div.pm-panel-sesh-list-entry p{
- margin: 0;
- text-wrap: nowrap;
- text-align: center;
}
\ No newline at end of file
diff --git a/www/css/theme/movie-night.css b/www/css/theme/movie-night.css
index 96e5793..1cfda84 100644
--- a/www/css/theme/movie-night.css
+++ b/www/css/theme/movie-night.css
@@ -627,11 +627,6 @@ div.archived p{
border-bottom: 1px solid var(--accent0);
}
-
-div.pm-panel-sesh-list-entry{
- border-bottom: 1px solid var(--accent0);
-}
-
/* altcha theming*/
div.altcha{
box-shadow: 4px 4px 1px var(--bg1-alt0) inset;
diff --git a/www/js/channel/panels/emotePanel.js b/www/js/channel/panels/emotePanel.js
index 877b4f7..98a412b 100644
--- a/www/js/channel/panels/emotePanel.js
+++ b/www/js/channel/panels/emotePanel.js
@@ -27,13 +27,6 @@ class emotePanel extends panelObj{
constructor(client, panelDocument){
super(client, "Emote Palette", "/panel/emote", panelDocument);
- this.defineListeners();
- }
-
- /**
- * Defines network related listeners
- */
- defineListeners(){
this.client.socket.on("personalEmotes", this.renderEmoteLists.bind(this));
}
diff --git a/www/js/channel/panels/pmPanel.js b/www/js/channel/panels/pmPanel.js
index e502f4f..761c2d8 100644
--- a/www/js/channel/panels/pmPanel.js
+++ b/www/js/channel/panels/pmPanel.js
@@ -26,26 +26,13 @@ class pmPanel extends panelObj{
*/
constructor(client, panelDocument){
super(client, "Private Messaging", "/panel/pm", panelDocument);
-
- this.defineListeners();
}
closer(){
}
docSwitch(){
- this.seshList = this.panelDocument.querySelector('#pm-panel-sesh-list');
-
this.setupInput();
-
- this.renderSeshList();
- }
-
- /**
- * Defines network related event listeners
- */
- defineListeners(){
-
}
/**
@@ -53,36 +40,4 @@ class pmPanel extends panelObj{
*/
setupInput(){
}
-
- /**
- * Render out current sesh array to sesh list UI
- */
- renderSeshList(){
- //For each session tracked by the pmHandler
- for(const sesh of this.client.pmHandler.seshList){
- this.renderSeshListEntry(sesh);
- }
- }
-
- /**
- * Renders out a given messaging sesh to the sesh list UI
- */
- renderSeshListEntry(sesh){
- //Create container div
- const entryDiv = document.createElement('div');
- //Set conatiner div classes
- entryDiv.classList.add('pm-panel-sesh-list-entry','interactive');
-
-
- //Create sesh label
- const seshLabel = document.createElement('p');
- //Create human-readable label out of members array
- seshLabel.textContent = utils.unescapeEntities(sesh.recipients.sort().join(', '));
-
- //append sesh label to entry div
- entryDiv.appendChild(seshLabel);
-
- //Append entry div to sesh list
- this.seshList.appendChild(entryDiv);
- }
}
\ No newline at end of file
diff --git a/www/js/channel/pmHandler.js b/www/js/channel/pmHandler.js
index 09e1a3a..956bd57 100644
--- a/www/js/channel/pmHandler.js
+++ b/www/js/channel/pmHandler.js
@@ -15,142 +15,23 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .*/
/**
- * Class for handling incoming Private Messages for the entire client
+ * Class for handling incoming Private Messages
*/
class pmHandler{
- /**
- * Instantiates a new Private Message Handler object
- * @param {channel} client - Parent client Management Object
- */
constructor(client){
- /**
- * Parent client management object
- */
this.client = client;
- /**
- * PM Icon in the main chat bar
- */
this.pmIcon = document.querySelector('#chat-panel-pm-icon');
- /**
- * List of PM Sessions
- */
- this.seshList = [];
-
this.defineListeners();
this.setupInput();
}
- /**
- * Defines network related event listeners for PM Handler
- */
defineListeners(){
- this.client.pmSocket.on("message", this.handlePM.bind(this));
- this.client.pmSocket.on("sent", this.handlePM.bind(this));
+
}
- /**
- * Defines inpet related event listeners for PM handler
- */
setupInput(){
this.pmIcon.addEventListener("click", ()=>{this.client.cPanel.setActivePanel(new pmPanel(client))});
}
-
- /**
- * Handles received Private Messages from the PM service on the server, organizing it into the proper session from the sesh list
- * Or creating a new sesh where a matching one does not a exist
- * @param {object} data - Private Message data from the server
- */
- handlePM(data){
- //Store whether or not current message has been consumed by an existing sesh
- let consumed = false;
-
- //Create members array from scratch to avoid changing the input data for further processing
- const members = [];
-
- //Manually iterate through recipients
- for(const member of data.recipients){
- //check to make sure we're not adding ourselves
- if(member != this.client.user.user){
- //Copy relevant array members by value instead of reference
- members.push(member);
- }
- }
-
- //If this wasn't our message
- if(data.sender != this.client.user.user){
- //Push sender onto members list
- members.push(data.sender);
- }
-
- //For each existing sesh
- for(let seshIndex in this.seshList){
- //Get current sesh
- const sesh = this.seshList[seshIndex];
-
- //Check to see if the length of sesh recipients equals current length (only check on arrays that actually make sense to save time)
- if(sesh.recipients.length == members.length){
- /*Feels like cheating to have the JS engine to the hard bits by just telling it to sort them.
- That being said, since the function is implemented into the JS Engine itself
- It will be quicker than any custom comparison code we can write*/
-
- //Sort recipient lists so lists with the same user will be equal when joined together in a string and compare, if they're the same...
- if(sesh.recipients.sort().join() == members.sort().join()){
- //Dump collected message into the matching session
- this.seshList[seshIndex].messages.push(data);
-
- //Let the rest of the method know that we've consumed this message
- consumed = true;
- }
- }
- }
-
- //If we made it through the loop without consuming the message
- if(!consumed){
- //Add it to it's own fresh new sesh
- this.seshList.push(new pmSesh(data, client));
- }
- }
-}
-
-/**
- * Class which represents an existing Private Messaging session between two or more users
- */
-class pmSesh{
- /**
- * Instatiates a new pmSession object
- * @param {Object} message - Initial Private Message object from server that initiated the session
- */
- constructor(message, client){
- /**
- * Parent client management object
- */
- this.client = client;
-
- /**
- * Members of session excluding the currently logged in user
- */
- this.recipients = [];
-
- //Manually iterate through recipients
- for(const member of message.recipients){
- //check to make sure we're not adding ourselves
- if(member != this.client.user.user){
- //Copy relevant array members by value instead of reference
- this.recipients.push(member);
- }
- }
-
- //If this wasn't our message
- if(message.sender != this.client.user.user){
- //Push sender onto members list
- this.recipients.push(message.sender);
- }
-
- /**
- * Array containing all session messages
- */
- this.messages = [message];
- }
}
\ No newline at end of file