diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index 749bc9ae7a..061f79f0cf 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -226,6 +226,11 @@ module.exports = React.createClass({ ERROR: "ERROR" // There was an error }, + propTypes: { + // The array of threepids from the JS SDK (required for email notifications) + threepids: React.PropTypes.array.isRequired, + }, + getInitialState: function() { return { phase: this.phases.LOADING, @@ -883,6 +888,41 @@ module.exports = React.createClass({ return rows; }, + emailNotificationsRow: function(address, label) { + return (
+
+ { + var emailPusherPromise; + if (e.target.checked) { + emailPusherPromise = UserSettingsStore.addEmailPusher(address); + } else { + var emailPusher = UserSettingsStore.getEmailPusher(this.state.pushers, address); + emailPusher.kind = null; + emailPusherPromise = MatrixClientPeg.get().setPusher(emailPusher); + } + emailPusherPromise.done(() => { + this._refreshFromServer(); + }, (error) => { + var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + Modal.createDialog(ErrorDialog, { + title: "Error saving email notification preferences", + description: "Vector was unable to save your email notification preferences.", + }); + }); + }} /> +
+
+ +
+
); + }, + render: function() { var self = this; @@ -928,6 +968,23 @@ module.exports = React.createClass({ ); } + var emailNotificationsRow; + if (this.props.threepids.filter(function(tp) { + if (tp.medium == "email") { + return true; + } + }).length == 0) { + emailNotificationsRow =
+ Add an email address above to configure email notifications +
; + } else { + // This only supports the first email address in your profile for now + emailNotificationsRow = this.emailNotificationsRow( + this.props.threepids[0].address, + "Enable email notifications ("+this.props.threepids[0].address+")" + ); + } + // Build external push rules var externalRules = []; for (var i in this.state.externalPushRules) { @@ -958,17 +1015,19 @@ module.exports = React.createClass({ // and this wouldn't be hard to add. var rows = []; for (var i = 0; i < this.state.pushers.length; ++i) { - rows.push( - {this.state.pushers[i].app_display_name} - {this.state.pushers[i].device_display_name} + var p = this.state.pushers[i]; + + rows.push( + {p.app_display_name} + {p.device_display_name} ); } - devicesSection = ( + devicesSection = (
- - {rows} + + {rows}
Application Device
); } @@ -1026,6 +1085,8 @@ module.exports = React.createClass({ + { emailNotificationsRow } +

General use