canopy/www/js/channelSettings.js
2024-11-15 17:44:03 -05:00

54 lines
2.1 KiB
JavaScript

/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024 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 <https://www.gnu.org/licenses/>.*/
class channelSettingsPrompt{
constructor(){
this.channel = window.location.pathname.slice(3).replace('/settings','');
this.hidden = document.querySelector("#channel-hidden");
this.delete = document.querySelector("#channel-delete");
this.hidden.addEventListener('change', this.submitUpdate.bind(this));
this.delete.addEventListener('click', this.promptDelete.bind(this));
}
async submitUpdate(event){
//probably not the cleanest way to get the chan name :P
const key = event.target.id.split("-").pop();
const value = event.target.type == "checkbox" ? event.target.checked : event.target.value;
const settingsMap = new Map([
[key, value]
]);
this.handleUpdate(await utils.ajax.setChannelSetting(this.channel, settingsMap));
}
handleUpdate(updateObj){
this.hidden.checked = updateObj.hidden;
}
promptDelete(){
var confirm = window.prompt(`Warning: You are about to nuke ${this.channel} off of the face of the fucking planet, no taksie-backsies. \n \n Type in ${this.channel} to confirm.`);
this.deleteChannel(confirm);
}
async deleteChannel(confirm){
if(this.channel === confirm){
utils.ajax.deleteChannel(this.channel, confirm);
}
}
}
new channelSettingsPrompt();