diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js
index 5b209d28c7..3aab61a150 100644
--- a/src/components/structures/BottomLeftMenu.js
+++ b/src/components/structures/BottomLeftMenu.js
@@ -21,7 +21,7 @@ import sdk from 'matrix-react-sdk';
import dis from 'matrix-react-sdk/lib/dispatcher';
import Velocity from 'velocity-vector';
import 'velocity-vector/velocity.ui';
-import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
+import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore";
const CALLOUT_ANIM_DURATION = 1000;
diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js
index a07d11626d..d8f9a4daa2 100644
--- a/src/components/views/context_menus/MessageContextMenu.js
+++ b/src/components/views/context_menus/MessageContextMenu.js
@@ -24,7 +24,7 @@ const sdk = require('matrix-react-sdk');
import { _t } from 'matrix-react-sdk/lib/languageHandler';
const Modal = require('matrix-react-sdk/lib/Modal');
const Resend = require("matrix-react-sdk/lib/Resend");
-import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
+import SettingsStore from "matrix-react-sdk/lib/settings/SettingsStore";
module.exports = React.createClass({
displayName: 'MessageContextMenu',
@@ -67,7 +67,7 @@ module.exports = React.createClass({
let canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli);
// HACK: Intentionally say we can't pin if the user doesn't want to use the functionality
- if (!UserSettingsStore.isFeatureEnabled("feature_pinning")) canPin = false;
+ if (!SettingsStore.isFeatureEnabled("feature_pinning")) canPin = false;
this.setState({canRedact, canPin});
},
diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js
index e5243f8ec6..1289e84b08 100644
--- a/src/components/views/login/VectorLoginFooter.js
+++ b/src/components/views/login/VectorLoginFooter.js
@@ -18,7 +18,7 @@ limitations under the License.
var React = require('react');
import { _t } from 'matrix-react-sdk/lib/languageHandler';
-import UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore';
+import SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';
module.exports = React.createClass({
displayName: 'VectorLoginFooter',
@@ -28,7 +28,7 @@ module.exports = React.createClass({
render: function() {
// FIXME: replace this with a proper Status skin
- if (UserSettingsStore.getTheme() === 'status') return
;
+ if (SettingsStore.getValue("theme") === 'status') return ;
return (
diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js
index fa3f48c1cf..fe6e677651 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 } />