diff --git a/src/components/views/settings/ProfileSettings.js b/src/components/views/settings/ProfileSettings.js index bf187ac9c6..92851ccaa0 100644 --- a/src/components/views/settings/ProfileSettings.js +++ b/src/components/views/settings/ProfileSettings.js @@ -21,6 +21,8 @@ import Field from "../elements/Field"; import { getHostingLink } from '../../../utils/HostingLink'; import * as sdk from "../../../index"; import {OwnProfileStore} from "../../../stores/OwnProfileStore"; +import Modal from "../../../Modal"; +import ErrorDialog from "../dialogs/ErrorDialog"; export default class ProfileSettings extends React.Component { constructor() { @@ -75,21 +77,26 @@ export default class ProfileSettings extends React.Component { const client = MatrixClientPeg.get(); const newState = {}; - // TODO: What do we do about errors? + try { + if (this.state.originalDisplayName !== this.state.displayName) { + await client.setDisplayName(this.state.displayName); + newState.originalDisplayName = this.state.displayName; + } - if (this.state.originalDisplayName !== this.state.displayName) { - await client.setDisplayName(this.state.displayName); - newState.originalDisplayName = this.state.displayName; - } - - if (this.state.avatarFile) { - const uri = await client.uploadContent(this.state.avatarFile); - await client.setAvatarUrl(uri); - newState.avatarUrl = client.mxcUrlToHttp(uri, 96, 96, 'crop', false); - newState.originalAvatarUrl = newState.avatarUrl; - newState.avatarFile = null; - } else if (this.state.originalAvatarUrl !== this.state.avatarUrl) { - await client.setAvatarUrl(""); // use empty string as Synapse 500s on undefined + if (this.state.avatarFile) { + const uri = await client.uploadContent(this.state.avatarFile); + await client.setAvatarUrl(uri); + newState.avatarUrl = client.mxcUrlToHttp(uri, 96, 96, 'crop', false); + newState.originalAvatarUrl = newState.avatarUrl; + newState.avatarFile = null; + } else if (this.state.originalAvatarUrl !== this.state.avatarUrl) { + await client.setAvatarUrl(""); // use empty string as Synapse 500s on undefined + } + } catch (err) { + Modal.createTrackedDialog('Failed to save profile', '', ErrorDialog, { + title: _t("Failed to save your profile"), + description: ((err && err.message) ? err.message : _t("The operation could not be completed")), + }); } this.setState(newState); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8b7709a46f..4a42c314e5 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -715,6 +715,8 @@ "Off": "Off", "On": "On", "Noisy": "Noisy", + "Failed to save your profile": "Failed to save your profile", + "The operation could not be completed": "The operation could not be completed", "Upgrade to your own domain": "Upgrade to your own domain", "Profile": "Profile", "Display Name": "Display Name",