/*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 settingsPanel extends panelObj{ /** * Instantiates a new Panel Object * @param {channel} client - Parent client Management Object * @param {Document} panelDocument - Panel Document */ constructor(client, panelDocument){ super(client, "Client Settings", "/panel/settings", panelDocument); } closer(){ } docSwitch(){ /** * Youtube Source Selector */ this.youtubeSource = this.panelDocument.querySelector("#settings-panel-youtube-source select"); /** * Internet Archive CDN Server Input */ this.IACDNInput = this.panelDocument.querySelector("#settings-panel-ia-server input"); this.renderSettings(); this.setupInput(); } /** * Defines input-related event handlers */ setupInput(){ this.youtubeSource.addEventListener('change', this.updateYoutubeSource.bind(this)); this.IACDNInput.addEventListener('keydown', this.updateIACDN.bind(this)); } /** * Renders actual user settings state into panel display */ renderSettings(){ this.youtubeSource.value = localStorage.getItem("ytPlayerType"); this.IACDNInput.value = localStorage.getItem("IACDN"); } /** * Event handler for Youtube Source selector */ updateYoutubeSource(){ localStorage.setItem("ytPlayerType", this.youtubeSource.value); client.processConfig("ytPlayerType", this.youtubeSource.value); } /** * Event handler for Internet Archive CDN Server input * @param {Event} event - Event handed down by event listener */ updateIACDN(event){ //If we hit enter if(event.key == "Enter"){ //If we have an invalid server string if(!(this.IACDNInput.value.match(/^ia[0-9]{6}\...$/g) || this.IACDNInput.value == "")){ //reset back to what was set before this.IACDNInput.value = localStorage.getItem('IACDN'); //BAIL! return; } localStorage.setItem("IACDN", this.IACDNInput.value); client.processConfig("IACDN", this.IACDNInput.value); } } }