snappymail/plugins/change-password/js/ChangePasswordUserSettings.js

111 lines
2.5 KiB
JavaScript
Raw Normal View History

(rl => {
if (!rl)
{
return;
}
class ChangePasswordUserSettings
{
constructor() {
ko.addObservablesTo(this, {
changeProcess: false,
errorDescription: '',
passwordMismatch: false,
passwordUpdateError: false,
passwordUpdateSuccess: false,
currentPassword: '',
currentPasswordError: false,
newPassword: '',
newPassword2: '',
});
this.currentPassword.subscribe(() => this.resetUpdate(true));
this.newPassword.subscribe(() => this.resetUpdate());
this.newPassword2.subscribe(() => this.resetUpdate());
ko.decorateCommands(this, {
saveNewPasswordCommand: self => !self.changeProcess()
&& '' !== self.currentPassword()
&& '' !== self.newPassword()
&& '' !== self.newPassword2()
});
}
saveNewPasswordCommand() {
if (this.newPassword() !== this.newPassword2()) {
this.passwordMismatch(true);
this.errorDescription(rl.i18n('SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH'));
} else {
this.reset(true);
rl.pluginRemoteRequest(
(...args) => {
console.dir(...args);
this.onChangePasswordResponse(...args);
},
'ChangePassword',
{
'PrevPassword': this.currentPassword(),
'NewPassword': this.newPassword()
}
);
}
}
reset(change) {
this.changeProcess(change);
this.resetUpdate();
this.currentPasswordError(false);
this.errorDescription('');
}
resetUpdate(current) {
this.passwordUpdateError(false);
this.passwordUpdateSuccess(false);
current ? this.currentPasswordError(false) : this.passwordMismatch(false);
}
onHide() {
this.reset(false);
this.currentPassword('');
this.newPassword('');
this.newPassword2('');
}
onChangePasswordResponse(result, data) {
this.reset(false);
if (rl.Enums.StorageResultType.Success === result && data && data.Result) {
this.currentPassword('');
this.newPassword('');
this.newPassword2('');
this.passwordUpdateSuccess(true);
rl.hash.set();
rl.settings.set('AuthAccountHash', data.Result);
} else {
this.passwordUpdateError(true);
this.errorDescription(rl.i18n('NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD'));
if (data) {
if (131 === data.ErrorCode) {
// Notification.CurrentPasswordIncorrect
this.currentPasswordError(true);
}
if (data.ErrorMessageAdditional) {
this.errorDescription(data.ErrorMessageAdditional);
}
}
}
}
}
rl.addSettingsViewModel(
ChangePasswordUserSettings,
'SettingsChangePassword',
'GLOBAL/PASSWORD',
'change-password'
);
})(window.rl);