Merge branch 'devel' into features
This commit is contained in:
@@ -373,6 +373,10 @@ div.alert .content {
|
|||||||
color: #2196f3; /* blue 500 */
|
color: #2196f3; /* blue 500 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.green {
|
||||||
|
color: #388e3c; /* green 700 */
|
||||||
|
}
|
||||||
|
|
||||||
.red {
|
.red {
|
||||||
color: #D32F2F; /* red 700 */
|
color: #D32F2F; /* red 700 */
|
||||||
}
|
}
|
||||||
@@ -1936,6 +1940,9 @@ ul.tabbar li.active > a {
|
|||||||
.material-icons.big {
|
.material-icons.big {
|
||||||
font-size: 2.4rem;
|
font-size: 2.4rem;
|
||||||
}
|
}
|
||||||
|
.material-icons.huge {
|
||||||
|
font-size: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
#self-avatar .material-icons {
|
#self-avatar .material-icons {
|
||||||
font-size: 2.4rem;
|
font-size: 2.4rem;
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+2
-1
@@ -176,5 +176,6 @@
|
|||||||
"drafty_attachment": "Dateianhang",
|
"drafty_attachment": "Dateianhang",
|
||||||
"drafty_form": "Formular:",
|
"drafty_form": "Formular:",
|
||||||
"drafty_image": "Bild",
|
"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",
|
"numeric_confirmation_code_prompt": "Numbers only",
|
||||||
"online_now": "online now",
|
"online_now": "online now",
|
||||||
"password_prompt": "Password",
|
"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",
|
"password_unchanged_prompt": "Unchanged",
|
||||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||||
"permission_admin": "Approve ({val})",
|
"permission_admin": "Approve ({val})",
|
||||||
|
|||||||
+2
-1
@@ -176,5 +176,6 @@
|
|||||||
"drafty_attachment": "Archivo",
|
"drafty_attachment": "Archivo",
|
||||||
"drafty_form": "Formulario:",
|
"drafty_form": "Formulario:",
|
||||||
"drafty_image": "Imagen",
|
"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",
|
"defaultMessage": "Password",
|
||||||
"description": "Placeholder/prompt for entering 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": {
|
"password_unchanged_prompt": {
|
||||||
"defaultMessage": "Unchanged",
|
"defaultMessage": "Unchanged",
|
||||||
"description": "Message in editor while password is unchanged"
|
"description": "Message in editor while password is unchanged"
|
||||||
|
|||||||
+2
-1
@@ -179,5 +179,6 @@
|
|||||||
"drafty_attachment": "부착",
|
"drafty_attachment": "부착",
|
||||||
"drafty_form": "형태:",
|
"drafty_form": "형태:",
|
||||||
"drafty_image": "이미지",
|
"drafty_image": "이미지",
|
||||||
"topic_delete": "채팅 삭제"
|
"topic_delete": "채팅 삭제",
|
||||||
|
"password_reset_email_sent": "이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요."
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -176,5 +176,6 @@
|
|||||||
"drafty_attachment": "Atasament",
|
"drafty_attachment": "Atasament",
|
||||||
"drafty_form": "Formă:",
|
"drafty_form": "Formă:",
|
||||||
"drafty_image": "Imagine",
|
"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_attachment": "Аттачмент",
|
||||||
"drafty_form": "Форма:",
|
"drafty_form": "Форма:",
|
||||||
"drafty_image": "Картинка",
|
"drafty_image": "Картинка",
|
||||||
"topic_delete": "Удалить чат"
|
"topic_delete": "Удалить чат",
|
||||||
|
"password_reset_email_sent": "Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль."
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -176,5 +176,6 @@
|
|||||||
"upload_finishing": "正在完成...",
|
"upload_finishing": "正在完成...",
|
||||||
"user_not_found": "找不到",
|
"user_not_found": "找不到",
|
||||||
"validate_credential_action": "確認",
|
"validate_credential_action": "確認",
|
||||||
"topic_delete": "刪除聊天"
|
"topic_delete": "刪除聊天",
|
||||||
|
"password_reset_email_sent": "一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。"
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -176,5 +176,6 @@
|
|||||||
"drafty_attachment": "附件",
|
"drafty_attachment": "附件",
|
||||||
"drafty_form": "形式:",
|
"drafty_form": "形式:",
|
||||||
"drafty_image": "图像",
|
"drafty_image": "图像",
|
||||||
"topic_delete": "删除聊天"
|
"topic_delete": "删除聊天",
|
||||||
|
"password_reset_email_sent": "一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。"
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-7
@@ -177,7 +177,8 @@
|
|||||||
"drafty_attachment": "Dateianhang",
|
"drafty_attachment": "Dateianhang",
|
||||||
"drafty_form": "Formular:",
|
"drafty_form": "Formular:",
|
||||||
"drafty_image": "Bild",
|
"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": {
|
"en": {
|
||||||
"action_block_contact": "Block Contact",
|
"action_block_contact": "Block Contact",
|
||||||
@@ -302,6 +303,7 @@
|
|||||||
"numeric_confirmation_code_prompt": "Numbers only",
|
"numeric_confirmation_code_prompt": "Numbers only",
|
||||||
"online_now": "online now",
|
"online_now": "online now",
|
||||||
"password_prompt": "Password",
|
"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",
|
"password_unchanged_prompt": "Unchanged",
|
||||||
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
"peers_messaging_disabled": "Peer's messaging is disabled.",
|
||||||
"permission_admin": "Approve ({val})",
|
"permission_admin": "Approve ({val})",
|
||||||
@@ -538,7 +540,8 @@
|
|||||||
"drafty_attachment": "Archivo",
|
"drafty_attachment": "Archivo",
|
||||||
"drafty_form": "Formulario:",
|
"drafty_form": "Formulario:",
|
||||||
"drafty_image": "Imagen",
|
"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": {
|
"ko": {
|
||||||
"validate_credential_action": "확인",
|
"validate_credential_action": "확인",
|
||||||
@@ -718,7 +721,8 @@
|
|||||||
"drafty_attachment": "부착",
|
"drafty_attachment": "부착",
|
||||||
"drafty_form": "형태:",
|
"drafty_form": "형태:",
|
||||||
"drafty_image": "이미지",
|
"drafty_image": "이미지",
|
||||||
"topic_delete": "채팅 삭제"
|
"topic_delete": "채팅 삭제",
|
||||||
|
"password_reset_email_sent": "이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요."
|
||||||
},
|
},
|
||||||
"ro": {
|
"ro": {
|
||||||
"validate_credential_action": "confirmă",
|
"validate_credential_action": "confirmă",
|
||||||
@@ -898,7 +902,8 @@
|
|||||||
"drafty_attachment": "Atasament",
|
"drafty_attachment": "Atasament",
|
||||||
"drafty_form": "Formă:",
|
"drafty_form": "Formă:",
|
||||||
"drafty_image": "Imagine",
|
"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": {
|
"ru": {
|
||||||
"contacts_not_found": "Чатов нет<br />¯∖_(ツ)_/¯",
|
"contacts_not_found": "Чатов нет<br />¯∖_(ツ)_/¯",
|
||||||
@@ -1078,7 +1083,8 @@
|
|||||||
"drafty_attachment": "Аттачмент",
|
"drafty_attachment": "Аттачмент",
|
||||||
"drafty_form": "Форма:",
|
"drafty_form": "Форма:",
|
||||||
"drafty_image": "Картинка",
|
"drafty_image": "Картинка",
|
||||||
"topic_delete": "Удалить чат"
|
"topic_delete": "Удалить чат",
|
||||||
|
"password_reset_email_sent": "Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль."
|
||||||
},
|
},
|
||||||
"zh-TW": {
|
"zh-TW": {
|
||||||
"action_block_contact": "封鎖聯絡人",
|
"action_block_contact": "封鎖聯絡人",
|
||||||
@@ -1258,7 +1264,8 @@
|
|||||||
"upload_finishing": "正在完成...",
|
"upload_finishing": "正在完成...",
|
||||||
"user_not_found": "找不到",
|
"user_not_found": "找不到",
|
||||||
"validate_credential_action": "確認",
|
"validate_credential_action": "確認",
|
||||||
"topic_delete": "刪除聊天"
|
"topic_delete": "刪除聊天",
|
||||||
|
"password_reset_email_sent": "一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。"
|
||||||
},
|
},
|
||||||
"zh": {
|
"zh": {
|
||||||
"archived_contacts": "已归档联系人 ({count})",
|
"archived_contacts": "已归档联系人 ({count})",
|
||||||
@@ -1438,6 +1445,7 @@
|
|||||||
"drafty_attachment": "附件",
|
"drafty_attachment": "附件",
|
||||||
"drafty_form": "形式:",
|
"drafty_form": "形式:",
|
||||||
"drafty_image": "图像",
|
"drafty_image": "图像",
|
||||||
"topic_delete": "删除聊天"
|
"topic_delete": "删除聊天",
|
||||||
|
"password_reset_email_sent": "一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ export default class PasswordResetView extends React.PureComponent {
|
|||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
email: '',
|
email: '',
|
||||||
password: ''
|
password: '',
|
||||||
|
sent: false
|
||||||
};
|
};
|
||||||
|
|
||||||
this.handleSubmit = this.handleSubmit.bind(this);
|
this.handleSubmit = this.handleSubmit.bind(this);
|
||||||
@@ -21,7 +22,7 @@ export default class PasswordResetView extends React.PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
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});
|
this.setState({token: parsed.params.token, scheme: parsed.params.scheme});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,8 +30,14 @@ export default class PasswordResetView extends React.PureComponent {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
if (this.state.token) {
|
if (this.state.token) {
|
||||||
this.props.onReset(this.state.scheme, this.state.password.trim(), 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 {
|
} 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() {
|
render() {
|
||||||
let reset = (this.state.token && this.state.scheme);
|
|
||||||
return (
|
return (
|
||||||
<form id="password-reset-form" onSubmit={this.handleSubmit}>
|
<form id="password-reset-form" onSubmit={this.handleSubmit}>
|
||||||
{reset ?
|
{(this.state.token && this.state.scheme) ?
|
||||||
<FormattedMessage id="new_password_placeholder" defaultMessage="Enter new password"
|
<FormattedMessage id="new_password_placeholder" defaultMessage="Enter new password"
|
||||||
description="Placeholder for entering new password">{
|
description="Placeholder for entering new password">{
|
||||||
(placeholder) => <VisiblePassword
|
(placeholder) => <VisiblePassword
|
||||||
@@ -56,7 +62,17 @@ export default class PasswordResetView extends React.PureComponent {
|
|||||||
required={true} autoFocus={true}
|
required={true} autoFocus={true}
|
||||||
onChange={this.handlePasswordChange} />
|
onChange={this.handlePasswordChange} />
|
||||||
}</FormattedMessage>
|
}</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">
|
<label htmlFor="inputEmail">
|
||||||
<FormattedMessage id="label_reset_password"
|
<FormattedMessage id="label_reset_password"
|
||||||
@@ -75,8 +91,13 @@ export default class PasswordResetView extends React.PureComponent {
|
|||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
<div className="dialog-buttons">
|
<div className="dialog-buttons">
|
||||||
<button className="primary" type="submit">{reset ?
|
<button className="primary" type="submit">{
|
||||||
<FormattedMessage id="button_reset" defaultMessage="Reset" description="Button [Reset]" /> :
|
(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"
|
<FormattedMessage id="button_send_request" defaultMessage="Send request"
|
||||||
description="Button [Send request]" />
|
description="Button [Send request]" />
|
||||||
}</button>
|
}</button>
|
||||||
|
|||||||
@@ -1496,7 +1496,7 @@ class TinodeWeb extends React.Component {
|
|||||||
|
|
||||||
handlePasswordResetRequest(method, value) {
|
handlePasswordResetRequest(method, value) {
|
||||||
// If already connected, connnect() will return a resolved promise.
|
// If already connected, connnect() will return a resolved promise.
|
||||||
this.tinode.connect()
|
return this.tinode.connect()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
return this.tinode.requestResetAuthSecret('basic', method, value);
|
return this.tinode.requestResetAuthSecret('basic', method, value);
|
||||||
})
|
})
|
||||||
|
|||||||
+42
-9
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user