skinswitcher/src/index.js

120 lines
3.1 KiB
JavaScript

/* eslint-disable no-unused-vars */
const { ipcRenderer } = require("electron");
const axios = require("axios").default;
const fs = require("fs");
const { PNG } = require("pngjs");
// Read auth data from storage and define variables
var authData = ipcRenderer.sendSync("getAuth");
var token;
var save = true;
// Set theme
document.body.classList.add(authData.theme);
// Function for easy switching between views
function setContent(id, message) {
document.querySelectorAll("div.content").forEach((element) => {
element.style.display = "none";
});
const element = document.querySelectorAll(`div.content#${id}`)[0];
if (message) {
var msg;
if (element.firstElementChild.classList.contains("message")) {
msg = element.firstElementChild;
} else {
msg = document.createElement("p");
}
msg.classList = `message ${message.type}`;
msg.innerHTML = message.text;
element.prepend(msg);
}
element.style.display = "block";
}
setContent("loader");
async function authenticate(user, password) {
var payload = {
"agent": {
"name": "Minecraft",
"version": 1
},
"username": user,
"password": password
};
axios({
method: "POST",
url: "https://authserver.mojang.com/authenticate",
data: payload,
}).then((data) => {
console.log("Login successfull");
token = data.data;
// Save username (& password) for future login
authData.user = user;
authData.password = (save) ? password : "";
if (ipcRenderer.sendSync("setAuth", authData)) {
setContent(
"mainMenu",
{
type: "success",
text: `Logged in as ${data.data.selectedProfile.name}`
}
);
}
}).catch((data) => {
console.log("Login failure");
console.log(data.response);
setContent(
"authForm",
{
type: "warning",
text: `Login failed<br>${data.response.data.errorMessage}`
}
);
});
}
// Get access token from Mojang Authserver
if (authData.password == "") {
// Display auth screen when no password data is found
const form = document.querySelectorAll("div.content#authForm")[0];
form.querySelectorAll("input#user")[0].value = authData.user;
setContent("authForm");
// Listen for form submit
form.addEventListener("submit", function(e) {
e.preventDefault();
authData.user = form.querySelectorAll("input#user")[0].value;
authData.password = form.querySelectorAll("input#password")[0].value;
save = form.querySelectorAll("input#save")[0].checked;
setContent("loader");
authenticate(authData.user, authData.password);
});
} else {
authenticate(authData.user, authData.password);
}
//fs.createReadStream("../data/in.png")
// .pipe(
// new PNG({
// filterType: 4,
// })
// )
// .on("parsed", (image) => {
// axios({
// method: "PUT",
// url: `https://api.mojang.com/user/profile/${data.data.selectedProfile.id}/skin`,
// data: {
// model: "",
// file: image
// },
// headers: {"Authorization": "Bearer " + data.data.accessToken}
// }).catch(console.log);
// });