From e9132a873b870dea6f360e807ebe74b7365814d2 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 17 Nov 2015 02:13:42 +0000 Subject: [PATCH] experiment with turning the UserSettings controller into a UserSettingsStore logic class --- src/UserSettingsStore.js | 80 +++++++++++++++++++++++ src/controllers/organisms/UserSettings.js | 54 --------------- 2 files changed, 80 insertions(+), 54 deletions(-) create mode 100644 src/UserSettingsStore.js delete mode 100644 src/controllers/organisms/UserSettings.js diff --git a/src/UserSettingsStore.js b/src/UserSettingsStore.js new file mode 100644 index 0000000000..50ee03a433 --- /dev/null +++ b/src/UserSettingsStore.js @@ -0,0 +1,80 @@ +/* +Copyright 2015 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var MatrixClientPeg = require("./MatrixClientPeg"); +var sdk = require('./index'); + +// XXX: should we be doing something here to use this as a singleton rather than +// class methods? + +module.exports = { + + // we add these wrappers to the js-sdk here in case we want to do react-specific + // dispatches or similar in future, and to give us a place to clearly separate + // business logic specific from the 'thin' react component and parent wiring component + // which actually handles the UI. + // XXX: I'm not convinced this abstraction is worth it though. + + loadProfileInfo: function() { + var cli = MatrixClientPeg.get(); + return cli.getProfileInfo(cli.credentials.userId); + }, + + saveDisplayName: function(newDisplayname) { + return MatrixClientPeg.get().setDisplayName(newDisplayname); + }, + + loadThreePids: function() { + return MatrixClientPeg.get().getThreePids(); + }, + + saveThreePids: function(threePids) { + + }, + + getEnableNotifications: function() { + var Notifier = sdk.getComponent('organisms.Notifier'); + return Notifier.isEnabled(); + }, + + setEnableNotifications: function(enable) { + var Notifier = sdk.getComponent('organisms.Notifier'); + var self = this; + if (!Notifier.supportsDesktopNotifications()) { + return; + } + Notifier.setEnabled(enable); + }, + + changePassword: function(old_password, new_password) { + var cli = MatrixClientPeg.get(); + + var authDict = { + type: 'm.login.password', + user: cli.credentials.userId, + password: old_password + }; + + this.setState({ + phase: this.Phases.Uploading, + errorString: '', + }) + + return cli.setPassword(authDict, new_password); + }, +} diff --git a/src/controllers/organisms/UserSettings.js b/src/controllers/organisms/UserSettings.js deleted file mode 100644 index d7bb8d391a..0000000000 --- a/src/controllers/organisms/UserSettings.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright 2015 OpenMarket Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -var MatrixClientPeg = require("../../MatrixClientPeg"); -var q = require('q'); -var version = require('../../../package.json').version; - -module.exports = { - Phases: { - Loading: "loading", - Display: "display", - }, - - getInitialState: function() { - return { - avatarUrl: null, - threePids: [], - clientVersion: version, - phase: this.Phases.Loading, - }; - }, - - componentWillMount: function() { - var self = this; - var cli = MatrixClientPeg.get(); - - var profile_d = cli.getProfileInfo(cli.credentials.userId); - var threepid_d = cli.getThreePids(); - - q.all([profile_d, threepid_d]).then( - function(resps) { - self.setState({ - avatarUrl: resps[0].avatar_url, - threepids: resps[1].threepids, - phase: self.Phases.Display, - }); - }, - function(err) { console.err(err); } - ); - } -}