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.",
+ });
+ });
+ }} />
+
+
+
+ {label}
+
+
+
);
+ },
+
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 = (
Application
Device
-
- {rows}
+
+ {rows}
);
}
@@ -1026,6 +1085,8 @@ module.exports = React.createClass({
+ { emailNotificationsRow }
+
General use