# This is the 1st commit message: Initial commit # This is the commit message #2: added whole syswtem becuz i forgot to keep up with the github # This is the commit message #3: hihi hiha # This is the commit message #4: added startServer.sh # This is the commit message #5: hihi hiha # This is the commit message #6: fixed some packages # This is the commit message #7: fixed every bug with the stupid oop # This is the commit message #8: Revert "fixed every bug with the stupid oop" This reverts commit d2255863aa44e2504f9f2cec9e1ae5d1094cb9cd. # This is the commit message #9: added prevention of breaking the system by manually filling in the project id # This is the commit message #10: fixed bug when adding bot # This is the commit message #11: made user-id not just count up from 0 # This is the commit message #12: fixed the issue where if you load project page it woulnt show the commands until you refresh the page
266 lines
8.9 KiB
JavaScript
Executable File
266 lines
8.9 KiB
JavaScript
Executable File
function getProjectId() {
|
|
let currentPage = window.location.href;
|
|
return parseInt(currentPage.split('/projects/')[1].split('/')[0]);
|
|
}
|
|
|
|
function editProjectName(){
|
|
Swal.fire({
|
|
title: 'Enter Project Name',
|
|
html:
|
|
'<input id="projectName" class="swal2-input" placeholder="Project Name">',
|
|
focusConfirm: false,
|
|
preConfirm: () => {
|
|
const name = Swal.getPopup().querySelector('#projectName').value;
|
|
|
|
// Check if both name and token are filled
|
|
if (!name) {
|
|
Swal.showValidationMessage('Please fill in all the fields');
|
|
return false; // Prevent closing the modal
|
|
}
|
|
|
|
// Perform the POST request to /create-bot
|
|
return fetch('/rename-project', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
name: name,
|
|
id: getProjectId()
|
|
}),
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error('Network response was not ok');
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(data => {
|
|
Swal.fire('Project Rename!', 'Your project has been successfully been renamed.', 'success').then(() => {
|
|
window.location.reload();
|
|
});
|
|
|
|
})
|
|
.catch(error => {
|
|
console.error('There was a problem with the fetch operation:', error);
|
|
Swal.fire('Error', 'There was an error creating the bot.', 'error');
|
|
});
|
|
},
|
|
})
|
|
}
|
|
|
|
function exportProject() {
|
|
Swal.fire({
|
|
title: "Exporting...",
|
|
text: "Your project export is in progress.",
|
|
icon: "info",
|
|
showConfirmButton: false,
|
|
allowOutsideClick: false,
|
|
allowEscapeKey: false
|
|
});
|
|
|
|
fetch(`/export?id=${getProjectId()}`, { method: 'POST' })
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`Request failed. Status: ${response.status}`);
|
|
}
|
|
return response.blob();
|
|
})
|
|
.then(blob => {
|
|
// Create a link element
|
|
const link = document.createElement('a');
|
|
link.href = window.URL.createObjectURL(blob);
|
|
|
|
// Set the download attribute and trigger a click
|
|
link.download = `bot_builds_${getProjectId()}.zip`;
|
|
link.click();
|
|
|
|
// Clean up
|
|
window.URL.revokeObjectURL(link.href);
|
|
|
|
Swal.close();
|
|
|
|
})
|
|
.then(() => {
|
|
Swal.fire({
|
|
title: "Exported!",
|
|
text: "Your project has been exported.",
|
|
icon: "success"
|
|
});
|
|
loadData();
|
|
})
|
|
.catch(error => {
|
|
console.error('Error:', error);
|
|
Swal.fire({
|
|
title: "Export Failed",
|
|
text: "There was an error exporting your project.",
|
|
icon: "error"
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
function createNewCommand() {
|
|
Swal.fire({
|
|
title: 'Create Command',
|
|
html:
|
|
'<label for="name">Command Name</label>' +
|
|
'<input id="name" class="swal2-input" placeholder="Command Name">' +
|
|
'<label for="description">Description</label>' +
|
|
'<input id="description" class="swal2-input" placeholder="Command Description">'+
|
|
'<label for="response">Command Response</label>' +
|
|
'<input id="response" class="swal2-input" placeholder="Command Response">',
|
|
focusConfirm: false,
|
|
showCancelButton: true,
|
|
cancelButtonText: 'Cancel',
|
|
confirmButtonText: 'Create',
|
|
preConfirm: () => {
|
|
const name = Swal.getPopup().querySelector('#name').value;
|
|
const description = Swal.getPopup().querySelector('#description').value;
|
|
const response = Swal.getPopup().querySelector('#response').value;
|
|
|
|
// Check if both name and token are filled
|
|
if (!name || !description || !response) {
|
|
Swal.showValidationMessage('Please fill in all the fields');
|
|
return false; // Prevent closing the modal
|
|
}
|
|
|
|
// Perform the POST request to /create-bot
|
|
return fetch('/create-command', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
name: name,
|
|
description: description,
|
|
response: response,
|
|
projectId: getProjectId()
|
|
}),
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error('Network response was not ok');
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(data => {
|
|
console.log(data);
|
|
Swal.fire('Command Created!', 'Your command has been successfully created.', 'success');
|
|
loadData();
|
|
})
|
|
.catch(error => {
|
|
console.error('There was a problem with the fetch operation:', error);
|
|
Swal.fire('Error', 'There was an error creating the bot.', 'error');
|
|
});
|
|
},
|
|
});
|
|
}
|
|
|
|
function deleteCommand (event) {
|
|
const commandId=event.target.dataset.commandId;
|
|
const projectId = getProjectId();
|
|
|
|
Swal.fire({
|
|
title: "Are you sure you want to delete this command?",
|
|
text: "You won't be able to revert this!",
|
|
icon: "warning",
|
|
showCancelButton: true,
|
|
confirmButtonColor: "#3085d6",
|
|
cancelButtonColor: "#d33",
|
|
confirmButtonText: "Yes, delete it!"
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open("POST", `/delete-command?commandId=${commandId}&projectId=${projectId}`);
|
|
xhr.send();
|
|
xhr.onload = () => {
|
|
if (xhr.status == 200){
|
|
Swal.fire({
|
|
title: "Deleted!",
|
|
text: "Your command has been deleted.",
|
|
icon: "success"
|
|
})
|
|
loadData();
|
|
} else {
|
|
console.error('Request failed. Status: ' + xhr.status);
|
|
}
|
|
}
|
|
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function loadData() {
|
|
let projectId = getProjectId()
|
|
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open('GET', `/fetch-project-data?id=${projectId}`, true);
|
|
xhr.send();
|
|
xhr.onload = () => {
|
|
if (xhr.status == 200){
|
|
|
|
let jsonResponse = JSON.parse(xhr.responseText);
|
|
if (jsonResponse != {}){
|
|
document.querySelector("#title").innerHTML = jsonResponse.projectName.toUpperCase();
|
|
document.querySelector("#description").innerHTML = "Project Id: "+jsonResponse.projectId;
|
|
}
|
|
} else {
|
|
console.error('Request failed. Status: ' + xhr.status);
|
|
}
|
|
}
|
|
|
|
let xhr2 = new XMLHttpRequest();
|
|
xhr2.open('GET', `/fetch-commands?id=${projectId}`, true);
|
|
xhr2.send();
|
|
|
|
xhr2.onload = function () {
|
|
if (xhr2.status == 200) {
|
|
let jsonResponse = JSON.parse(xhr2.responseText);
|
|
console.log(jsonResponse)
|
|
|
|
const gridContainer = document.getElementById("grid");
|
|
gridContainer.innerHTML = '';
|
|
|
|
|
|
const specialButton = document.createElement('div');
|
|
specialButton.classList.add('grid-btn');
|
|
specialButton.id = 'special-button';
|
|
|
|
const button = document.createElement('button');
|
|
button.innerText = 'NEW COMMAND';
|
|
button.id = 'add-command-button';
|
|
button.onclick = createNewCommand;
|
|
|
|
specialButton.appendChild(button);
|
|
gridContainer.appendChild(specialButton);
|
|
|
|
jsonResponse.forEach(command => {
|
|
const gridItem = document.createElement('div');
|
|
gridItem.classList.add('grid-btn');
|
|
|
|
const button = document.createElement('button');
|
|
button.innerHTML = "<strong class='command-bold'>"+command.name+"</strong><br>"+command.description;
|
|
button.dataset.commandId=command.id;
|
|
button.dataset.commandResponse=command.response;
|
|
button.addEventListener("click", (event)=>{
|
|
deleteCommand(event);
|
|
});
|
|
|
|
|
|
gridItem.appendChild(button);
|
|
gridContainer.appendChild(gridItem);
|
|
});
|
|
|
|
} else {
|
|
console.error('Request failed. Status: ' + xhr2.status);
|
|
}
|
|
};
|
|
}
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
loadData();
|
|
}); |