/*Canopy - The next generation of stoner streaming software Copyright (C) 2024-2025 Rainbownapkin and the TTN Community This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .*/ /** * Class representing the settings panel * @extends panelObj */ class pmPanel extends panelObj{ /** * Instantiates a new Panel Object * @param {channel} client - Parent client Management Object * @param {Document} panelDocument - Panel Document */ 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(){ } /** * Defines input-related event handlers */ 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); } }