From 63607f29e79f713dd750dda9d5b8f3ae79984ee4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 4 Nov 2017 22:27:34 -0700 Subject: [PATCH] Use SettingsStore for notification settings Signed-off-by: Travis Ralstron --- .../views/settings/Notifications.js | 55 +++++++++++++------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index fa3f48c1c..fe6e67765 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -20,11 +20,12 @@ import sdk from 'matrix-react-sdk'; import { _t, _tJsx } from 'matrix-react-sdk/lib/languageHandler'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; +import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/SettingsStore"; import Modal from 'matrix-react-sdk/lib/Modal'; import { - NotificationUtils, - VectorPushRulesDefinitions, - PushRuleVectorState, + NotificationUtils, + VectorPushRulesDefinitions, + PushRuleVectorState, ContentRules } from '../../../notifications'; @@ -112,12 +113,33 @@ module.exports = React.createClass({ }, onEnableDesktopNotificationsChange: function(event) { - UserSettingsStore.setEnableNotifications(event.target.checked); + SettingsStore.setValue( + "notificationsEnabled", null, + SettingLevel.DEVICE, + event.target.checked, + ).finally(() => { + this.forceUpdate(); + }); }, onEnableDesktopNotificationBodyChange: function(event) { - UserSettingsStore.setEnableNotificationBody(event.target.checked); - this.forceUpdate(); + SettingsStore.setValue( + "notificationBodyEnabled", null, + SettingLevel.DEVICE, + event.target.checked, + ).finally(() => { + this.forceUpdate(); + }); + }, + + onEnableAudioNotificationsChange: function(event) { + SettingsStore.setValue( + "audioNotificationsEnabled", null, + SettingLevel.DEVICE, + event.target.checked, + ).finally(() => { + this.forceUpdate(); + }); }, onEnableEmailNotificationsChange: function(address, event) { @@ -433,7 +455,7 @@ module.exports = React.createClass({ needsUpdate.push( function(kind, rule) { return cli.setPushRuleActions( 'global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions) - ).then(() => + ).then(() => cli.deletePushRule('global', kind, rule.rule_id) ).catch( (e) => { console.warn(`Error when porting legacy rule: ${e}`); @@ -446,7 +468,7 @@ module.exports = React.createClass({ if (needsUpdate.length > 0) { // If some of the rules need to be ported then wait for the porting // to happen and then fetch the rules again. - return Promise.all(needsUpdate).then(() => + return Promise.all(needsUpdate).then(() => cli.getPushRules() ); } else { @@ -694,13 +716,13 @@ module.exports = React.createClass({ render: function() { const self = this; - + let spinner; if (this.state.phase === this.phases.LOADING) { const Loader = sdk.getComponent("elements.Spinner"); spinner = ; } - + let masterPushRuleDiv; if (this.state.masterPushRule) { masterPushRuleDiv = ( @@ -710,7 +732,7 @@ module.exports = React.createClass({ ref="enableNotifications" type="checkbox" checked={ !this.state.masterPushRule.enabled } - onChange={ this.onEnableNotificationsChange } + onChange={ this.onEnableNotificationsChange } />
@@ -824,7 +846,7 @@ module.exports = React.createClass({
@@ -839,7 +861,7 @@ module.exports = React.createClass({
@@ -854,11 +876,8 @@ module.exports = React.createClass({ { - UserSettingsStore.setEnableAudioNotifications(e.target.checked); - this.forceUpdate(); - }} /> + checked={ SettingsStore.getValue("audioNotificationsEnabled") } + onChange={ this.onEnableAudioNotificationsChange } />