added a "password reset email has been sent" screen

This commit is contained in:
or-else
2021-08-20 20:32:56 -07:00
parent ddfbfdcbb3
commit 8822c2892e
18 changed files with 117 additions and 36 deletions
+7
View File
@@ -373,6 +373,10 @@ div.alert .content {
color: #2196f3; /* blue 500 */
}
.green {
color: #2e7d32; /* green 800 */
}
.red {
color: #D32F2F; /* red 700 */
}
@@ -1936,6 +1940,9 @@ ul.tabbar li.active > a {
.material-icons.big {
font-size: 2.4rem;
}
.material-icons.huge {
font-size: 4rem;
}
#self-avatar .material-icons {
font-size: 2.4rem;
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -1
View File
@@ -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."
}
+1
View File
@@ -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
View File
@@ -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."
}
+4
View File
@@ -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
View File
@@ -179,5 +179,6 @@
"drafty_attachment": "부착",
"drafty_form": "형태:",
"drafty_image": "이미지",
"topic_delete": "채팅 삭제"
"topic_delete": "채팅 삭제",
"password_reset_email_sent": "이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요."
}
+2 -1
View File
@@ -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
View File
@@ -176,5 +176,6 @@
"drafty_attachment": "Аттачмент",
"drafty_form": "Форма:",
"drafty_image": "Картинка",
"topic_delete": "Удалить чат"
"topic_delete": "Удалить чат",
"password_reset_email_sent": "Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль."
}
+2 -1
View File
@@ -176,5 +176,6 @@
"upload_finishing": "正在完成...",
"user_not_found": "找不到",
"validate_credential_action": "確認",
"topic_delete": "刪除聊天"
"topic_delete": "刪除聊天",
"password_reset_email_sent": "一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。"
}
+2 -1
View File
@@ -176,5 +176,6 @@
"drafty_attachment": "附件",
"drafty_form": "形式:",
"drafty_image": "图像",
"topic_delete": "删除聊天"
"topic_delete": "删除聊天",
"password_reset_email_sent": "一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。"
}
+15 -7
View File
@@ -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}。按照电子邮件中的说明重置密码。"
}
}
+29 -8
View File
@@ -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>
+1 -1
View File
@@ -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);
})
+42 -9
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long