Merge pull request #4557 from matrix-org/travis/3pid-loading
Add a loading state for email addresses/phone numbers in settings
This commit is contained in:
commit
7f030a149e
2 changed files with 32 additions and 13 deletions
|
@ -23,6 +23,12 @@ limitations under the License.
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_GeneralUserSettingsTab_accountSection .mx_Spinner,
|
||||||
|
.mx_GeneralUserSettingsTab_discovery .mx_Spinner {
|
||||||
|
// Move the spinner to the left side of the container (default center)
|
||||||
|
justify-content: left;
|
||||||
|
}
|
||||||
|
|
||||||
.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,
|
.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,
|
||||||
.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,
|
.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,
|
||||||
.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,
|
.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,
|
||||||
|
|
|
@ -38,6 +38,7 @@ import {SERVICE_TYPES} from "matrix-js-sdk";
|
||||||
import IdentityAuthClient from "../../../../../IdentityAuthClient";
|
import IdentityAuthClient from "../../../../../IdentityAuthClient";
|
||||||
import {abbreviateUrl} from "../../../../../utils/UrlUtils";
|
import {abbreviateUrl} from "../../../../../utils/UrlUtils";
|
||||||
import { getThreepidsWithBindStatus } from '../../../../../boundThreepids';
|
import { getThreepidsWithBindStatus } from '../../../../../boundThreepids';
|
||||||
|
import Spinner from "../../../elements/Spinner";
|
||||||
|
|
||||||
export default class GeneralUserSettingsTab extends React.Component {
|
export default class GeneralUserSettingsTab extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
|
@ -60,6 +61,7 @@ export default class GeneralUserSettingsTab extends React.Component {
|
||||||
},
|
},
|
||||||
emails: [],
|
emails: [],
|
||||||
msisdns: [],
|
msisdns: [],
|
||||||
|
loading3pids: true, // whether or not the emails and msisdns have been loaded
|
||||||
...this._calculateThemeState(),
|
...this._calculateThemeState(),
|
||||||
customThemeUrl: "",
|
customThemeUrl: "",
|
||||||
customThemeMessage: {isError: false, text: ""},
|
customThemeMessage: {isError: false, text: ""},
|
||||||
|
@ -158,8 +160,11 @@ export default class GeneralUserSettingsTab extends React.Component {
|
||||||
);
|
);
|
||||||
console.warn(e);
|
console.warn(e);
|
||||||
}
|
}
|
||||||
this.setState({ emails: threepids.filter((a) => a.medium === 'email') });
|
this.setState({
|
||||||
this.setState({ msisdns: threepids.filter((a) => a.medium === 'msisdn') });
|
emails: threepids.filter((a) => a.medium === 'email'),
|
||||||
|
msisdns: threepids.filter((a) => a.medium === 'msisdn'),
|
||||||
|
loading3pids: false,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async _checkTerms() {
|
async _checkTerms() {
|
||||||
|
@ -325,7 +330,6 @@ export default class GeneralUserSettingsTab extends React.Component {
|
||||||
const ChangePassword = sdk.getComponent("views.settings.ChangePassword");
|
const ChangePassword = sdk.getComponent("views.settings.ChangePassword");
|
||||||
const EmailAddresses = sdk.getComponent("views.settings.account.EmailAddresses");
|
const EmailAddresses = sdk.getComponent("views.settings.account.EmailAddresses");
|
||||||
const PhoneNumbers = sdk.getComponent("views.settings.account.PhoneNumbers");
|
const PhoneNumbers = sdk.getComponent("views.settings.account.PhoneNumbers");
|
||||||
const Spinner = sdk.getComponent("views.elements.Spinner");
|
|
||||||
|
|
||||||
let passwordChangeForm = (
|
let passwordChangeForm = (
|
||||||
<ChangePassword
|
<ChangePassword
|
||||||
|
@ -344,18 +348,24 @@ export default class GeneralUserSettingsTab extends React.Component {
|
||||||
// For newer homeservers with separate 3PID add and bind methods (MSC2290),
|
// For newer homeservers with separate 3PID add and bind methods (MSC2290),
|
||||||
// there is no such concern, so we can always show the HS account 3PIDs.
|
// there is no such concern, so we can always show the HS account 3PIDs.
|
||||||
if (this.state.haveIdServer || this.state.serverSupportsSeparateAddAndBind === true) {
|
if (this.state.haveIdServer || this.state.serverSupportsSeparateAddAndBind === true) {
|
||||||
threepidSection = <div>
|
const emails = this.state.loading3pids || true
|
||||||
<span className="mx_SettingsTab_subheading">{_t("Email addresses")}</span>
|
? <Spinner />
|
||||||
<EmailAddresses
|
: <EmailAddresses
|
||||||
emails={this.state.emails}
|
emails={this.state.emails}
|
||||||
onEmailsChange={this._onEmailsChange}
|
onEmailsChange={this._onEmailsChange}
|
||||||
/>
|
/>;
|
||||||
|
const msisdns = this.state.loading3pids
|
||||||
<span className="mx_SettingsTab_subheading">{_t("Phone numbers")}</span>
|
? <Spinner />
|
||||||
<PhoneNumbers
|
: <PhoneNumbers
|
||||||
msisdns={this.state.msisdns}
|
msisdns={this.state.msisdns}
|
||||||
onMsisdnsChange={this._onMsisdnsChange}
|
onMsisdnsChange={this._onMsisdnsChange}
|
||||||
/>
|
/>;
|
||||||
|
threepidSection = <div>
|
||||||
|
<span className="mx_SettingsTab_subheading">{_t("Email addresses")}</span>
|
||||||
|
{emails}
|
||||||
|
|
||||||
|
<span className="mx_SettingsTab_subheading">{_t("Phone numbers")}</span>
|
||||||
|
{msisdns}
|
||||||
</div>;
|
</div>;
|
||||||
} else if (this.state.serverSupportsSeparateAddAndBind === null) {
|
} else if (this.state.serverSupportsSeparateAddAndBind === null) {
|
||||||
threepidSection = <Spinner />;
|
threepidSection = <Spinner />;
|
||||||
|
@ -491,12 +501,15 @@ export default class GeneralUserSettingsTab extends React.Component {
|
||||||
const EmailAddresses = sdk.getComponent("views.settings.discovery.EmailAddresses");
|
const EmailAddresses = sdk.getComponent("views.settings.discovery.EmailAddresses");
|
||||||
const PhoneNumbers = sdk.getComponent("views.settings.discovery.PhoneNumbers");
|
const PhoneNumbers = sdk.getComponent("views.settings.discovery.PhoneNumbers");
|
||||||
|
|
||||||
|
const emails = this.state.loading3pids ? <Spinner /> : <EmailAddresses emails={this.state.emails} />;
|
||||||
|
const msisdns = this.state.loading3pids ? <Spinner /> : <PhoneNumbers msisdns={this.state.msisdns} />;
|
||||||
|
|
||||||
const threepidSection = this.state.haveIdServer ? <div className='mx_GeneralUserSettingsTab_discovery'>
|
const threepidSection = this.state.haveIdServer ? <div className='mx_GeneralUserSettingsTab_discovery'>
|
||||||
<span className="mx_SettingsTab_subheading">{_t("Email addresses")}</span>
|
<span className="mx_SettingsTab_subheading">{_t("Email addresses")}</span>
|
||||||
<EmailAddresses emails={this.state.emails} />
|
{emails}
|
||||||
|
|
||||||
<span className="mx_SettingsTab_subheading">{_t("Phone numbers")}</span>
|
<span className="mx_SettingsTab_subheading">{_t("Phone numbers")}</span>
|
||||||
<PhoneNumbers msisdns={this.state.msisdns} />
|
{msisdns}
|
||||||
</div> : null;
|
</div> : null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue