清理死代码:sidepanel-view.jsx里被chapterOneViews短路掉的旧版登录/注册/找回密码分支

不是功能修复,纯清理。sidepanel-view.jsx的render()方法开头(chapterOneViews数组
含'login'/'register'/'reset'等)已经对这些view值提前return真实对接后端的
AuthOnboardingView。但同一个render()方法下半部分的三元表达式链里,还留着一份基于
view==='login'/'register'/'reset'的旧分支,分别渲染LoginView/CreateAccountView/
PasswordResetView——由于上面的提前return,这三个view值永远不可能落到这里,是无法
触达的死代码。

确认方式:全仓库搜索确认SidepanelView只有tinode-web.jsx一处渲染入口,其view prop
(state={this.state.sidePanelSelected})只能来自handleHashRoute对SIDE_PANEL_VIEWS
白名单的校验结果——'login'/'register'/'reset'确实在这个白名单里(否则连
sidePanelSelected都设置不了),但chapterOneViews这个子集在render()内部的检查顺序
必然先于旧分支执行,所以旧分支不可能被触达。

删除范围:三个旧分支的JSX(对应import的LoginView/CreateAccountView懒加载/
PasswordResetView懒加载)+ 三个组件源文件本身(login-view.jsx/create-account-view.jsx/
password-reset-view.jsx,删除引用后确认全仓库不含任何其它referrer)+ 两个文件对应的
已生成umd构建产物(webpack不会自动清理不再产出的旧chunk文件,这两个是被删除源文件
遗留下来的孤儿产物)。'cred'分支(ValidationView,不在chapterOneViews里,仍在真实使用)
未改动。defineMessages里对应的login/register/reset翻译key本次未删——它们现在也
无法被messages[view]这条动态查找命中,但涉及i18n提取产物的联动改动超出这次清理范围,
如实记录,未处理。

验证:npm run build:dev干净通过(三个旧chunk不再产出);真实浏览器完整走了一遍
登录(已有账号)/注册(全新手机号)/找回密码(重置刚注册账号的密码,重置后用新密码
重新登录成功)三条流程,均无回归。
This commit is contained in:
Your Name
2026-09-06 17:31:20 +08:00
parent ac8f0cf315
commit c2e07a89b8
12 changed files with 193 additions and 1427 deletions
-233
View File
@@ -1,233 +0,0 @@
// Account registration.
import React, { Suspense } from 'react';
import { FormattedMessage } from 'react-intl';
import AvatarCrop from '../widgets/avatar-crop.jsx';
import AvatarUpload from '../widgets/avatar-upload.jsx';
import CheckBox from '../widgets/checkbox.jsx';
import PhoneEdit from '../widgets/phone-edit.jsx';
import VisiblePassword from '../widgets/visible-password.jsx';
import LocalStorageUtil from '../lib/local-storage.js';
import { imageScaled, blobToBase64, makeImageUrl } from '../lib/blob-helpers.js';
import { theCard } from '../lib/utils.js';
import { truncateString } from '../lib/strformat.js';
import { AVATAR_SIZE, MAX_AVATAR_BYTES, MAX_EXTERN_ATTACHMENT_SIZE,
MAX_TITLE_LENGTH } from '../config.js';
export default class CreateAccountView extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
login: '',
password: '',
meth: '',
email: '',
tel: '',
fn: '', // full/formatted name
imageUrl: null,
uploadUrl: null,
newAvatar: null,
newAvatarMime: null,
buttonDisabled: false,
saveToken: LocalStorageUtil.getObject('keep-logged-in')
};
this.handleLoginChange = this.handleLoginChange.bind(this);
this.handlePasswordChange = this.handlePasswordChange.bind(this);
this.handleEmailChange = this.handleEmailChange.bind(this);
this.handlePhoneChange = this.handlePhoneChange.bind(this);
this.handleFnChange = this.handleFnChange.bind(this);
this.handleImageChanged = this.handleImageChanged.bind(this);
this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);
this.handleAvatarCropped = this.handleAvatarCropped.bind(this);
this.handleAvatarCropCancel = this.handleAvatarCropCancel.bind(this);
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');
});
}
handleLoginChange(e) {
this.setState({login: e.target.value});
}
handlePasswordChange(password) {
this.setState({password: password});
}
handleEmailChange(e) {
this.setState({meth: 'email', email: e.target.value});
}
handlePhoneChange(number) {
this.setState({meth: 'tel', tel: number});
}
handleFnChange(e) {
this.setState({fn: e.target.value});
}
handleImageChanged(mime, img) {
this.setState({newAvatar: img, newAvatarMime: mime});
if (!img) {
// User cleared the image.
this.setState({imageUrl: null, uploadUrl: null});
}
}
handleToggleSaveToken() {
LocalStorageUtil.setObject('keep-logged-in', !this.state.saveToken);
this.setState({saveToken: !this.state.saveToken});
}
handleSubmit(e) {
e.preventDefault();
this.props.onCreateAccount(
this.state.login.trim(),
this.state.password.trim(),
theCard(truncateString(this.state.fn.trim(), MAX_TITLE_LENGTH), this.state.uploadUrl),
{
'meth': this.state.meth,
'val': this.state.meth == 'email' ?
this.state.email :
this.state.meth == 'tel' ? this.state.tel : null
}
);
}
// AvatarCropView calls this method when the user has cropped the image.
handleAvatarCropped(mime, blob, width, height) {
const url = blob ? URL.createObjectURL(blob) : null;
this.setState({newAvatar: null, newAvatarMime: null});
if (blob) {
this.uploadAvatar(mime, blob, width, height);
}
}
handleAvatarCropCancel() {
this.setState({newAvatar: null, newAvatarMime: null});
}
// Utility method for converting cropped avatar blob to bytes for sending inband or
// for uploading it to the server out of band.
uploadAvatar(mime, blob, width, height) {
const readyToUpload = image => {
let {mime, blob} = image;
this.setState({imageUrl: URL.createObjectURL(blob), buttonDisabled: true});
if (blob.size > MAX_AVATAR_BYTES) {
// Too large to send inband - uploading out of band and sending as a link.
const uploader = this.props.tinode.getLargeFileHelper();
uploader.upload(blob, 'newacc')
.then(url => this.setState({uploadUrl: url}))
.catch(err => this.props.onError(err.message, 'err'))
.finally(_ => this.setState({buttonDisabled: false}));
} else {
// Convert blob to base64-encoded bits.
blobToBase64(blob)
.then(b64 => this.setState({uploadUrl: makeImageUrl({data: b64.bits, type: mime})}))
.finally(_ => this.setState({buttonDisabled: false}));
}
};
if (width > AVATAR_SIZE || height > AVATAR_SIZE || width != height) {
// Avatar is not square or too large even after cropping. Shrink it and make square.
imageScaled(blob, AVATAR_SIZE, AVATAR_SIZE, MAX_EXTERN_ATTACHMENT_SIZE, true)
.then(scaled => readyToUpload(scaled))
.catch(err => this.props.onError(err.message, 'err'));
} else {
readyToUpload({mime: mime, blob: blob, width: width, height: height});
}
}
render() {
if (this.state.newAvatar) {
return (
<AvatarCrop
avatar={this.state.newAvatar}
mime={this.state.newAvatarMime}
onSubmit={this.handleAvatarCropped}
onCancel={this.handleAvatarCropCancel}
onError={this.props.onError} />
);
}
let submitClasses = 'primary';
if (this.props.disabled) {
submitClasses += ' disabled';
}
return (
<form className="panel-form-column" onSubmit={this.handleSubmit}>
<div className="panel-form-row">
<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"
value={this.state.login} onChange={this.handleLoginChange} required autoFocus />
}</FormattedMessage>
<FormattedMessage id="password_prompt" defaultMessage="Password"
description="Placeholder/prompt for entering password">{
(password_prompt) => <VisiblePassword placeholder={password_prompt} autoComplete="new-password"
value={this.state.password} onFinished={this.handlePasswordChange}
required={true} />
}</FormattedMessage>
</div>
<AvatarUpload
tinode={this.props.tinode}
avatar={this.state.imageUrl}
onImageUpdated={this.handleImageChanged}
onError={this.props.onError} />
</div>
<div className="panel-form-row">
<FormattedMessage id="full_name_prompt" defaultMessage="Full name, e.g. John Doe"
description="Input placeholder for person's full name">{
(full_name_prompt) => <input type="text" placeholder={full_name_prompt} autoComplete="name"
value={this.state.fn} onChange={this.handleFnChange} required/>
}</FormattedMessage>
</div>
{this.props.reqCredMethod == 'email' ?
<div className="panel-form-row">
<FormattedMessage id="email_prompt" defaultMessage="Email, e.g. jdoe@example.com"
description="Input placeholder for email entry">{
(email_prompt) => <input type="email" placeholder={email_prompt} autoComplete="email"
value={this.state.email} onChange={this.handleEmailChange} required/>
}</FormattedMessage>
</div>
: this.props.reqCredMethod == '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>
</div>
<div className="panel-form-row">
<PhoneEdit
autoFocus={false}
onShowCountrySelector={this.props.onShowCountrySelector}
onSubmit={this.handlePhoneChange} />
</div></>
: null
}
<div className="panel-form-row">
<CheckBox id="save-token" name="save-token" checked={this.state.saveToken}
onChange={this.handleToggleSaveToken} />
<FormattedMessage id="stay_logged_in" defaultMessage="Stay logged in"
description="Label for a checkbox">{
(stay_logged_in) => <label htmlFor="save-token">&nbsp;{stay_logged_in}</label>
}</FormattedMessage>
</div>
<div className="dialog-buttons">
<button className={submitClasses} type="submit" disabled={this.state.buttonDisabled}>
<FormattedMessage id="button_sign_up" defaultMessage="Sign up"
description="Create account button [Sign Up]" />
</button>
</div>
</form>
);
}
};
-95
View File
@@ -1,95 +0,0 @@
// Login form.
import React from 'react';
import { FormattedMessage } from 'react-intl';
import CheckBox from '../widgets/checkbox.jsx';
import VisiblePassword from '../widgets/visible-password.jsx';
export default class LoginView extends React.Component {
constructor(props) {
super(props);
this.state = {
login: props.login,
password: '',
hostName: props.serverAddress,
saveToken: props.persist
};
this.handleLoginChange = this.handleLoginChange.bind(this);
this.handlePasswordChange = this.handlePasswordChange.bind(this);
this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleLoginChange(e) {
this.setState({login: e.target.value});
}
handlePasswordChange(e) {
this.setState({password: e.target.value});
}
handleToggleSaveToken() {
this.props.onPersistenceChange(!this.state.saveToken);
this.setState({saveToken: !this.state.saveToken});
}
handleSubmit(e) {
e.preventDefault();
this.props.onLogin(this.state.login.trim(), this.state.password.trim());
}
render() {
let submitClasses = 'primary';
if (this.props.disabled) {
submitClasses += ' disabled';
}
return (
<form id="login-form" onSubmit={this.handleSubmit}>
<FormattedMessage id="login_prompt" defaultMessage="Login"
description="Placeholer for username/login">
{
(login_prompt) => <input type="text" id="inputLogin"
placeholder={login_prompt}
autoComplete="username"
autoCorrect="off"
autoCapitalize="none"
value={this.state.login}
onChange={this.handleLoginChange}
required autoFocus />
}
</FormattedMessage>
<FormattedMessage id="password_prompt" defaultMessage="Password"
description="Placeholder/prompt for entering password">
{
(password_prompt) => <VisiblePassword type="password" id="inputPassword"
placeholder={password_prompt}
autoComplete="current-password"
value={this.state.password}
onChange={this.handlePasswordChange}
required={true} />
}
</FormattedMessage>
<div className="panel-form-row">
<CheckBox id="save-token" name="save-token" checked={this.state.saveToken}
onChange={this.handleToggleSaveToken} />
<label htmlFor="save-token">&nbsp;
<FormattedMessage id="stay_logged_in" defaultMessage="Stay logged in"
description="Label for a checkbox" />
</label>
<a href="#reset">
<FormattedMessage id="forgot_password_link" defaultMessage="Forgot password?"
description="Link to Reset password form" />
</a>
</div>
<div className="dialog-buttons">
<button className={submitClasses} type="submit">
<FormattedMessage id="button_sign_in" defaultMessage="Sign in"
description="Button [Sign In]" />
</button>
</div>
</form>
);
}
};
-231
View File
@@ -1,231 +0,0 @@
// A password reset form.
import React from 'react';
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import PhoneEdit from '../widgets/phone-edit.jsx';
import VisiblePassword from '../widgets/visible-password.jsx';
import HashNavigation from '../lib/navigation.js';
const messages = defineMessages({
password_reset_email_sent: {
id: 'password_reset_email_sent',
defaultMessage: 'An email with security code has been sent.',
description: 'Notification that the email with password reset instructions has been sent'
},
password_reset_sms_sent: {
id: 'password_reset_sms_sent',
defaultMessage: 'A text message with security code has been sent.',
description: 'Notification that the SMS with password reset instructions has been sent'
}
});
class PasswordResetView extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
tel: '',
email: '',
password: '',
sent: 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');
});
}
componentDidMount() {
const parsed = HashNavigation.parseUrlHash(window.location.hash);
const newState = {
token: parsed.params.token,
scheme: parsed.params.scheme,
code: parsed.params.code || ''
}
this.savedCred = parsed.params.cred;
if (this.props.reqCredMethod && parsed.params.cred) {
newState[this.props.reqCredMethod] = this.savedCred;
}
this.setState(newState);
}
componentDidUpdate(prevProps, prevState) {
if (prevProps.reqCredMethod != this.props.reqCredMethod && this.props.reqCredMethod) {
this.setState({[this.props.reqCredMethod]: this.savedCred || ''});
}
}
handleSubmit(e) {
e.preventDefault();
if (this.state.token) {
// Reset using token.
this.props.onReset(this.state.password.trim(), {
scheme: 'token',
secret: this.state.token
});
} else if (this.state.code && this.props.reqCredMethod) {
// Reset using security code.
// The secret is structured as <code>:<cred_method>:<cred_value>, "123456:email:alice@example.com".
const cred = this.props.reqCredMethod == 'email' ? this.state.email.trim() : this.state.tel.trim();
this.props.onReset(this.state.password.trim(), {
scheme: 'code',
secret: btoa(`${this.state.code}:${this.props.reqCredMethod}:${cred}`)
});
} else {
// Send email or SMS with the secret code.
const email = this.state.email.trim();
const tel = this.state.tel.trim();
this.setState({email: email, tel: tel});
this.props.onRequest(this.props.reqCredMethod, email || tel)
.then(_ => {
this.setState({sent: true});
const msg = this.props.reqCredMethod == 'email' ? messages.password_reset_email_sent :
this.props.reqCredMethod == 'tel' ? messages.password_reset_sms_sent : null;
if (msg) {
this.props.onError(this.props.intl.formatMessage(msg), 'info');
}
});
}
}
handleEmailChange(e) {
this.setState({email: e.target.value});
}
handlePasswordChange(e) {
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 showCredentialInput = !((this.state.token || (this.state.code && this.props.reqCredMethod)) && this.state.scheme);
const showPasswordInput = !showCredentialInput || this.state.haveCode || this.state.sent;
const passwordInput = (<>
<label className="small gray" htmlFor="new-password">
<FormattedMessage id="label_new_password"
defaultMessage="New password"
description="Label for entering a new password" />
</label>
<FormattedMessage id="new_password_placeholder" defaultMessage="Enter new password"
description="Placeholder for entering new password">{
(placeholder) => <VisiblePassword
id="new-password"
placeholder={placeholder}
autoComplete="new-password"
value={this.state.password}
required={true} autoFocus={true}
onChange={this.handlePasswordChange} />
}</FormattedMessage>
</>);
const emailInput = (<>
{this.state.haveCode ?
null :
<label htmlFor="inputEmail">
<FormattedMessage id="label_reset_password"
defaultMessage="Send a password reset email"
description="Label for password reset field" />
</label>
}
<FormattedMessage id="credential_email_prompt" defaultMessage="Your registration email"
description="Placeholder for entering email">{
(placeholder) => <input type="email" id="inputEmail"
placeholder={placeholder}
autoComplete="email"
value={this.state.email}
onChange={this.handleEmailChange}
required autoFocus />
}</FormattedMessage>
</>);
const phoneInput = (<>
{this.state.haveCode ?
null :
<div><label>
<FormattedMessage id="label_reset_password_tel"
defaultMessage="Send SMS to reset password"
description="Label for password reset field by phone" />
</label></div>
}
<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">
<PhoneEdit
autoFocus={true}
onShowCountrySelector={this.props.onShowCountrySelector}
onSubmit={number => this.setState({tel: number})} />
</div>
</>);
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.props.reqCredMethod == 'email' ?
emailInput : this.props.reqCredMethod == 'tel' ? phoneInput : null;
return (
<form id="password-reset-form" onSubmit={this.handleSubmit}>
{!this.state.sent && showCredentialInput ? credentialInput : null}
{this.state.haveCode || this.state.sent ? codeInput : null}
{showPasswordInput ? passwordInput : null}
<div className="dialog-buttons">
{this.state.haveCode || this.state.sent || this.state.token || this.state.code ? 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>
}
<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>
);
}
}
export default injectIntl(PasswordResetView);
+1 -37
View File
@@ -19,14 +19,11 @@ import SecuritySupportView, {SECURITY_SUPPORT_VIEWS} from './security-support-vi
const AccountSettingsView = React.lazy(_ => import('./account-settings-view.jsx')); const AccountSettingsView = React.lazy(_ => import('./account-settings-view.jsx'));
import ContactsView from './contacts-view.jsx'; import ContactsView from './contacts-view.jsx';
const CreateAccountView = React.lazy(_ => import('./create-account-view.jsx'));
import AccGeneralView from './acc-general-view.jsx'; import AccGeneralView from './acc-general-view.jsx';
import AccNotificationsView from './acc-notifications-view.jsx'; import AccNotificationsView from './acc-notifications-view.jsx';
const AccSecurityView = React.lazy(_ => import('./acc-security-view.jsx')); const AccSecurityView = React.lazy(_ => import('./acc-security-view.jsx'));
import AccSupportView from './acc-support-view.jsx'; import AccSupportView from './acc-support-view.jsx';
import LoginView from './login-view.jsx';
import NewTopicView from './new-topic-view.jsx'; import NewTopicView from './new-topic-view.jsx';
const PasswordResetView = React.lazy(_ => import('./password-reset-view.jsx'));
import SettingsView from './settings-view.jsx'; import SettingsView from './settings-view.jsx';
import ValidationView from './validation-view.jsx'; import ValidationView from './validation-view.jsx';
const WallpapersView = React.lazy(_ => import('./wallpapers.jsx')); const WallpapersView = React.lazy(_ => import('./wallpapers.jsx'));
@@ -282,27 +279,7 @@ class SidepanelView extends React.PureComponent {
<LoadSpinner show={this.props.loadSpinnerVisible} /> <LoadSpinner show={this.props.loadSpinnerVisible} />
{view === 'login' ? {view === 'settings' ?
<LoginView
login={this.props.login}
disabled={this.props.loginDisabled}
persist={this.props.persist}
onLogin={this.props.onLoginRequest}
onPersistenceChange={this.props.onPersistenceChange} /> :
view === 'register' ?
<Suspense fallback={<div className="panel-form-row"><FormattedMessage id="loading_note"
defaultMessage="Loading..." description="Message shown when component is loading"/></div>}>
<CreateAccountView
tinode={this.props.tinode}
reqCredMethod={this.props.reqCredMethod}
onShowCountrySelector={this.props.onShowCountrySelector}
onCreateAccount={this.props.onCreateAccount}
onCancel={this.props.onCancel}
onError={this.props.onError} />
</Suspense> :
view === 'settings' ?
<SettingsView <SettingsView
transport={this.props.transport} transport={this.props.transport}
serverAddress={this.props.serverAddress} serverAddress={this.props.serverAddress}
@@ -416,19 +393,6 @@ class SidepanelView extends React.PureComponent {
credToken={this.props.credToken} credToken={this.props.credToken}
onSubmit={this.props.onValidateCredentials} onSubmit={this.props.onValidateCredentials}
onCancel={this.props.onCancel} /> : onCancel={this.props.onCancel} /> :
view === 'reset' ?
<Suspense fallback={<div className="panel-form-row"><FormattedMessage id="loading_note"
defaultMessage="Loading..." description="Message shown when component is loading"/></div>}>
<PasswordResetView
tinode={this.props.tinode}
reqCredMethod={this.props.reqCredMethod}
onShowCountrySelector={this.props.onShowCountrySelector}
onRequest={this.props.onPasswordResetRequest}
onReset={this.props.onResetPassword}
onCancel={this.props.onCancel}
onError={this.props.onError} />
</Suspense> :
null} null}
</div> </div>
); );
+52 -232
View File
@@ -13244,141 +13244,6 @@ function GroupManagementView({
/***/ }), /***/ }),
/***/ "./src/views/login-view.jsx":
/*!**********************************!*\
!*** ./src/views/login-view.jsx ***!
\**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": function() { return /* binding */ LoginView; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _widgets_checkbox_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../widgets/checkbox.jsx */ "./src/widgets/checkbox.jsx");
/* harmony import */ var _widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widgets/visible-password.jsx */ "./src/widgets/visible-password.jsx");
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
class LoginView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) {
constructor(props) {
super(props);
this.state = {
login: props.login,
password: '',
hostName: props.serverAddress,
saveToken: props.persist
};
this.handleLoginChange = this.handleLoginChange.bind(this);
this.handlePasswordChange = this.handlePasswordChange.bind(this);
this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleLoginChange(e) {
this.setState({
login: e.target.value
});
}
handlePasswordChange(e) {
this.setState({
password: e.target.value
});
}
handleToggleSaveToken() {
this.props.onPersistenceChange(!this.state.saveToken);
this.setState({
saveToken: !this.state.saveToken
});
}
handleSubmit(e) {
e.preventDefault();
this.props.onLogin(this.state.login.trim(), this.state.password.trim());
}
render() {
let submitClasses = 'primary';
if (this.props.disabled) {
submitClasses += ' disabled';
}
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("form", {
id: "login-form",
onSubmit: this.handleSubmit,
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "login_prompt",
defaultMessage: "Login",
description: "Placeholer for username/login",
children: login_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "text",
id: "inputLogin",
placeholder: login_prompt,
autoComplete: "username",
autoCorrect: "off",
autoCapitalize: "none",
value: this.state.login,
onChange: this.handleLoginChange,
required: true,
autoFocus: true
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "password_prompt",
defaultMessage: "Password",
description: "Placeholder/prompt for entering password",
children: password_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
type: "password",
id: "inputPassword",
placeholder: password_prompt,
autoComplete: "current-password",
value: this.state.password,
onChange: this.handlePasswordChange,
required: true
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
className: "panel-form-row",
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(_widgets_checkbox_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
id: "save-token",
name: "save-token",
checked: this.state.saveToken,
onChange: this.handleToggleSaveToken
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
htmlFor: "save-token",
children: ["\xA0", (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "stay_logged_in",
defaultMessage: "Stay logged in",
description: "Label for a checkbox"
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("a", {
href: "#reset",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "forgot_password_link",
defaultMessage: "Forgot password?",
description: "Link to Reset password form"
}, void 0, false)
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
className: "dialog-buttons",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
className: submitClasses,
type: "submit",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "button_sign_in",
defaultMessage: "Sign in",
description: "Button [Sign In]"
}, void 0, false)
}, void 0, false)
}, void 0, false)]
}, void 0, true);
}
}
;
/***/ }),
/***/ "./src/views/message-center-view.jsx": /***/ "./src/views/message-center-view.jsx":
/*!*******************************************!*\ /*!*******************************************!*\
!*** ./src/views/message-center-view.jsx ***! !*** ./src/views/message-center-view.jsx ***!
@@ -17546,11 +17411,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _acc_general_view_jsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./acc-general-view.jsx */ "./src/views/acc-general-view.jsx"); /* harmony import */ var _acc_general_view_jsx__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./acc-general-view.jsx */ "./src/views/acc-general-view.jsx");
/* harmony import */ var _acc_notifications_view_jsx__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./acc-notifications-view.jsx */ "./src/views/acc-notifications-view.jsx"); /* harmony import */ var _acc_notifications_view_jsx__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./acc-notifications-view.jsx */ "./src/views/acc-notifications-view.jsx");
/* harmony import */ var _acc_support_view_jsx__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./acc-support-view.jsx */ "./src/views/acc-support-view.jsx"); /* harmony import */ var _acc_support_view_jsx__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./acc-support-view.jsx */ "./src/views/acc-support-view.jsx");
/* harmony import */ var _login_view_jsx__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./login-view.jsx */ "./src/views/login-view.jsx"); /* harmony import */ var _new_topic_view_jsx__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./new-topic-view.jsx */ "./src/views/new-topic-view.jsx");
/* harmony import */ var _new_topic_view_jsx__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./new-topic-view.jsx */ "./src/views/new-topic-view.jsx"); /* harmony import */ var _settings_view_jsx__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./settings-view.jsx */ "./src/views/settings-view.jsx");
/* harmony import */ var _settings_view_jsx__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./settings-view.jsx */ "./src/views/settings-view.jsx"); /* harmony import */ var _validation_view_jsx__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./validation-view.jsx */ "./src/views/validation-view.jsx");
/* harmony import */ var _validation_view_jsx__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./validation-view.jsx */ "./src/views/validation-view.jsx"); /* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
@@ -17568,17 +17432,14 @@ __webpack_require__.r(__webpack_exports__);
const AccountSettingsView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_libphonenumber-js_mobile_exports_parsePhoneNumberWithError_js"), __webpack_require__.e("vendors-node_modules_libphonenumber-js_examples_mobile_json_js-node_modules_libphonenumber-js-883e54"), __webpack_require__.e("src_widgets_phone-edit_jsx"), __webpack_require__.e("src_views_account-settings-view_jsx")]).then(__webpack_require__.bind(__webpack_require__, /*! ./account-settings-view.jsx */ "./src/views/account-settings-view.jsx"))); const AccountSettingsView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_libphonenumber-js_mobile_exports_parsePhoneNumberWithError_js"), __webpack_require__.e("vendors-node_modules_libphonenumber-js_examples_mobile_json_js-node_modules_libphonenumber-js-883e54"), __webpack_require__.e("src_views_account-settings-view_jsx")]).then(__webpack_require__.bind(__webpack_require__, /*! ./account-settings-view.jsx */ "./src/views/account-settings-view.jsx")));
const CreateAccountView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_libphonenumber-js_mobile_exports_parsePhoneNumberWithError_js"), __webpack_require__.e("vendors-node_modules_libphonenumber-js_examples_mobile_json_js-node_modules_libphonenumber-js-883e54"), __webpack_require__.e("src_widgets_phone-edit_jsx"), __webpack_require__.e("src_views_create-account-view_jsx")]).then(__webpack_require__.bind(__webpack_require__, /*! ./create-account-view.jsx */ "./src/views/create-account-view.jsx")));
const AccSecurityView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => __webpack_require__.e(/*! import() */ "src_views_acc-security-view_jsx").then(__webpack_require__.bind(__webpack_require__, /*! ./acc-security-view.jsx */ "./src/views/acc-security-view.jsx"))); const AccSecurityView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => __webpack_require__.e(/*! import() */ "src_views_acc-security-view_jsx").then(__webpack_require__.bind(__webpack_require__, /*! ./acc-security-view.jsx */ "./src/views/acc-security-view.jsx")));
const PasswordResetView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_libphonenumber-js_mobile_exports_parsePhoneNumberWithError_js"), __webpack_require__.e("vendors-node_modules_libphonenumber-js_examples_mobile_json_js-node_modules_libphonenumber-js-883e54"), __webpack_require__.e("src_widgets_phone-edit_jsx"), __webpack_require__.e("src_views_password-reset-view_jsx")]).then(__webpack_require__.bind(__webpack_require__, /*! ./password-reset-view.jsx */ "./src/views/password-reset-view.jsx")));
const WallpapersView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => __webpack_require__.e(/*! import() */ "src_views_wallpapers_jsx").then(__webpack_require__.bind(__webpack_require__, /*! ./wallpapers.jsx */ "./src/views/wallpapers.jsx"))); const WallpapersView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => __webpack_require__.e(/*! import() */ "src_views_wallpapers_jsx").then(__webpack_require__.bind(__webpack_require__, /*! ./wallpapers.jsx */ "./src/views/wallpapers.jsx")));
@@ -17679,10 +17540,10 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
const view = this.props.state || (this.props.myUserId ? 'messages-home' : 'tenant'); const view = this.props.state || (this.props.myUserId ? 'messages-home' : 'tenant');
const chapterOneViews = ['tenant', 'login', 'enterprise-register', 'enterprise-feedback', 'register', 'reset', 'identity-check', 'realname', 'realname-verified', 'realname-reminder', 'independent-password']; const chapterOneViews = ['tenant', 'login', 'enterprise-register', 'enterprise-feedback', 'register', 'reset', 'identity-check', 'realname', 'realname-verified', 'realname-reminder', 'independent-password'];
if (chapterOneViews.includes(view)) { if (chapterOneViews.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "auth-onboarding-panel", className: "auth-onboarding-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_auth_onboarding_view_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_auth_onboarding_view_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
authenticated: !!this.props.myUserId, authenticated: !!this.props.myUserId,
@@ -17703,17 +17564,17 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
const chapterTwoViews = ['messages-home', 'messages-offline', 'messages-menu', 'message-actions', 'system-messages']; const chapterTwoViews = ['messages-home', 'messages-offline', 'messages-menu', 'message-actions', 'system-messages'];
if (chapterTwoViews.includes(view)) { if (chapterTwoViews.includes(view)) {
const fullPage = !this.props.myUserId || view !== 'messages-home'; const fullPage = !this.props.myUserId || view !== 'messages-home';
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: 'message-center-panel' + (fullPage ? ' full-page' : ''), className: 'message-center-panel' + (fullPage ? ' full-page' : ''),
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_message_center_view_jsx__WEBPACK_IMPORTED_MODULE_7__["default"], { children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_message_center_view_jsx__WEBPACK_IMPORTED_MODULE_7__["default"], {
view: view, view: view,
connected: this.props.connected, connected: this.props.connected,
chatList: this.props.chatList, chatList: this.props.chatList,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
onTopicSelected: this.props.onTopicSelected, onTopicSelected: this.props.onTopicSelected,
onOpenScanner: this.props.onOpenScanner onOpenScanner: this.props.onOpenScanner
}, view, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_widgets_error_panel_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], { }, view, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_widgets_error_panel_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
level: this.props.errorLevel, level: this.props.errorLevel,
text: this.props.errorText, text: this.props.errorText,
action: this.props.errorAction, action: this.props.errorAction,
@@ -17724,28 +17585,28 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
} }
const chapterThreeViews = ['chat-inbound-request', 'chat-inbound-message', 'chat-outbound-request', 'chat-status', 'chat-friend', 'chat-media', 'chat-blocked', 'chat-deleted', 'chat-standard', 'chat-attachments', 'chat-mixed', 'chat-contact-card']; const chapterThreeViews = ['chat-inbound-request', 'chat-inbound-message', 'chat-outbound-request', 'chat-status', 'chat-friend', 'chat-media', 'chat-blocked', 'chat-deleted', 'chat-standard', 'chat-attachments', 'chat-mixed', 'chat-contact-card'];
if (chapterThreeViews.includes(view)) { if (chapterThreeViews.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "direct-message-panel", className: "direct-message-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_direct_message_view_jsx__WEBPACK_IMPORTED_MODULE_8__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_direct_message_view_jsx__WEBPACK_IMPORTED_MODULE_8__["default"], {
view: view view: view
}, view, false) }, view, false)
}, void 0, false); }, void 0, false);
} }
if (_message_composer_view_jsx__WEBPACK_IMPORTED_MODULE_9__.MESSAGE_COMPOSER_VIEWS.includes(view)) { if (_message_composer_view_jsx__WEBPACK_IMPORTED_MODULE_9__.MESSAGE_COMPOSER_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "message-composer-panel", className: "message-composer-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_message_composer_view_jsx__WEBPACK_IMPORTED_MODULE_9__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_message_composer_view_jsx__WEBPACK_IMPORTED_MODULE_9__["default"], {
view: view view: view
}, view, false) }, view, false)
}, void 0, false); }, void 0, false);
} }
if (_contact_management_view_jsx__WEBPACK_IMPORTED_MODULE_10__.CONTACT_MANAGEMENT_VIEWS.includes(view)) { if (_contact_management_view_jsx__WEBPACK_IMPORTED_MODULE_10__.CONTACT_MANAGEMENT_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "contact-management-panel", className: "contact-management-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_contact_management_view_jsx__WEBPACK_IMPORTED_MODULE_10__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_contact_management_view_jsx__WEBPACK_IMPORTED_MODULE_10__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17757,10 +17618,10 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
}, void 0, false); }, void 0, false);
} }
if (_group_management_view_jsx__WEBPACK_IMPORTED_MODULE_11__.GROUP_MANAGEMENT_VIEWS.includes(view)) { if (_group_management_view_jsx__WEBPACK_IMPORTED_MODULE_11__.GROUP_MANAGEMENT_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "group-management-panel", className: "group-management-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_group_management_view_jsx__WEBPACK_IMPORTED_MODULE_11__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_group_management_view_jsx__WEBPACK_IMPORTED_MODULE_11__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17770,10 +17631,10 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
}, void 0, false); }, void 0, false);
} }
if (_content_library_view_jsx__WEBPACK_IMPORTED_MODULE_12__.CONTENT_LIBRARY_VIEWS.includes(view)) { if (_content_library_view_jsx__WEBPACK_IMPORTED_MODULE_12__.CONTENT_LIBRARY_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "content-library-panel", className: "content-library-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_content_library_view_jsx__WEBPACK_IMPORTED_MODULE_12__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_content_library_view_jsx__WEBPACK_IMPORTED_MODULE_12__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17784,19 +17645,19 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
}, void 0, false); }, void 0, false);
} }
if (_call_experience_view_jsx__WEBPACK_IMPORTED_MODULE_13__.CALL_EXPERIENCE_VIEWS.includes(view)) { if (_call_experience_view_jsx__WEBPACK_IMPORTED_MODULE_13__.CALL_EXPERIENCE_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "call-experience-panel", className: "call-experience-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_call_experience_view_jsx__WEBPACK_IMPORTED_MODULE_13__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_call_experience_view_jsx__WEBPACK_IMPORTED_MODULE_13__["default"], {
view: view view: view
}, view, false) }, view, false)
}, void 0, false); }, void 0, false);
} }
if (_workplace_collaboration_view_jsx__WEBPACK_IMPORTED_MODULE_14__.WORKPLACE_COLLABORATION_VIEWS.includes(view)) { if (_workplace_collaboration_view_jsx__WEBPACK_IMPORTED_MODULE_14__.WORKPLACE_COLLABORATION_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "workplace-collaboration-panel", className: "workplace-collaboration-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_workplace_collaboration_view_jsx__WEBPACK_IMPORTED_MODULE_14__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_workplace_collaboration_view_jsx__WEBPACK_IMPORTED_MODULE_14__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17806,10 +17667,10 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
}, void 0, false); }, void 0, false);
} }
if (_personal_settings_view_jsx__WEBPACK_IMPORTED_MODULE_15__.PERSONAL_SETTINGS_VIEWS.includes(view)) { if (_personal_settings_view_jsx__WEBPACK_IMPORTED_MODULE_15__.PERSONAL_SETTINGS_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "personal-settings-panel", className: "personal-settings-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_personal_settings_view_jsx__WEBPACK_IMPORTED_MODULE_15__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_personal_settings_view_jsx__WEBPACK_IMPORTED_MODULE_15__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17822,10 +17683,10 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
}, void 0, false); }, void 0, false);
} }
if (_security_support_view_jsx__WEBPACK_IMPORTED_MODULE_16__.SECURITY_SUPPORT_VIEWS.includes(view)) { if (_security_support_view_jsx__WEBPACK_IMPORTED_MODULE_16__.SECURITY_SUPPORT_VIEWS.includes(view)) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
className: "security-support-panel", className: "security-support-panel",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_security_support_view_jsx__WEBPACK_IMPORTED_MODULE_16__["default"], { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_security_support_view_jsx__WEBPACK_IMPORTED_MODULE_16__["default"], {
view: view, view: view,
hashParams: this.props.hashParams, hashParams: this.props.hashParams,
tinode: this.props.tinode tinode: this.props.tinode
@@ -17846,9 +17707,9 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
if (['login', 'contacts'].indexOf(view) == -1) { if (['login', 'contacts'].indexOf(view) == -1) {
onCancel = this.props.onCancel; onCancel = this.props.onCancel;
} }
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
id: "sidepanel", id: "sidepanel",
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_widgets_side_navbar_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], { children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_widgets_side_navbar_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
state: view, state: view,
title: title, title: title,
avatar: avatar, avatar: avatar,
@@ -17859,53 +17720,30 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
onSettings: this.props.onSettings, onSettings: this.props.onSettings,
onNewTopic: this.handleNewTopic, onNewTopic: this.handleNewTopic,
onCancel: onCancel onCancel: onCancel
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_widgets_error_panel_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], { }, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_widgets_error_panel_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
level: this.props.errorLevel, level: this.props.errorLevel,
text: this.props.errorText, text: this.props.errorText,
action: this.props.errorAction, action: this.props.errorAction,
actionText: this.props.errorActionText, actionText: this.props.errorActionText,
onClearError: this.props.onError onClearError: this.props.onError
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_widgets_load_spinner_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], { }, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_widgets_load_spinner_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
show: this.props.loadSpinnerVisible show: this.props.loadSpinnerVisible
}, void 0, false), view === 'login' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_login_view_jsx__WEBPACK_IMPORTED_MODULE_21__["default"], { }, void 0, false), view === 'settings' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_settings_view_jsx__WEBPACK_IMPORTED_MODULE_22__["default"], {
login: this.props.login,
disabled: this.props.loginDisabled,
persist: this.props.persist,
onLogin: this.props.onLoginRequest,
onPersistenceChange: this.props.onPersistenceChange
}, void 0, false) : view === 'register' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {
fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "loading_note",
defaultMessage: "Loading...",
description: "Message shown when component is loading"
}, void 0, false)
}, void 0, false),
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(CreateAccountView, {
tinode: this.props.tinode,
reqCredMethod: this.props.reqCredMethod,
onShowCountrySelector: this.props.onShowCountrySelector,
onCreateAccount: this.props.onCreateAccount,
onCancel: this.props.onCancel,
onError: this.props.onError
}, void 0, false)
}, void 0, false) : view === 'settings' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_settings_view_jsx__WEBPACK_IMPORTED_MODULE_23__["default"], {
transport: this.props.transport, transport: this.props.transport,
serverAddress: this.props.serverAddress, serverAddress: this.props.serverAddress,
secureConnection: this.props.secureConnection, secureConnection: this.props.secureConnection,
onCancel: this.props.onCancel, onCancel: this.props.onCancel,
onUpdate: this.props.onGlobalSettings onUpdate: this.props.onGlobalSettings
}, void 0, false) : view === 'edit' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, { }, void 0, false) : view === 'edit' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {
fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
className: "panel-form-row", className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "loading_note", id: "loading_note",
defaultMessage: "Loading...", defaultMessage: "Loading...",
description: "Message shown when component is loading" description: "Message shown when component is loading"
}, void 0, false) }, void 0, false)
}, void 0, false), }, void 0, false),
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(AccountSettingsView, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(AccountSettingsView, {
tinode: this.props.tinode, tinode: this.props.tinode,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
trustedBadges: this.props.trustedBadges, trustedBadges: this.props.trustedBadges,
@@ -17917,7 +17755,7 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
onCredConfirm: this.props.onCredConfirm, onCredConfirm: this.props.onCredConfirm,
onError: this.props.onError onError: this.props.onError
}, void 0, false) }, void 0, false)
}, void 0, false) : view === 'general' || view === 'crop' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_topic_common_view_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], { }, void 0, false) : view === 'general' || view === 'crop' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_topic_common_view_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
topic: "me", topic: "me",
tinode: this.props.tinode, tinode: this.props.tinode,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
@@ -17925,7 +17763,7 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
onUpdateTopicDesc: this.props.onUpdateAccountDesc, onUpdateTopicDesc: this.props.onUpdateAccountDesc,
onUpdateTagsRequest: this.props.onUpdateAccountTags, onUpdateTagsRequest: this.props.onUpdateAccountTags,
onError: this.props.onError onError: this.props.onError
}, void 0, false) : view === 'acc_general' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_acc_general_view_jsx__WEBPACK_IMPORTED_MODULE_18__["default"], { }, void 0, false) : view === 'acc_general' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_acc_general_view_jsx__WEBPACK_IMPORTED_MODULE_18__["default"], {
colorSchema: this.props.colorSchema, colorSchema: this.props.colorSchema,
onSelectWallpapers: this.props.onSelectWallpapers, onSelectWallpapers: this.props.onSelectWallpapers,
textSize: this.props.textSize, textSize: this.props.textSize,
@@ -17933,22 +17771,22 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
onChangeColorSchema: this.props.onChangeColorSchema, onChangeColorSchema: this.props.onChangeColorSchema,
onTextSizeChanged: this.props.onTextSizeChanged, onTextSizeChanged: this.props.onTextSizeChanged,
onSendOnEnterChanged: this.props.onSendOnEnterChanged onSendOnEnterChanged: this.props.onSendOnEnterChanged
}, void 0, false) : view === 'notif' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_acc_notifications_view_jsx__WEBPACK_IMPORTED_MODULE_19__["default"], { }, void 0, false) : view === 'notif' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_acc_notifications_view_jsx__WEBPACK_IMPORTED_MODULE_19__["default"], {
messageSounds: this.props.messageSounds, messageSounds: this.props.messageSounds,
desktopAlerts: this.props.desktopAlerts, desktopAlerts: this.props.desktopAlerts,
desktopAlertsEnabled: this.props.desktopAlertsEnabled, desktopAlertsEnabled: this.props.desktopAlertsEnabled,
onTogglePushNotifications: this.props.onTogglePushNotifications, onTogglePushNotifications: this.props.onTogglePushNotifications,
onToggleMessageSounds: this.props.onToggleMessageSounds onToggleMessageSounds: this.props.onToggleMessageSounds
}, void 0, false) : view === 'security' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, { }, void 0, false) : view === 'security' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {
fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
className: "panel-form-row", className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "loading_note", id: "loading_note",
defaultMessage: "Loading...", defaultMessage: "Loading...",
description: "Message shown when component is loading" description: "Message shown when component is loading"
}, void 0, false) }, void 0, false)
}, void 0, false), }, void 0, false),
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(AccSecurityView, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(AccSecurityView, {
tinode: this.props.tinode, tinode: this.props.tinode,
incognitoMode: this.props.incognitoMode, incognitoMode: this.props.incognitoMode,
onNavigate: this.props.onNavigate, onNavigate: this.props.onNavigate,
@@ -17960,26 +17798,26 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
onShowBlocked: this.props.onShowBlocked, onShowBlocked: this.props.onShowBlocked,
onToggleIncognitoMode: this.props.onToggleIncognitoMode onToggleIncognitoMode: this.props.onToggleIncognitoMode
}, void 0, false) }, void 0, false)
}, void 0, false) : view === 'support' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_acc_support_view_jsx__WEBPACK_IMPORTED_MODULE_20__["default"], { }, void 0, false) : view === 'support' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_acc_support_view_jsx__WEBPACK_IMPORTED_MODULE_20__["default"], {
serverAddress: this.props.serverAddress, serverAddress: this.props.serverAddress,
serverVersion: this.props.serverVersion serverVersion: this.props.serverVersion
}, void 0, false) : view === 'wallpapers' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, { }, void 0, false) : view === 'wallpapers' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {
fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", { fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)("div", {
className: "panel-form-row", className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "loading_note", id: "loading_note",
defaultMessage: "Loading...", defaultMessage: "Loading...",
description: "Message shown when component is loading" description: "Message shown when component is loading"
}, void 0, false) }, void 0, false)
}, void 0, false), }, void 0, false),
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(WallpapersView, { children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(WallpapersView, {
wallpaper: this.props.wallpaper, wallpaper: this.props.wallpaper,
wallpaperSize: this.props.wallpaperSize, wallpaperSize: this.props.wallpaperSize,
wallpaperBlur: this.props.wallpaperBlur, wallpaperBlur: this.props.wallpaperBlur,
colorSchema: this.props.colorSchema !== 'auto' ? this.props.colorSchema : this.props.systemColorSchema, colorSchema: this.props.colorSchema !== 'auto' ? this.props.colorSchema : this.props.systemColorSchema,
onWallpaperSelected: this.props.onWallpaperSelected onWallpaperSelected: this.props.onWallpaperSelected
}, void 0, false) }, void 0, false)
}, void 0, false) : view === 'contacts' || view == 'archive' || view == 'blocked' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_contacts_view_jsx__WEBPACK_IMPORTED_MODULE_17__["default"], { }, void 0, false) : view === 'contacts' || view == 'archive' || view == 'blocked' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_contacts_view_jsx__WEBPACK_IMPORTED_MODULE_17__["default"], {
tinode: this.props.tinode, tinode: this.props.tinode,
myUserId: this.props.myUserId, myUserId: this.props.myUserId,
connected: this.props.connected, connected: this.props.connected,
@@ -17990,37 +17828,19 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
showContextMenu: this.props.showContextMenu, showContextMenu: this.props.showContextMenu,
onTopicSelected: this.props.onTopicSelected, onTopicSelected: this.props.onTopicSelected,
onShowArchive: this.props.onShowArchive onShowArchive: this.props.onShowArchive
}, void 0, false) : view === 'newtpk' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_new_topic_view_jsx__WEBPACK_IMPORTED_MODULE_22__["default"], { }, void 0, false) : view === 'newtpk' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_new_topic_view_jsx__WEBPACK_IMPORTED_MODULE_21__["default"], {
tinode: this.props.tinode, tinode: this.props.tinode,
searchResults: this.props.searchResults, searchResults: this.props.searchResults,
onInitFind: this.props.onInitFind, onInitFind: this.props.onInitFind,
onSearchContacts: this.props.onSearchContacts, onSearchContacts: this.props.onSearchContacts,
onCreateTopic: this.props.onCreateTopic, onCreateTopic: this.props.onCreateTopic,
onError: this.props.onError onError: this.props.onError
}, void 0, false) : view === 'cred' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(_validation_view_jsx__WEBPACK_IMPORTED_MODULE_24__["default"], { }, void 0, false) : view === 'cred' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_24__.jsxDEV)(_validation_view_jsx__WEBPACK_IMPORTED_MODULE_23__["default"], {
credCode: this.props.credCode, credCode: this.props.credCode,
credMethod: this.props.credMethod, credMethod: this.props.credMethod,
credToken: this.props.credToken, credToken: this.props.credToken,
onSubmit: this.props.onValidateCredentials, onSubmit: this.props.onValidateCredentials,
onCancel: this.props.onCancel onCancel: this.props.onCancel
}, void 0, false) : view === 'reset' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {
fallback: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "loading_note",
defaultMessage: "Loading...",
description: "Message shown when component is loading"
}, void 0, false)
}, void 0, false),
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_25__.jsxDEV)(PasswordResetView, {
tinode: this.props.tinode,
reqCredMethod: this.props.reqCredMethod,
onShowCountrySelector: this.props.onShowCountrySelector,
onRequest: this.props.onPasswordResetRequest,
onReset: this.props.onResetPassword,
onCancel: this.props.onCancel,
onError: this.props.onError
}, void 0, false)
}, void 0, false) : null] }, void 0, false) : null]
}, void 0, true); }, void 0, true);
} }
+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
File diff suppressed because one or more lines are too long
@@ -1,319 +0,0 @@
"use strict";
(self["webpackChunktinode_webapp"] = self["webpackChunktinode_webapp"] || []).push([["src_views_create-account-view_jsx"],{
/***/ "./src/views/create-account-view.jsx":
/*!*******************************************!*\
!*** ./src/views/create-account-view.jsx ***!
\*******************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": function() { return /* binding */ CreateAccountView; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _widgets_avatar_crop_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../widgets/avatar-crop.jsx */ "./src/widgets/avatar-crop.jsx");
/* harmony import */ var _widgets_avatar_upload_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widgets/avatar-upload.jsx */ "./src/widgets/avatar-upload.jsx");
/* harmony import */ var _widgets_checkbox_jsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../widgets/checkbox.jsx */ "./src/widgets/checkbox.jsx");
/* harmony import */ var _widgets_phone_edit_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../widgets/phone-edit.jsx */ "./src/widgets/phone-edit.jsx");
/* harmony import */ var _widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../widgets/visible-password.jsx */ "./src/widgets/visible-password.jsx");
/* harmony import */ var _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../lib/local-storage.js */ "./src/lib/local-storage.js");
/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js");
/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../lib/utils.js */ "./src/lib/utils.js");
/* harmony import */ var _lib_strformat_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../lib/strformat.js */ "./src/lib/strformat.js");
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../config.js */ "./src/config.js");
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
class CreateAccountView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) {
constructor(props) {
super(props);
this.state = {
login: '',
password: '',
meth: '',
email: '',
tel: '',
fn: '',
imageUrl: null,
uploadUrl: null,
newAvatar: null,
newAvatarMime: null,
buttonDisabled: false,
saveToken: _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_7__["default"].getObject('keep-logged-in')
};
this.handleLoginChange = this.handleLoginChange.bind(this);
this.handlePasswordChange = this.handlePasswordChange.bind(this);
this.handleEmailChange = this.handleEmailChange.bind(this);
this.handlePhoneChange = this.handlePhoneChange.bind(this);
this.handleFnChange = this.handleFnChange.bind(this);
this.handleImageChanged = this.handleImageChanged.bind(this);
this.handleToggleSaveToken = this.handleToggleSaveToken.bind(this);
this.handleAvatarCropped = this.handleAvatarCropped.bind(this);
this.handleAvatarCropCancel = this.handleAvatarCropCancel.bind(this);
this.uploadAvatar = this.uploadAvatar.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
props.tinode.connect().catch(err => {
this.props.onError(err.message, 'err');
});
}
handleLoginChange(e) {
this.setState({
login: e.target.value
});
}
handlePasswordChange(password) {
this.setState({
password: password
});
}
handleEmailChange(e) {
this.setState({
meth: 'email',
email: e.target.value
});
}
handlePhoneChange(number) {
this.setState({
meth: 'tel',
tel: number
});
}
handleFnChange(e) {
this.setState({
fn: e.target.value
});
}
handleImageChanged(mime, img) {
this.setState({
newAvatar: img,
newAvatarMime: mime
});
if (!img) {
this.setState({
imageUrl: null,
uploadUrl: null
});
}
}
handleToggleSaveToken() {
_lib_local_storage_js__WEBPACK_IMPORTED_MODULE_7__["default"].setObject('keep-logged-in', !this.state.saveToken);
this.setState({
saveToken: !this.state.saveToken
});
}
handleSubmit(e) {
e.preventDefault();
this.props.onCreateAccount(this.state.login.trim(), this.state.password.trim(), (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_9__.theCard)((0,_lib_strformat_js__WEBPACK_IMPORTED_MODULE_10__.truncateString)(this.state.fn.trim(), _config_js__WEBPACK_IMPORTED_MODULE_11__.MAX_TITLE_LENGTH), this.state.uploadUrl), {
'meth': this.state.meth,
'val': this.state.meth == 'email' ? this.state.email : this.state.meth == 'tel' ? this.state.tel : null
});
}
handleAvatarCropped(mime, blob, width, height) {
const url = blob ? URL.createObjectURL(blob) : null;
this.setState({
newAvatar: null,
newAvatarMime: null
});
if (blob) {
this.uploadAvatar(mime, blob, width, height);
}
}
handleAvatarCropCancel() {
this.setState({
newAvatar: null,
newAvatarMime: null
});
}
uploadAvatar(mime, blob, width, height) {
const readyToUpload = image => {
let {
mime,
blob
} = image;
this.setState({
imageUrl: URL.createObjectURL(blob),
buttonDisabled: true
});
if (blob.size > _config_js__WEBPACK_IMPORTED_MODULE_11__.MAX_AVATAR_BYTES) {
const uploader = this.props.tinode.getLargeFileHelper();
uploader.upload(blob, 'newacc').then(url => this.setState({
uploadUrl: url
})).catch(err => this.props.onError(err.message, 'err')).finally(_ => this.setState({
buttonDisabled: false
}));
} else {
(0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_8__.blobToBase64)(blob).then(b64 => this.setState({
uploadUrl: (0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_8__.makeImageUrl)({
data: b64.bits,
type: mime
})
})).finally(_ => this.setState({
buttonDisabled: false
}));
}
};
if (width > _config_js__WEBPACK_IMPORTED_MODULE_11__.AVATAR_SIZE || height > _config_js__WEBPACK_IMPORTED_MODULE_11__.AVATAR_SIZE || width != height) {
(0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_8__.imageScaled)(blob, _config_js__WEBPACK_IMPORTED_MODULE_11__.AVATAR_SIZE, _config_js__WEBPACK_IMPORTED_MODULE_11__.AVATAR_SIZE, _config_js__WEBPACK_IMPORTED_MODULE_11__.MAX_EXTERN_ATTACHMENT_SIZE, true).then(scaled => readyToUpload(scaled)).catch(err => this.props.onError(err.message, 'err'));
} else {
readyToUpload({
mime: mime,
blob: blob,
width: width,
height: height
});
}
}
render() {
if (this.state.newAvatar) {
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(_widgets_avatar_crop_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
avatar: this.state.newAvatar,
mime: this.state.newAvatarMime,
onSubmit: this.handleAvatarCropped,
onCancel: this.handleAvatarCropCancel,
onError: this.props.onError
}, void 0, false);
}
let submitClasses = 'primary';
if (this.props.disabled) {
submitClasses += ' disabled';
}
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("form", {
className: "panel-form-column",
onSubmit: this.handleSubmit,
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "umn",
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "login_prompt",
defaultMessage: "Login",
description: "Placeholer for username/login",
children: login_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("input", {
type: "text",
placeholder: login_prompt,
autoComplete: "user-name",
value: this.state.login,
onChange: this.handleLoginChange,
required: true,
autoFocus: true
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "password_prompt",
defaultMessage: "Password",
description: "Placeholder/prompt for entering password",
children: password_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(_widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], {
placeholder: password_prompt,
autoComplete: "new-password",
value: this.state.password,
onFinished: this.handlePasswordChange,
required: true
}, void 0, false)
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(_widgets_avatar_upload_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
tinode: this.props.tinode,
avatar: this.state.imageUrl,
onImageUpdated: this.handleImageChanged,
onError: this.props.onError
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "full_name_prompt",
defaultMessage: "Full name, e.g. John Doe",
description: "Input placeholder for person's full name",
children: full_name_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("input", {
type: "text",
placeholder: full_name_prompt,
autoComplete: "name",
value: this.state.fn,
onChange: this.handleFnChange,
required: true
}, void 0, false)
}, void 0, false)
}, void 0, false), this.props.reqCredMethod == 'email' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "email_prompt",
defaultMessage: "Email, e.g. jdoe@example.com",
description: "Input placeholder for email entry",
children: email_prompt => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("input", {
type: "email",
placeholder: email_prompt,
autoComplete: "email",
value: this.state.email,
onChange: this.handleEmailChange,
required: true
}, void 0, false)
}, void 0, false)
}, void 0, false) : this.props.reqCredMethod == 'tel' ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.Fragment, {
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("label", {
className: "small gray",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "mobile_phone_number",
defaultMessage: "Mobile phone number",
description: "Prompt for entering a mobile phone number"
}, void 0, false)
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(_widgets_phone_edit_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
autoFocus: false,
onShowCountrySelector: this.props.onShowCountrySelector,
onSubmit: this.handlePhoneChange
}, void 0, false)
}, void 0, false)]
}, void 0, true) : null, (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "panel-form-row",
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(_widgets_checkbox_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
id: "save-token",
name: "save-token",
checked: this.state.saveToken,
onChange: this.handleToggleSaveToken
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "stay_logged_in",
defaultMessage: "Stay logged in",
description: "Label for a checkbox",
children: stay_logged_in => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("label", {
htmlFor: "save-token",
children: ["\xA0", stay_logged_in]
}, void 0, true)
}, void 0, false)]
}, void 0, true), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("div", {
className: "dialog-buttons",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)("button", {
className: submitClasses,
type: "submit",
disabled: this.state.buttonDisabled,
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "button_sign_up",
defaultMessage: "Sign up",
description: "Create account button [Sign Up]"
}, void 0, false)
}, void 0, false)
}, void 0, false)]
}, void 0, true);
}
}
;
/***/ })
}]);
//# sourceMappingURL=src_views_create-account-view_jsx.dev.js.map
File diff suppressed because one or more lines are too long
@@ -1,276 +0,0 @@
"use strict";
(self["webpackChunktinode_webapp"] = self["webpackChunktinode_webapp"] || []).push([["src_views_password-reset-view_jsx"],{
/***/ "./src/views/password-reset-view.jsx":
/*!*******************************************!*\
!*** ./src/views/password-reset-view.jsx ***!
\*******************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _widgets_phone_edit_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../widgets/phone-edit.jsx */ "./src/widgets/phone-edit.jsx");
/* harmony import */ var _widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widgets/visible-password.jsx */ "./src/widgets/visible-password.jsx");
/* harmony import */ var _lib_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/navigation.js */ "./src/lib/navigation.js");
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
const messages = (0,react_intl__WEBPACK_IMPORTED_MODULE_1__.defineMessages)({
password_reset_email_sent: {
id: 'password_reset_email_sent',
defaultMessage: 'An email with security code has been sent.',
description: 'Notification that the email with password reset instructions has been sent'
},
password_reset_sms_sent: {
id: 'password_reset_sms_sent',
defaultMessage: 'A text message with security code has been sent.',
description: 'Notification that the SMS with password reset instructions has been sent'
}
});
class PasswordResetView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) {
constructor(props) {
super(props);
this.state = {
tel: '',
email: '',
password: '',
sent: 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);
props.tinode.connect().catch(err => {
this.props.onError(err.message, 'err');
});
}
componentDidMount() {
const parsed = _lib_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"].parseUrlHash(window.location.hash);
const newState = {
token: parsed.params.token,
scheme: parsed.params.scheme,
code: parsed.params.code || ''
};
this.savedCred = parsed.params.cred;
if (this.props.reqCredMethod && parsed.params.cred) {
newState[this.props.reqCredMethod] = this.savedCred;
}
this.setState(newState);
}
componentDidUpdate(prevProps, prevState) {
if (prevProps.reqCredMethod != this.props.reqCredMethod && this.props.reqCredMethod) {
this.setState({
[this.props.reqCredMethod]: this.savedCred || ''
});
}
}
handleSubmit(e) {
e.preventDefault();
if (this.state.token) {
this.props.onReset(this.state.password.trim(), {
scheme: 'token',
secret: this.state.token
});
} else if (this.state.code && this.props.reqCredMethod) {
const cred = this.props.reqCredMethod == 'email' ? this.state.email.trim() : this.state.tel.trim();
this.props.onReset(this.state.password.trim(), {
scheme: 'code',
secret: btoa(`${this.state.code}:${this.props.reqCredMethod}:${cred}`)
});
} else {
const email = this.state.email.trim();
const tel = this.state.tel.trim();
this.setState({
email: email,
tel: tel
});
this.props.onRequest(this.props.reqCredMethod, email || tel).then(_ => {
this.setState({
sent: true
});
const msg = this.props.reqCredMethod == 'email' ? messages.password_reset_email_sent : this.props.reqCredMethod == 'tel' ? messages.password_reset_sms_sent : null;
if (msg) {
this.props.onError(this.props.intl.formatMessage(msg), 'info');
}
});
}
}
handleEmailChange(e) {
this.setState({
email: e.target.value
});
}
handlePasswordChange(e) {
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 showCredentialInput = !((this.state.token || this.state.code && this.props.reqCredMethod) && this.state.scheme);
const showPasswordInput = !showCredentialInput || this.state.haveCode || this.state.sent;
const passwordInput = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("label", {
className: "small gray",
htmlFor: "new-password",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "label_new_password",
defaultMessage: "New password",
description: "Label for entering a new password"
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "new_password_placeholder",
defaultMessage: "Enter new password",
description: "Placeholder for entering new password",
children: placeholder => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
id: "new-password",
placeholder: placeholder,
autoComplete: "new-password",
value: this.state.password,
required: true,
autoFocus: true,
onChange: this.handlePasswordChange
}, void 0, false)
}, void 0, false)]
}, void 0, true);
const emailInput = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
children: [this.state.haveCode ? null : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("label", {
htmlFor: "inputEmail",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "label_reset_password",
defaultMessage: "Send a password reset email",
description: "Label for password reset field"
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "credential_email_prompt",
defaultMessage: "Your registration email",
description: "Placeholder for entering email",
children: placeholder => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("input", {
type: "email",
id: "inputEmail",
placeholder: placeholder,
autoComplete: "email",
value: this.state.email,
onChange: this.handleEmailChange,
required: true,
autoFocus: true
}, void 0, false)
}, void 0, false)]
}, void 0, true);
const phoneInput = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
children: [this.state.haveCode ? null : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("label", {
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "label_reset_password_tel",
defaultMessage: "Send SMS to reset password",
description: "Label for password reset field by phone"
}, void 0, false)
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("label", {
className: "small gray",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "mobile_phone_number",
defaultMessage: "Mobile phone number",
description: "Prompt for entering a mobile phone number"
}, void 0, false)
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
className: "panel-form-row",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_widgets_phone_edit_jsx__WEBPACK_IMPORTED_MODULE_2__["default"], {
autoFocus: true,
onShowCountrySelector: this.props.onShowCountrySelector,
onSubmit: number => this.setState({
tel: number
})
}, void 0, false)
}, void 0, false)]
}, void 0, true);
const codeInput = (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
children: [(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("label", {
className: "small gray",
htmlFor: "enter-confirmation-code",
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "enter_confirmation_code_prompt",
defaultMessage: "Confirmation code",
description: "Request to enter confirmation code"
}, void 0, false)
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "numeric_confirmation_code_prompt",
defaultMessage: "Numbers only",
description: "Prompt for numeric conformation code",
children: numbers_only => (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("input", {
type: "text",
id: "enter-confirmation-code",
placeholder: numbers_only,
maxLength: 10,
value: this.state.code,
onChange: this.handleCodeChange,
required: true
}, void 0, false)
}, void 0, false)
}, void 0, false)]
}, void 0, true);
const credentialInput = this.props.reqCredMethod == 'email' ? emailInput : this.props.reqCredMethod == 'tel' ? phoneInput : null;
return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("form", {
id: "password-reset-form",
onSubmit: this.handleSubmit,
children: [!this.state.sent && showCredentialInput ? credentialInput : null, this.state.haveCode || this.state.sent ? codeInput : null, showPasswordInput ? passwordInput : null, (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("div", {
className: "dialog-buttons",
children: [this.state.haveCode || this.state.sent || this.state.token || this.state.code ? null : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("a", {
href: "#",
onClick: this.handleShowCodeField,
style: {
marginRight: 'auto'
},
children: (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "password_i_have_code",
defaultMessage: "I have code",
description: "Call to open field to enter password reset code"
}, void 0, false)
}, void 0, false), (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)("button", {
className: "primary",
type: "submit",
children: showPasswordInput ? (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "button_reset",
defaultMessage: "Reset",
description: "Button [Reset]"
}, void 0, false) : (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "button_send_request",
defaultMessage: "Send request",
description: "Button [Send request]"
}, void 0, false)
}, void 0, false)]
}, void 0, true)]
}, void 0, true);
}
}
/* harmony default export */ __webpack_exports__["default"] = ((0,react_intl__WEBPACK_IMPORTED_MODULE_1__.injectIntl)(PasswordResetView));
/***/ })
}]);
//# sourceMappingURL=src_views_password-reset-view_jsx.dev.js.map
File diff suppressed because one or more lines are too long