Merge pull request #1374 from vector-im/dbkr/get_pushers

Get and display a user's pushers in settings
pull/1469/head
David Baker 2016-04-12 14:41:45 +01:00
commit be55882f46
2 changed files with 49 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,32 @@ 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 className="mx_UserSettings_devicesTable_nodevices">
No devices are receiving push notifications
</div>
} else {
// It would be great to be able to delete pushers from here too,
// and this wouldn't be hard to add.
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 +1046,10 @@ module.exports = React.createClass({
</table> </table>
</div> </div>
<h3>Devices</h3>
{ devicesSection }
{ advancedSettings } { advancedSettings }
</div> </div>

View File

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