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",