Get & display pushers in settings

Really this is so (in a subsequent PR) we can show whether a user has an email pusher, but we can basically display the list of pushers for free, so adding this too.
This commit is contained in:
David Baker 2016-04-12 13:18:57 +01:00
parent 46572ae793
commit cff1c3010b
2 changed files with 42 additions and 1 deletions

View file

@ -601,7 +601,7 @@ module.exports = React.createClass({
_refreshFromServer: function() { _refreshFromServer: function() {
var self = this; var self = this;
MatrixClientPeg.get().getPushRules().then(self._portRulesToNewAPI).done(function(rulesets) { var pushRulesPromise = MatrixClientPeg.get().getPushRules().then(self._portRulesToNewAPI).done(function(rulesets) {
MatrixClientPeg.get().pushRules = rulesets; MatrixClientPeg.get().pushRules = rulesets;
// Get homeserver default rules and triage them by categories // Get homeserver default rules and triage them by categories
@ -811,10 +811,20 @@ module.exports = React.createClass({
self.state.externalPushRules.push(rule); self.state.externalPushRules.push(rule);
} }
} }
});
var pushersPromise = MatrixClientPeg.get().getPushers().then(function(resp) {
self.setState({pushers: resp.pushers});
});
q.all([pushRulesPromise, pushersPromise]).done(function() {
self.setState({ self.setState({
phase: self.phases.DISPLAY phase: self.phases.DISPLAY
}); });
}, function(error) {
self.setState({
phase: self.phases.ERROR
});
}); });
}, },
@ -936,6 +946,28 @@ module.exports = React.createClass({
externalRules.push(<li>Notifications on the following keywords follow rules which cant be displayed here: { externalKeyWords }</li>); externalRules.push(<li>Notifications on the following keywords follow rules which cant be displayed here: { externalKeyWords }</li>);
} }
var devicesSection;
if (this.state.pushers === undefined) {
devicesSection = <div className="error">Unable to fetch device list</div>
} else if (this.state.pushers.length == 0) {
devicesSection = <div><i>No devices are push notifications</i></div>
} else {
var rows = [];
for (var i = 0; i < this.state.pushers.length; ++i) {
rows.push(<tr>
<td>{this.state.pushers[i].app_display_name}</td>
<td>{this.state.pushers[i].device_display_name}</td>
</tr>);
}
devicesSection = (<table className="mx_UserSettings_devicesTable">
<tr>
<th>Application</th>
<th>Device</th>
</tr>
{rows}
</table>);
}
var advancedSettings; var advancedSettings;
if (externalRules.length) { if (externalRules.length) {
advancedSettings = ( advancedSettings = (
@ -1010,6 +1042,10 @@ module.exports = React.createClass({
</table> </table>
</div> </div>
<h3>Devices</h3>
{ devicesSection }
{ advancedSettings } { advancedSettings }
</div> </div>

View file

@ -60,3 +60,8 @@ limitations under the License.
cursor: pointer; cursor: pointer;
color: #76cfa6; color: #76cfa6;
} }
.mx_UserSettings_devicesTable td {
padding-left: 20px;
padding-right: 20px;
}