///
declare var apiHost: string;
import * as ko from "knockout";
import { App } from "../app";
import { _ } from "../languagemanager";
import { SimplePopup } from "../popups/simplepopup";
import { AccountManager } from "../services/accountManager";
import { PopupBase } from "../ui/popupbase";
declare var app: App;
export class ChangePasswordPopup extends PopupBase implements KnockoutValidationGroup {
public oldPassword = ko.observable().extend({ required: true });
public password: KnockoutObservable;
public confirmPassword: KnockoutObservable;
public errorMessage: KnockoutObservable;
public errors: KnockoutValidationErrors;
public isValid: () => boolean;
public loading: KnockoutObservable;
constructor() {
super();
this.password = ko.observable().extend({ required: true });
this.confirmPassword = ko.observable().extend({ required: true });
this.errors = ko.validation.group(this);
this.errorMessage = ko.observable();
this.loading = ko.observable(false);
}
public shown(args: any[]= []): void {
this.oldPassword(null);
this.password(null);
this.confirmPassword(null);
this.errors.showAllMessages(false);
super.shown(args);
}
public async confirm() {
const self = this;
const isValid = this.isValid();
if (!isValid) {
this.errors.showAllMessages(true);
return;
}
if (!this.loading()) {
self.loading(true);
self.errorMessage(null);
const accountApi = new AccountManager();
const data = await accountApi.changePasword(this.oldPassword(), this.password());
if (data.Status === "Ok") {
self.loading(false);
self.oldPassword(null);
self.password(null);
self.confirmPassword(null);
app.closePopup();
SimplePopup.display(_("auth.changePassword"), _("auth.passwordChangedSuccess"));
} else {
// Report authentication or authorization errors
self.errorMessage(_("errors." + data.Status));
}
}
}
}