From 79e468217ac3dd2d7e25189016cc5321ae26f8c7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 7 Oct 2015 18:19:29 +0100 Subject: [PATCH] Add button for user settings and a change display name widget --- src/controllers/atoms/UserSettingsButton.js | 27 +++++++ .../molecules/ChangeDisplayName.js | 71 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 src/controllers/atoms/UserSettingsButton.js create mode 100644 src/controllers/molecules/ChangeDisplayName.js diff --git a/src/controllers/atoms/UserSettingsButton.js b/src/controllers/atoms/UserSettingsButton.js new file mode 100644 index 0000000000..5138111ef8 --- /dev/null +++ b/src/controllers/atoms/UserSettingsButton.js @@ -0,0 +1,27 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var dis = require("../../dispatcher"); + +module.exports = { + onClick: function() { + dis.dispatch({ + action: 'view_user_settings' + }); + }, +}; diff --git a/src/controllers/molecules/ChangeDisplayName.js b/src/controllers/molecules/ChangeDisplayName.js new file mode 100644 index 0000000000..c62f7925ac --- /dev/null +++ b/src/controllers/molecules/ChangeDisplayName.js @@ -0,0 +1,71 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var React = require('react'); +var MatrixClientPeg = require("../../MatrixClientPeg"); + +module.exports = { + getDefaultProps: function() { + return { + onFinished: function() {}, + }; + }, + + getInitialState: function() { + return { + busy: false, + errorString: null + } + }, + + componentWillMount: function() { + var cli = MatrixClientPeg.get(); + this.setState({busy: true}); + var self = this; + cli.getProfileInfo(cli.credentials.userId).done(function(result) { + self.setState({ + displayname: result.displayname, + busy: false + }); + }, function(error) { + self.setState({ + errorString: "Failed to fetch display name", + busy: false + }); + }); + }, + + changeDisplayname: function(new_displayname) { + var cli = MatrixClientPeg.get(); + + this.setState({ + busy: true, + errorString: null, + }) + + var self = this; + MatrixClientPeg.get().setDisplayName(new_displayname).then(function() { + self.setState({busy: false}); + }, function(error) { + self.setState({ + busy: false, + errorString: "Failed to set display name" + }); + }); + }, +}