From df9e037bfccfd588c24a0f6f30c4df87aaa2bb93 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 17 Oct 2017 18:11:00 +0100 Subject: [PATCH] Default values when GETing instead of when POSTing --- src/components/structures/GroupView.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js index cba50a9ef4..7c8ef80b80 100644 --- a/src/components/structures/GroupView.js +++ b/src/components/structures/GroupView.js @@ -448,8 +448,16 @@ export default React.createClass({ _initGroupStore: function(groupId) { this._groupStore = GroupStoreCache.getGroupStore(MatrixClientPeg.get(), groupId); this._groupStore.on('update', () => { + const summary = this._groupStore.getSummary(); + if (summary.profile) { + // Default profile fields should be "" for later sending to the server (which + // requires that the fields are strings, not null) + ["avatar_url", "long_description", "name", "short_description"].forEach((k) => { + summary.profile[k] = summary.profile[k] || ""; + }); + } this.setState({ - summary: this._groupStore.getSummary(), + summary, error: null, }); }); @@ -524,15 +532,8 @@ export default React.createClass({ }, _onSaveClick: function() { - const newGroupProfile = this.state.profileForm; - // Synapse is not expecting `null`, so map unset values to the empty string - Object.keys(newGroupProfile).forEach((k) => { - if (!newGroupProfile[k]) { - newGroupProfile[k] = ''; - } - }); this.setState({saving: true}); - MatrixClientPeg.get().setGroupProfile(this.props.groupId, newGroupProfile).then((result) => { + MatrixClientPeg.get().setGroupProfile(this.props.groupId, this.state.profileForm).then((result) => { this.setState({ saving: false, editing: false,