From ce24165e19a1b61f1447306b68d35c569d72de2f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 8 Feb 2019 16:44:03 +0000 Subject: [PATCH] port over low_bandwidth mode to develop --- src/Lifecycle.js | 5 ++++- src/MatrixClientPeg.js | 2 +- src/components/structures/TimelinePanel.js | 2 ++ src/components/structures/UserSettings.js | 9 ++++++++- src/components/views/avatars/BaseAvatar.js | 11 ++++++++--- src/components/views/rooms/MessageComposerInput.js | 1 + src/i18n/strings/en_EN.json | 1 + src/settings/Settings.js | 5 +++++ 8 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/Lifecycle.js b/src/Lifecycle.js index 54ac605c65..2ea8aa190a 100644 --- a/src/Lifecycle.js +++ b/src/Lifecycle.js @@ -31,6 +31,7 @@ import Modal from './Modal'; import sdk from './index'; import ActiveWidgetStore from './stores/ActiveWidgetStore'; import PlatformPeg from "./PlatformPeg"; +import SettingsStore from "./settings/SettingsStore"; import {sendLoginRequest} from "./Login"; /** @@ -440,7 +441,9 @@ async function startMatrixClient() { Notifier.start(); UserActivity.start(); - Presence.start(); + if (!SettingsStore.getValue("lowBandwidth")) { + Presence.start(); + } DMRoomMap.makeShared().start(); ActiveWidgetStore.start(); diff --git a/src/MatrixClientPeg.js b/src/MatrixClientPeg.js index 882a913452..12301e3716 100644 --- a/src/MatrixClientPeg.js +++ b/src/MatrixClientPeg.js @@ -115,7 +115,7 @@ class MatrixClientPeg { // try to initialise e2e on the new client try { // check that we have a version of the js-sdk which includes initCrypto - if (this.matrixClient.initCrypto) { + if (!SettingsStore.getValue("lowBandwidth") && this.matrixClient.initCrypto) { await this.matrixClient.initCrypto(); } } catch (e) { diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js index 9fe83c2c2d..3bdcf542b1 100644 --- a/src/components/structures/TimelinePanel.js +++ b/src/components/structures/TimelinePanel.js @@ -584,6 +584,8 @@ var TimelinePanel = React.createClass({ }, sendReadReceipt: function() { + if (SettingsStore.getValue("lowBandwidth")) return; + if (!this.refs.messagePanel) return; if (!this.props.manageReadReceipts) return; // This happens on user_activity_end which is delayed, and it's diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 809b06c3d6..0aa564cc85 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -84,6 +84,13 @@ const SIMPLE_SETTINGS = [ { id: "enableWidgetScreenshots" }, { id: "pinMentionedRooms" }, { id: "pinUnreadRooms" }, + { + id: "lowBandwidth", + fn: () => { + PlatformPeg.get().reload(); + }, + level: SettingLevel.DEVICE, + }, { id: "showDeveloperTools" }, { id: "promptBeforeInviteUnknownUsers" }, ]; @@ -644,7 +651,7 @@ module.exports = React.createClass({
); diff --git a/src/components/views/avatars/BaseAvatar.js b/src/components/views/avatars/BaseAvatar.js index 47de7c9dc4..7241e7cd4c 100644 --- a/src/components/views/avatars/BaseAvatar.js +++ b/src/components/views/avatars/BaseAvatar.js @@ -20,6 +20,7 @@ import PropTypes from 'prop-types'; import { MatrixClient } from 'matrix-js-sdk'; import AvatarLogic from '../../../Avatar'; import sdk from '../../../index'; +import SettingsStore from "../../../settings/SettingsStore"; import AccessibleButton from '../elements/AccessibleButton'; module.exports = React.createClass({ @@ -104,9 +105,13 @@ module.exports = React.createClass({ // work out the full set of urls to try to load. This is formed like so: // imageUrls: [ props.url, props.urls, default image ] - const urls = props.urls || []; - if (props.url) { - urls.unshift(props.url); // put in urls[0] + let urls = []; + if (!SettingsStore.getValue("lowBandwidth")) { + urls = props.urls || []; + + if (props.url) { + urls.unshift(props.url); // put in urls[0] + } } let defaultImageUrl = null; diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js index ab89e402ae..0e9442edb9 100644 --- a/src/components/views/rooms/MessageComposerInput.js +++ b/src/components/views/rooms/MessageComposerInput.js @@ -487,6 +487,7 @@ export default class MessageComposerInput extends React.Component { sendTyping(isTyping) { if (!SettingsStore.getValue('sendTypingNotifications')) return; + if (SettingsStore.getValue('lowBandwidth')) return; MatrixClientPeg.get().sendTyping( this.props.room.roomId, this.isTyping, TYPING_SERVER_TIMEOUT, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 623dd92613..e29be2da45 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -300,6 +300,7 @@ "Enable widget screenshots on supported widgets": "Enable widget screenshots on supported widgets", "Prompt before sending invites to potentially invalid matrix IDs": "Prompt before sending invites to potentially invalid matrix IDs", "Show developer tools": "Show developer tools", + "Low Bandwidth Mode": "Low Bandwidth Mode", "Collecting app version information": "Collecting app version information", "Collecting logs": "Collecting logs", "Uploading report": "Uploading report", diff --git a/src/settings/Settings.js b/src/settings/Settings.js index f21e94ea4a..177a90ef5d 100644 --- a/src/settings/Settings.js +++ b/src/settings/Settings.js @@ -362,4 +362,9 @@ export const SETTINGS = { displayName: _td('Show developer tools'), default: false, }, + "lowBandwidth": { + supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, + displayName: _td('Low Bandwidth Mode'), + default: false, + }, };