added a "password reset email has been sent" screen
This commit is contained in:
+2
-1
@@ -176,5 +176,6 @@
|
||||
"drafty_attachment": "Dateianhang",
|
||||
"drafty_form": "Formular:",
|
||||
"drafty_image": "Bild",
|
||||
"topic_delete": "Chat löschen"
|
||||
"topic_delete": "Chat löschen",
|
||||
"password_reset_email_sent": "Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen."
|
||||
}
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
"numeric_confirmation_code_prompt": "Numbers only",
|
||||
"online_now": "online now",
|
||||
"password_prompt": "Password",
|
||||
"password_reset_email_sent": "An email has been sent to {email}. Follow the directions in the email to reset your password.",
|
||||
"password_unchanged_prompt": "Unchanged",
|
||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||
"permission_admin": "Approve ({val})",
|
||||
|
||||
+2
-1
@@ -176,5 +176,6 @@
|
||||
"drafty_attachment": "Archivo",
|
||||
"drafty_form": "Formulario:",
|
||||
"drafty_image": "Imagen",
|
||||
"topic_delete": "Eliminar chat"
|
||||
"topic_delete": "Eliminar chat",
|
||||
"password_reset_email_sent": "Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña."
|
||||
}
|
||||
|
||||
@@ -481,6 +481,10 @@
|
||||
"defaultMessage": "Password",
|
||||
"description": "Placeholder/prompt for entering password"
|
||||
},
|
||||
"password_reset_email_sent": {
|
||||
"defaultMessage": "An email has been sent to {email}. Follow the directions in the email to reset your password.",
|
||||
"description": "Notification that the email with password reset instructions has been sent"
|
||||
},
|
||||
"password_unchanged_prompt": {
|
||||
"defaultMessage": "Unchanged",
|
||||
"description": "Message in editor while password is unchanged"
|
||||
|
||||
+2
-1
@@ -179,5 +179,6 @@
|
||||
"drafty_attachment": "부착",
|
||||
"drafty_form": "형태:",
|
||||
"drafty_image": "이미지",
|
||||
"topic_delete": "채팅 삭제"
|
||||
"topic_delete": "채팅 삭제",
|
||||
"password_reset_email_sent": "이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요."
|
||||
}
|
||||
|
||||
+2
-1
@@ -176,5 +176,6 @@
|
||||
"drafty_attachment": "Atasament",
|
||||
"drafty_form": "Formă:",
|
||||
"drafty_image": "Imagine",
|
||||
"topic_delete": "Ștergeți Chat"
|
||||
"topic_delete": "Ștergeți Chat",
|
||||
"password_reset_email_sent": "Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola."
|
||||
}
|
||||
|
||||
+2
-1
@@ -176,5 +176,6 @@
|
||||
"drafty_attachment": "Аттачмент",
|
||||
"drafty_form": "Форма:",
|
||||
"drafty_image": "Картинка",
|
||||
"topic_delete": "Удалить чат"
|
||||
"topic_delete": "Удалить чат",
|
||||
"password_reset_email_sent": "Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль."
|
||||
}
|
||||
|
||||
+2
-1
@@ -176,5 +176,6 @@
|
||||
"upload_finishing": "正在完成...",
|
||||
"user_not_found": "找不到",
|
||||
"validate_credential_action": "確認",
|
||||
"topic_delete": "刪除聊天"
|
||||
"topic_delete": "刪除聊天",
|
||||
"password_reset_email_sent": "一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。"
|
||||
}
|
||||
|
||||
+2
-1
@@ -176,5 +176,6 @@
|
||||
"drafty_attachment": "附件",
|
||||
"drafty_form": "形式:",
|
||||
"drafty_image": "图像",
|
||||
"topic_delete": "删除聊天"
|
||||
"topic_delete": "删除聊天",
|
||||
"password_reset_email_sent": "一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。"
|
||||
}
|
||||
|
||||
+15
-7
@@ -177,7 +177,8 @@
|
||||
"drafty_attachment": "Dateianhang",
|
||||
"drafty_form": "Formular:",
|
||||
"drafty_image": "Bild",
|
||||
"topic_delete": "Chat löschen"
|
||||
"topic_delete": "Chat löschen",
|
||||
"password_reset_email_sent": "Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen."
|
||||
},
|
||||
"en": {
|
||||
"action_block_contact": "Block Contact",
|
||||
@@ -301,6 +302,7 @@
|
||||
"numeric_confirmation_code_prompt": "Numbers only",
|
||||
"online_now": "online now",
|
||||
"password_prompt": "Password",
|
||||
"password_reset_email_sent": "An email has been sent to {email}. Follow the directions in the email to reset your password.",
|
||||
"password_unchanged_prompt": "Unchanged",
|
||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||
"permission_admin": "Approve ({val})",
|
||||
@@ -537,7 +539,8 @@
|
||||
"drafty_attachment": "Archivo",
|
||||
"drafty_form": "Formulario:",
|
||||
"drafty_image": "Imagen",
|
||||
"topic_delete": "Eliminar chat"
|
||||
"topic_delete": "Eliminar chat",
|
||||
"password_reset_email_sent": "Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña."
|
||||
},
|
||||
"ko": {
|
||||
"validate_credential_action": "확인",
|
||||
@@ -717,7 +720,8 @@
|
||||
"drafty_attachment": "부착",
|
||||
"drafty_form": "형태:",
|
||||
"drafty_image": "이미지",
|
||||
"topic_delete": "채팅 삭제"
|
||||
"topic_delete": "채팅 삭제",
|
||||
"password_reset_email_sent": "이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요."
|
||||
},
|
||||
"ro": {
|
||||
"validate_credential_action": "confirmă",
|
||||
@@ -897,7 +901,8 @@
|
||||
"drafty_attachment": "Atasament",
|
||||
"drafty_form": "Formă:",
|
||||
"drafty_image": "Imagine",
|
||||
"topic_delete": "Ștergeți Chat"
|
||||
"topic_delete": "Ștergeți Chat",
|
||||
"password_reset_email_sent": "Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola."
|
||||
},
|
||||
"ru": {
|
||||
"contacts_not_found": "Чатов нет<br />¯∖_(ツ)_/¯",
|
||||
@@ -1077,7 +1082,8 @@
|
||||
"drafty_attachment": "Аттачмент",
|
||||
"drafty_form": "Форма:",
|
||||
"drafty_image": "Картинка",
|
||||
"topic_delete": "Удалить чат"
|
||||
"topic_delete": "Удалить чат",
|
||||
"password_reset_email_sent": "Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль."
|
||||
},
|
||||
"zh-TW": {
|
||||
"action_block_contact": "封鎖聯絡人",
|
||||
@@ -1257,7 +1263,8 @@
|
||||
"upload_finishing": "正在完成...",
|
||||
"user_not_found": "找不到",
|
||||
"validate_credential_action": "確認",
|
||||
"topic_delete": "刪除聊天"
|
||||
"topic_delete": "刪除聊天",
|
||||
"password_reset_email_sent": "一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。"
|
||||
},
|
||||
"zh": {
|
||||
"archived_contacts": "已归档联系人 ({count})",
|
||||
@@ -1437,6 +1444,7 @@
|
||||
"drafty_attachment": "附件",
|
||||
"drafty_form": "形式:",
|
||||
"drafty_image": "图像",
|
||||
"topic_delete": "删除聊天"
|
||||
"topic_delete": "删除聊天",
|
||||
"password_reset_email_sent": "一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
|
||||
this.state = {
|
||||
email: '',
|
||||
password: ''
|
||||
password: '',
|
||||
sent: false
|
||||
};
|
||||
|
||||
this.handleSubmit = this.handleSubmit.bind(this);
|
||||
@@ -21,7 +22,7 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
let parsed = HashNavigation.parseUrlHash(window.location.hash);
|
||||
const parsed = HashNavigation.parseUrlHash(window.location.hash);
|
||||
this.setState({token: parsed.params.token, scheme: parsed.params.scheme});
|
||||
}
|
||||
|
||||
@@ -29,8 +30,14 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
e.preventDefault();
|
||||
if (this.state.token) {
|
||||
this.props.onReset(this.state.scheme, this.state.password.trim(), this.state.token);
|
||||
} else if (this.state.sent) {
|
||||
this.props.onCancel();
|
||||
} else {
|
||||
this.props.onRequest('email', this.state.email.trim());
|
||||
const email = this.state.email.trim();
|
||||
this.setState({email: email});
|
||||
this.props.onRequest('email', email).then(() => {
|
||||
this.setState({sent: true});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,10 +50,9 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
}
|
||||
|
||||
render() {
|
||||
let reset = (this.state.token && this.state.scheme);
|
||||
return (
|
||||
<form id="password-reset-form" onSubmit={this.handleSubmit}>
|
||||
{reset ?
|
||||
{(this.state.token && this.state.scheme) ?
|
||||
<FormattedMessage id="new_password_placeholder" defaultMessage="Enter new password"
|
||||
description="Placeholder for entering new password">{
|
||||
(placeholder) => <VisiblePassword
|
||||
@@ -56,7 +62,17 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
required={true} autoFocus={true}
|
||||
onChange={this.handlePasswordChange} />
|
||||
}</FormattedMessage>
|
||||
:
|
||||
: this.state.sent ?
|
||||
<>
|
||||
<br/>
|
||||
<center><i className="material-icons huge green">task_alt</i></center>
|
||||
<br/>
|
||||
<center><FormattedMessage id="password_reset_email_sent"
|
||||
defaultMessage="An email has been sent to {email}. Follow the directions in the email to reset your password."
|
||||
values={{ email: <tt>{this.state.email}</tt> }}
|
||||
description="Notification that the email with password reset instructions has been sent" /></center>
|
||||
</>
|
||||
:
|
||||
<>
|
||||
<label htmlFor="inputEmail">
|
||||
<FormattedMessage id="label_reset_password"
|
||||
@@ -75,8 +91,13 @@ export default class PasswordResetView extends React.PureComponent {
|
||||
</>
|
||||
}
|
||||
<div className="dialog-buttons">
|
||||
<button className="primary" type="submit">{reset ?
|
||||
<FormattedMessage id="button_reset" defaultMessage="Reset" description="Button [Reset]" /> :
|
||||
<button className="primary" type="submit">{
|
||||
(this.state.token && this.state.scheme) ?
|
||||
<FormattedMessage id="button_reset" defaultMessage="Reset" description="Button [Reset]" />
|
||||
: this.state.sent ?
|
||||
<FormattedMessage id="button_ok" defaultMessage="OK"
|
||||
description="Button [OK]" />
|
||||
:
|
||||
<FormattedMessage id="button_send_request" defaultMessage="Send request"
|
||||
description="Button [Send request]" />
|
||||
}</button>
|
||||
|
||||
@@ -1496,7 +1496,7 @@ class TinodeWeb extends React.Component {
|
||||
|
||||
handlePasswordResetRequest(method, value) {
|
||||
// If already connected, connnect() will return a resolved promise.
|
||||
this.tinode.connect()
|
||||
return this.tinode.connect()
|
||||
.then(() => {
|
||||
return this.tinode.requestResetAuthSecret('basic', method, value);
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user