import Component from "../Component";
import state from "../state";
import { html, toast, hesc } from "../util";
export default class LoginPage extends Component {
constructor() {
super();
this.$area.html(html`
`);
this.$area.find(".app-login").on('submit', (ev) => this.doLogin(ev));
}
async doLogin(ev: JQuery.SubmitEvent) {
ev.preventDefault();
let email = this.$area.find(".login-email").val() as string;
let passwd = this.$area.find(".login-passwd").val() as string;
try {
let resp = await state.api.Login(email, passwd);
this.$area.html(JSON.stringify(resp));
// Stash our successful login state
state.api.sessionKey = resp.SessionKey
// Navigate to homepage
window.location.hash = "/" // will take us to the homepage now
toast("Logged in", "", "success")
} catch (ex) {
// network error or some other kind of problem
if (("responseText" in ex) && ex.responseText.length > 0) {
toast(hesc("Login failed"), hesc(ex.responseText), "danger");
} else {
toast(hesc("Login failed"), hesc("An unknown error occurred.\n\n" + JSON.stringify(ex)), "danger");
}
}
return false; // like preventDefault()
}
}