password reset works, missing translations

This commit is contained in:
or-else
2023-01-26 15:58:33 -08:00
parent 6c36324ed4
commit d8f7a41bdd
55 changed files with 490 additions and 390 deletions
+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
+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
+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
+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
+1 -1
View File
File diff suppressed because one or more lines are too long
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Passwort per E-Mail wiederherstellen:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "Anruf",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "Laden...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "Ich habe Code",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "SMS zum Zurücksetzen des Passworts senden",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "Mobiltelefonnummer",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "Eine Textnachricht mit Sicherheitscode wurde an {phone} gesendet. Geben Sie den Code unten ein.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Handynummer erforderlich",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+11 -11
View File
@@ -357,8 +357,8 @@
"obsolete": false
},
"enter_confirmation_code_prompt": {
"translation": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"translation": "Confirmation code",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Send a password reset email:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1571,16 +1571,9 @@
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "Mobile phone number",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": false,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "Send a password reset SMS:",
"defaultMessage": "Send a password reset SMS:",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": false,
"obsolete": false
@@ -1598,5 +1591,12 @@
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Mobile phone number required",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "Introduzca el código de confirmación enviado a tu {method}:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Enviar un correo electrónico de restablecimiento de contraseña:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "Llamada",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "Cargando...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "Tengo código",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "Enviar SMS para restablecer la contraseña",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "Número de teléfono móvil",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "Se ha enviado un mensaje de texto con un código de seguridad a {phone}. Ingresa el código a continuación.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Número de teléfono móvil requerido",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+7 -3
View File
@@ -268,7 +268,7 @@
"description": "Call to action to enable peer's messaging"
},
"enter_confirmation_code_prompt": {
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code"
},
"error_invalid_id": {
@@ -415,11 +415,11 @@
"description": "Label for push notifications switch"
},
"label_reset_password": {
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field"
},
"label_reset_password_tel": {
"defaultMessage": "Send a password reset SMS:",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone"
},
"label_sdk": {
@@ -604,6 +604,10 @@
"defaultMessage": "Messaging disabled",
"description": "Prompt in SendMessage in read-only topic"
},
"mobile_number_required": {
"defaultMessage": "Mobile phone number required",
"description": "Error message"
},
"mobile_phone_number": {
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number"
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "Entrez le code de confirmation envoyé par {method}:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Envoyer un mail de remise à zéro de mot de passe :",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "Appel",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "Chargement...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "J'ai du code",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "Envoyer un SMS pour réinitialiser le mot de passe",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "Numéro de téléphone mobile",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "Un SMS avec un code de sécurité a été envoyé à {phone}. Saisissez le code ci-dessous.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Numéro de téléphone portable requis",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "{방법}으로보낸확인코드를입력하십시오:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "비밀번호재설정이메일보내기: ",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "부르다",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "로드 중...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "코드가 있습니다",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "비밀번호 재설정을 위해 SMS 보내기",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "휴대전화 번호",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "보안 코드가 포함된 문자 메시지가 {phone}로 전송되었습니다. 아래 코드를 입력하세요.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "휴대전화 번호 필요",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "Introu codul de confirmare trimis pe {method}:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Resetează parola:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "Apel",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "Se încarcă...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "Am cod",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "Trimite SMS pentru a reseta parola",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "Număr de telefon mobil",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "Un mesaj text cu cod de securitate a fost trimis la {phone}. Introduceți codul de mai jos.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Este necesar un număr de telefon mobil",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "Код подтверждения, полученный по {method}:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "Отправить емейл для смены пароля:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "Позвонить",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "Загружается...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "У меня есть код",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "Отправить SMS для сброса пароля",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "Номер мобильного телефона",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "SMS с защитным кодом отправлено на {phone}. Введите код ниже.",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "Номер мобильного телефона",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "輸入透過 {method} 傳送給您的確認碼:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "傳送重設密碼郵件:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "稱呼",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "加載中...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "我有代碼",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "發送短信重置密碼",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "手機號碼",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "帶有安全碼的短信已發送至{phone}。請在下方輸入密碼。",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "需要手機號",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+22 -22
View File
@@ -358,7 +358,7 @@
},
"enter_confirmation_code_prompt": {
"translation": "输入通过{method}发送的验证码:",
"defaultMessage": "Enter confirmation code sent to you by {method}:",
"defaultMessage": "Confirmation code",
"description": "Request to enter confirmation code",
"missing": false,
"obsolete": false
@@ -533,7 +533,7 @@
},
"label_reset_password": {
"translation": "发送密码重置邮件:",
"defaultMessage": "Send a password reset email:",
"defaultMessage": "Send a password reset email",
"description": "Label for password reset field",
"missing": false,
"obsolete": false
@@ -1544,10 +1544,10 @@
"obsolete": false
},
"menu_item_audio_call": {
"translation": "",
"translation": "称呼",
"defaultMessage": "Call",
"description": "Start audio call",
"missing": true,
"missing": false,
"obsolete": false
},
"unrecognized_video_format": {
@@ -1558,45 +1558,45 @@
"obsolete": false
},
"loading_note": {
"translation": "",
"translation": "加载中...",
"defaultMessage": "Loading...",
"description": "Message shown when component is loading",
"missing": true,
"missing": false,
"obsolete": false
},
"password_i_have_code": {
"translation": "",
"translation": "我有代码",
"defaultMessage": "I have code",
"description": "Call to open field to enter password reset code",
"missing": true,
"missing": false,
"obsolete": false
},
"uG7N1B": {
"translation": "",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"obsolete": true
},
"label_reset_password_tel": {
"translation": "",
"defaultMessage": "Send a password reset SMS:",
"translation": "发送短信重置密码",
"defaultMessage": "Send SMS to reset password",
"description": "Label for password reset field by phone",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_phone_number": {
"translation": "",
"translation": "手机号",
"defaultMessage": "Mobile phone number",
"description": "Prompt for entering a mobile phone number",
"missing": true,
"missing": false,
"obsolete": false
},
"password_reset_sms_sent": {
"translation": "",
"translation": "带有安全码的短信已发送至{phone}。请在下方输入密码。",
"defaultMessage": "A text message with security code has been sent to {phone}. Enter the code below.",
"description": "Notification that the SMS with password reset instructions has been sent",
"missing": true,
"missing": false,
"obsolete": false
},
"mobile_number_required": {
"translation": "需要手机号",
"defaultMessage": "Mobile phone number required",
"description": "Error message",
"missing": false,
"obsolete": false
}
}
+8 -8
View File
@@ -32,8 +32,6 @@ export default class CreateAccountView extends React.PureComponent {
newAvatarMime: null,
errorCleared: false,
buttonDisabled: false,
// method: '',
method: 'tel',
saveToken: LocalStorageUtil.getObject('keep-logged-in')
};
@@ -49,12 +47,11 @@ export default class CreateAccountView extends React.PureComponent {
this.uploadAvatar = this.uploadAvatar.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
// Connection will trigger change by changing the this.props.serverVersion.
props.tinode.connect()
.catch(err => {
this.props.onError(err.message, 'err');
})
// "reqCred":{"auth":["email"]}
//.finally(_ => this.setState({method: (props.tinode.getServerParam('reqCred', {}).auth || [])[0] || 'email'}));
});
}
handleLoginChange(e) {
@@ -147,6 +144,9 @@ export default class CreateAccountView extends React.PureComponent {
}
render() {
// "reqCred":{"auth":["email"]}
const method = (this.props.tinode.getServerParam('reqCred', {}).auth || [])[0] || 'email';
if (this.state.newAvatar) {
return (
<AvatarCrop
@@ -166,7 +166,7 @@ export default class CreateAccountView extends React.PureComponent {
return (
<form className="panel-form-column" onSubmit={this.handleSubmit}>
<div className="panel-form-row">
<div className="panel-form-column">
<div className="umn">
<FormattedMessage id="login_prompt" defaultMessage="Login"
description="Placeholer for username/login">{
(login_prompt) => <input type="text" placeholder={login_prompt} autoComplete="user-name"
@@ -192,7 +192,7 @@ export default class CreateAccountView extends React.PureComponent {
value={this.state.fn} onChange={this.handleFnChange} required/>
}</FormattedMessage>
</div>
{this.state.method == 'email' ?
{method == 'email' ?
<div className="panel-form-row">
<FormattedMessage id="email_prompt" defaultMessage="Email, e.g. jdoe@example.com"
description="Input placeholder for email entry">{
@@ -200,7 +200,7 @@ export default class CreateAccountView extends React.PureComponent {
value={this.state.email} onChange={this.handleEmailChange} required/>
}</FormattedMessage>
</div>
: this.state.method == 'tel' ?
: method == 'tel' ?
<><div className="panel-form-row">
<label className="small gray"><FormattedMessage id="mobile_phone_number" defaultMessage="Mobile phone number"
description="Prompt for entering a mobile phone number" /></label>
+100 -67
View File
@@ -16,21 +16,21 @@ export default class PasswordResetView extends React.PureComponent {
email: '',
password: '',
sent: false,
method: '',
haveCode: false
haveCode: false,
code: ''
};
this.handleSubmit = this.handleSubmit.bind(this);
this.handleEmailChange = this.handleEmailChange.bind(this);
this.handlePasswordChange = this.handlePasswordChange.bind(this);
this.handleCodeChange = this.handleCodeChange.bind(this);
this.handleShowCodeField = this.handleShowCodeField.bind(this);
// Connection will trigger change by changing the this.props.serverVersion.
props.tinode.connect()
.catch(err => {
this.props.onError(err.message, 'err');
})
// "reqCred":{"auth":["email"]}
.finally(_ => this.setState({method: (props.tinode.getServerParam('reqCred', {}).auth || [])[0] || 'email'}));
});
}
componentDidMount() {
@@ -41,13 +41,24 @@ export default class PasswordResetView extends React.PureComponent {
handleSubmit(e) {
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();
// Reset using token.
this.props.onReset(this.state.password.trim(), {
scheme: 'token',
token: this.state.token
});
} else if (this.state.code && this.method) {
// Reset using security code.
// The secret is structured as <code>:<cred_method>:<cred_value>, "123456:email:alice@example.com".
const cred = this.state.email.trim() || this.state.tel.trim();
this.props.onReset(this.state.password.trim(), {
scheme: 'code',
secret: `${this.state.code}:${this.method}:${cred}`
});
} else {
const email = this.state.email.trim();
this.setState({email: email});
this.props.onRequest('email', email).then(_ => this.setState({sent: true}));
const tel = this.state.tel.trim();
this.setState({email: email, tel: tel});
this.props.onRequest(this.method, email || tel).then(_ => this.setState({sent: true}));
}
}
@@ -59,15 +70,24 @@ export default class PasswordResetView extends React.PureComponent {
this.setState({password: e.target.value});
}
handleCodeChange(e) {
this.setState({code: e.target.value.replace(/[^\d]/g, '')});
}
handleShowCodeField(e) {
e.preventDefault();
this.setState({haveCode: true});
}
render() {
const showPasswordInput = (this.state.token && this.state.scheme) || this.state.haveCode;
// "reqCred":{"auth":["email"]}
this.method = (this.props.tinode.getServerParam('reqCred', {}).auth || [])[0] || 'email';
const showCredentialInput = !(this.state.token && this.state.scheme);
const showPasswordInput = !showCredentialInput || this.state.haveCode || this.state.sent;
const passwordInput = (<>
<label htmlFor="new-password">
<label className="small gray" htmlFor="new-password">
<FormattedMessage id="label_new_password"
defaultMessage="New password"
description="Label for entering a new password" />
@@ -89,7 +109,7 @@ export default class PasswordResetView extends React.PureComponent {
null :
<label htmlFor="inputEmail">
<FormattedMessage id="label_reset_password"
defaultMessage="Send a password reset email:"
defaultMessage="Send a password reset email"
description="Label for password reset field" />
</label>
}
@@ -107,71 +127,84 @@ export default class PasswordResetView extends React.PureComponent {
const phoneInput = (<>
{this.state.haveCode ?
null :
<label>
<div><label>
<FormattedMessage id="label_reset_password_tel"
defaultMessage="Send a password reset SMS:"
defaultMessage="Send SMS to reset password"
description="Label for password reset field by phone" />
</label>
</label></div>
}
<label className="small gray">
<FormattedMessage id="mobile_phone_number" defaultMessage="Mobile phone number"
description="Prompt for entering a mobile phone number" />
</label>
<Suspense fallback={<div><FormattedMessage id="loading_note" defaultMessage="Loading..."
description="Message shown when component is loading"/></div>}>
<PhoneEdit
autoFocus={false}
onShowCountrySelector={(code, dial) => console.log('onShowCountrySelector', code, dial)}
onSubmit={(code, dial) => console.log('onSubmit', code, dial)} />
</Suspense>
<div>
<label className="small gray">
<FormattedMessage id="mobile_phone_number" defaultMessage="Mobile phone number"
description="Prompt for entering a mobile phone number" />
</label>
</div>
<div className="panel-form-row">
<Suspense fallback={<div className="panel-form-row"><FormattedMessage id="loading_note"
defaultMessage="Loading..." description="Message shown when component is loading"/></div>}>
<PhoneEdit
autoFocus={true}
onShowCountrySelector={this.props.onShowCountrySelector}
onSubmit={number => this.setState({tel: number})} />
</Suspense>
</div>
</>);
const sentNotification = (<>{
this.method == 'email' ?
<FormattedMessage id="password_reset_email_sent"
defaultMessage="An email with security code has been sent to {email}. Enter the code below."
values={{email: <tt>{this.state.email}</tt>}}
description="Notification that the email with password reset instructions has been sent" />
: this.method == 'tel' ?
<FormattedMessage id="password_reset_sms_sent"
defaultMessage="A text message with security code has been sent to {phone}. Enter the code below."
values={{phone: <tt>{this.state.tel}</tt>}}
description="Notification that the SMS with password reset instructions has been sent" />
:
null
}</>);
const codeInput = (<>
<div>
<label className="small gray" htmlFor="enter-confirmation-code">
<FormattedMessage id="enter_confirmation_code_prompt"
defaultMessage="Confirmation code"
description="Request to enter confirmation code" />
</label>
</div>
<div>
<FormattedMessage id="numeric_confirmation_code_prompt"
defaultMessage="Numbers only" description="Prompt for numeric conformation code">{
(numbers_only) => <input type="text" id="enter-confirmation-code"
placeholder={numbers_only} maxLength={10}
value={this.state.code} onChange={this.handleCodeChange} required />
}</FormattedMessage>
</div>
</>);
const credentialInput = this.method == 'email' ? emailInput : this.method == 'tel' ? phoneInput : null;
return (
<form id="password-reset-form" onSubmit={this.handleSubmit}>
{showPasswordInput ?
passwordInput
: this.state.sent ?
<>
<br/>
<center><i className="material-icons huge green">task_alt</i></center>
<br/>
<center>{
this.state.method == 'email' ?
<FormattedMessage id="password_reset_email_sent"
defaultMessage="An email with security code has been sent to {email}. Enter the code below."
values={{ email: <tt>{this.state.email}</tt> }}
description="Notification that the email with password reset instructions has been sent" />
: this.state.method == 'tel' ?
<FormattedMessage id="password_reset_sms_sent"
defaultMessage="A text message with security code has been sent to {phone}. Enter the code below."
values={{ email: <tt>{this.state.tel}</tt> }}
description="Notification that the SMS with password reset instructions has been sent" />
:
null
}</center>
</>
: this.state.method == 'email' ? emailInput : this.state.method == 'tel' ? phoneInput : null
}
{this.state.sent ? sentNotification : showCredentialInput ? credentialInput : null}
{this.state.haveCode || this.state.sent ? codeInput : null}
{showPasswordInput ? passwordInput : null}
<div className="dialog-buttons">
<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>
</div>
{this.state.haveCode ? null :
<div className="panel-form-row">
<a href="#" onClick={this.handleShowCodeField}>
{this.state.haveCode || this.state.sent ? null :
<a href="#" onClick={this.handleShowCodeField} style={{marginRight: 'auto'}}>
<FormattedMessage id="password_i_have_code" defaultMessage="I have code"
description="Call to open field to enter password reset code" />
</a>
</div>
}
}
<button className="primary" type="submit">{
showPasswordInput ?
<FormattedMessage id="button_reset" defaultMessage="Reset" description="Button [Reset]" />
:
<FormattedMessage id="button_send_request" defaultMessage="Send request"
description="Button [Send request]" />
}</button>
</div>
</form>
);
}
+3
View File
@@ -157,6 +157,7 @@ class SidepanelView extends React.PureComponent {
view === 'register' ?
<CreateAccountView
tinode={this.props.tinode}
serverVersion={this.props.serverVersion}
onShowCountrySelector={this.props.onShowCountrySelector}
onCreateAccount={this.props.onCreateAccount}
onCancel={this.props.onCancel}
@@ -247,6 +248,8 @@ class SidepanelView extends React.PureComponent {
view === 'reset' ?
<PasswordResetView
tinode={this.props.tinode}
serverVersion={this.props.serverVersion}
onShowCountrySelector={this.props.onShowCountrySelector}
onRequest={this.props.onPasswordResetRequest}
onReset={this.props.onResetPassword}
onCancel={this.props.onCancel} /> :
+4 -4
View File
@@ -1712,13 +1712,13 @@ class TinodeWeb extends React.Component {
});
}
handleResetPassword(scheme, newPassword, token) {
token = base64ReEncode(token);
if (!token) {
handleResetPassword(newPassword, tempAuth) {
const secret = base64ReEncode(tempAuth.secret);
if (!secret || !tempAuth.scheme) {
this.handleError(this.props.intl.formatMessage(messages.invalid_security_token), 'err');
} else {
this.tinode.connect()
.then(_ => this.tinode.updateAccountBasic(null, null, newPassword, {token: token}))
.then(_ => this.tinode.updateAccountBasic(null, null, newPassword, {scheme: tempAuth.scheme, secret: secret}))
.then(_ => HashNavigation.navigateTo(''))
.catch(err => {
// Socket error
+9 -9
View File
@@ -87,21 +87,21 @@ class ValidationView extends React.PureComponent {
return (
<div className="panel-form">
<div className="panel-form-row">
<label className="small" htmlFor="enter-confirmation-code">
<label className="small gray" htmlFor="enter-confirmation-code">
<FormattedMessage id="enter_confirmation_code_prompt"
defaultMessage="Enter confirmation code sent to you by {method}:"
defaultMessage="Confirmation code"
description="Request to enter confirmation code"
values={{method: method}} />
</label>
</div>
<div className="panel-form-row">
<FormattedMessage id="numeric_confirmation_code_prompt"
defaultMessage="Numbers only" description="Prompt for numeric conformation code">{
(numbers_only) => <input type="text" id="enter-confirmation-code"
placeholder={numbers_only}
value={this.state.code} onChange={this.handleChange}
onKeyPress={this.handleKeyPress} required />
}</FormattedMessage>
<FormattedMessage id="numeric_confirmation_code_prompt"
defaultMessage="Numbers only" description="Prompt for numeric conformation code">{
(numbers_only) => <input type="text" id="enter-confirmation-code"
placeholder={numbers_only}
value={this.state.code} onChange={this.handleChange}
onKeyPress={this.handleKeyPress} required />
}</FormattedMessage>
</div>
<div className="dialog-buttons">
<button className="secondary" onClick={this.handleCancel}>
+13 -5
View File
@@ -1,13 +1,21 @@
// Editor for a phone number.
import React from 'react';
import { injectIntl } from 'react-intl';
import { defineMessages, injectIntl } from 'react-intl';
import { getExampleNumber, parsePhoneNumber } from 'libphonenumber-js/mobile';
import examples from 'libphonenumber-js/mobile/examples'
import * as dcodes from '../dcodes.json';
import { flagEmoji } from '../lib/strformat';
const messages = defineMessages({
mobile_number_required: {
id: 'mobile_number_required',
defaultMessage: 'Mobile phone number required',
description: 'Error message'
}
});
class PhoneEdit extends React.PureComponent {
constructor(props) {
super(props);
@@ -37,14 +45,14 @@ class PhoneEdit extends React.PureComponent {
handleFinished(e) {
e.preventDefault();
const raw = `${this.state.dialCode}${this.state.localNumber.trim()}`.replace(/[^\d]/g, '')
const raw = `${this.state.dialCode}${this.state.localNumber.trim()}`.replace(/[^\d]/g, '');
let number = null;
try {
number = parsePhoneNumber(raw);
number = parsePhoneNumber(`+${raw}`);
} catch (err) {}
if (!number || !number.isValid()) {
this.inputField.setCustomValidity("Mobile phone number required");
this.inputField.setCustomValidity(this.props.intl.formatMessage(messages.mobile_number_required));
return;
}
this.props.onSubmit(number.format('E.164'));
@@ -80,7 +88,7 @@ class PhoneEdit extends React.PureComponent {
placeholderNumber(code, dial) {
const sample = getExampleNumber(code, examples);
return sample ? sample.formatInternational().substring(dial.length + 1).trim() : '123 456';
return sample ? sample.formatInternational().substring(dial.length + 1).trim() : '123 0123';
}
render() {