import {UserData} from "../index"; (window as any).$ = require("jquery"); { const request = require('request'); const util = require('util'); const request_post = util.promisify(request.post); const api_url = "https://web.teaspeak.de/"; const btn_login = $("#btn_login"); btn_login.on('click', () => { btn_login .prop("disabled", true) .empty() .append($(document.createElement("i")).addClass("fa fa-circle-o-notch fa-spin")); submit_login($("#user").val() as string, $("#pass").val() as string).then(data => { $("#login").hide(500); $("#success").show(500); const ipc = require("electron").ipcRenderer; ipc.send('teaforo-callback', data); }).catch(error => { console.log("Failed: " + error); loginFailed(error); }); }); async function submit_login(user: string, pass: string) : Promise { const {error, response, body} = await request_post(api_url + "auth.php", { timeout: 5000, form: { action: "login", user: user, pass: pass } }); console.log("Error: %o", error); console.log("response: %o", response); console.log("body: %o", body); const data = JSON.parse(body); if(!data["success"]) throw data["msg"]; let user_data: UserData = {} as any; user_data.session_id = data["sessionId"]; user_data.username = data["user_name"]; user_data.application_data = data["user_data"]; user_data.application_data_sign = data["user_sign"]; return user_data; } function loginFailed(err: string = "") { btn_login .prop("disabled", false) .empty() .append($(document.createElement("a")).text("Login")); let errTag = $(".box .error"); if(err !== "") { errTag.text(err).show(500); } else errTag.hide(500); } // $("#user").on('keydown', event => { if(event.key == "Enter") $("#pass").focus(); }); $("#pass").on('keydown', event => { if(event.key == "Enter") $("#btn_login").trigger("click"); }); //Patch for the external URL $('body').on('click', 'a', (event) => { event.preventDefault(); let link = (event.target).href; require("electron").shell.openExternal(link); }); }