From b7204e79a7479dc1f1a2d429e4e9c55da7485dc0 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 17 Jan 2018 18:17:26 +0000 Subject: [PATCH] fallback after receiving settings rather than {} because its truthy Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/settings/handlers/AccountSettingsHandler.js | 16 +++++++++------- src/settings/handlers/DeviceSettingsHandler.js | 7 ++++--- src/settings/handlers/RoomSettingsHandler.js | 14 ++++++++------ 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/settings/handlers/AccountSettingsHandler.js b/src/settings/handlers/AccountSettingsHandler.js index e50358a728..b822709573 100644 --- a/src/settings/handlers/AccountSettingsHandler.js +++ b/src/settings/handlers/AccountSettingsHandler.js @@ -25,19 +25,20 @@ export default class AccountSettingHandler extends SettingsHandler { getValue(settingName, roomId) { // Special case URL previews if (settingName === "urlPreviewsEnabled") { - const content = this._getSettings("org.matrix.preview_urls"); + const content = this._getSettings("org.matrix.preview_urls") || {}; // Check to make sure that we actually got a boolean if (typeof(content['disable']) !== "boolean") return null; return !content['disable']; } - let preferredValue = this._getSettings()[settingName]; + const settings = this._getSettings() || {}; + let preferredValue = settings[settingName]; if (preferredValue === null || preferredValue === undefined) { // Honour the old setting on read only if (settingName === "hideAvatarChanges" || settingName === "hideDisplaynameChanges") { - preferredValue = this._getSettings()["hideAvatarDisplaynameChanges"]; + preferredValue = settings["hideAvatarDisplaynameChanges"]; } } @@ -47,12 +48,12 @@ export default class AccountSettingHandler extends SettingsHandler { setValue(settingName, roomId, newValue) { // Special case URL previews if (settingName === "urlPreviewsEnabled") { - const content = this._getSettings("org.matrix.preview_urls"); + const content = this._getSettings("org.matrix.preview_urls") || {}; content['disable'] = !newValue; return MatrixClientPeg.get().setAccountData("org.matrix.preview_urls", content); } - const content = this._getSettings(); + const content = this._getSettings() || {}; content[settingName] = newValue; return MatrixClientPeg.get().setAccountData("im.vector.web.settings", content); } @@ -68,9 +69,10 @@ export default class AccountSettingHandler extends SettingsHandler { _getSettings(eventType = "im.vector.web.settings") { const cli = MatrixClientPeg.get(); - if (!cli) return {}; + if (!cli) return null; + const event = cli.getAccountData(eventType); - if (!event || !event.getContent()) return {}; + if (!event || !event.getContent()) return null; return event.getContent(); } } diff --git a/src/settings/handlers/DeviceSettingsHandler.js b/src/settings/handlers/DeviceSettingsHandler.js index 22f6140a80..13117f7498 100644 --- a/src/settings/handlers/DeviceSettingsHandler.js +++ b/src/settings/handlers/DeviceSettingsHandler.js @@ -53,7 +53,8 @@ export default class DeviceSettingsHandler extends SettingsHandler { return null; // wrong type or otherwise not set } - return this._getSettings()[settingName]; + const settings = this._getSettings() || {}; + return settings[settingName]; } setValue(settingName, roomId, newValue) { @@ -74,7 +75,7 @@ export default class DeviceSettingsHandler extends SettingsHandler { return Promise.resolve(); } - const settings = this._getSettings(); + const settings = this._getSettings() || {}; settings[settingName] = newValue; localStorage.setItem("mx_local_settings", JSON.stringify(settings)); @@ -91,7 +92,7 @@ export default class DeviceSettingsHandler extends SettingsHandler { _getSettings() { const value = localStorage.getItem("mx_local_settings"); - if (!value) return {}; + if (!value) return null; return JSON.parse(value); } diff --git a/src/settings/handlers/RoomSettingsHandler.js b/src/settings/handlers/RoomSettingsHandler.js index cb3e836c7f..71abff94f6 100644 --- a/src/settings/handlers/RoomSettingsHandler.js +++ b/src/settings/handlers/RoomSettingsHandler.js @@ -24,25 +24,26 @@ export default class RoomSettingsHandler extends SettingsHandler { getValue(settingName, roomId) { // Special case URL previews if (settingName === "urlPreviewsEnabled") { - const content = this._getSettings(roomId, "org.matrix.room.preview_urls"); + const content = this._getSettings(roomId, "org.matrix.room.preview_urls") || {}; // Check to make sure that we actually got a boolean if (typeof(content['disable']) !== "boolean") return null; return !content['disable']; } - return this._getSettings(roomId)[settingName]; + const settings = this._getSettings(roomId) || {}; + return settings[settingName]; } setValue(settingName, roomId, newValue) { // Special case URL previews if (settingName === "urlPreviewsEnabled") { - const content = this._getSettings(roomId, "org.matrix.room.preview_urls"); + const content = this._getSettings(roomId, "org.matrix.room.preview_urls") || {}; content['disable'] = !newValue; return MatrixClientPeg.get().sendStateEvent(roomId, "org.matrix.room.preview_urls", content); } - const content = this._getSettings(roomId); + const content = this._getSettings(roomId) || {}; content[settingName] = newValue; return MatrixClientPeg.get().sendStateEvent(roomId, "im.vector.web.settings", content, ""); } @@ -65,9 +66,10 @@ export default class RoomSettingsHandler extends SettingsHandler { _getSettings(roomId, eventType = "im.vector.web.settings") { const room = MatrixClientPeg.get().getRoom(roomId); - if (!room) return {}; + if (!room) return null; + const event = room.currentState.getStateEvents(eventType, ""); - if (!event || !event.getContent()) return {}; + if (!event || !event.getContent()) return null; return event.getContent(); } }