diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js index 38b7634edb9..740ffd1629d 100644 --- a/src/components/structures/LoggedInView.js +++ b/src/components/structures/LoggedInView.js @@ -77,12 +77,15 @@ const LoggedInView = React.createClass({ return { // use compact timeline view useCompactLayout: SettingsStore.getValue('useCompactLayout'), + interfaceScale: SettingsStore.getValue('interfaceScale'), + chatFontScale: SettingsStore.getValue('chatFontScale'), }; }, componentWillMount: function() { // stash the MatrixClient in case we log out before we are unmounted this._matrixClient = this.props.matrixClient; + this.dispatcherRef = dis.register(this.onAction); CallMediaHandler.loadDevices(); @@ -98,6 +101,7 @@ const LoggedInView = React.createClass({ }, componentWillUnmount: function() { + dis.unregister(this.dispatcherRef); document.removeEventListener('keydown', this._onKeyDown); this._matrixClient.removeListener("accountData", this.onAccountData); if (this._sessionStoreToken) { @@ -128,6 +132,21 @@ const LoggedInView = React.createClass({ }); }, + onAction(payload) { + switch(payload.action) { + case 'set_interface_scale': + this.setState({ + interfaceScale: payload.value, + }); + break; + case 'set_chat_font_scale': + this.setState({ + chatFontScale: payload.value, + }); + break + } + }, + onAccountData: function(event) { if (event.getType() === "im.vector.web.settings") { this.setState({ @@ -239,6 +258,7 @@ const LoggedInView = React.createClass({ key={this.props.currentRoomId || 'roomview'} disabled={this.props.middleDisabled} collapsedRhs={this.props.collapseRhs} + chatFontScale={this.state.chatFontScale} ConferenceHandler={this.props.ConferenceHandler} />; if (!this.props.collapseRhs) { @@ -326,9 +346,9 @@ const LoggedInView = React.createClass({ if (this.state.useCompactLayout) { bodyClasses += ' mx_MatrixChat_useCompactLayout'; } - + return ( -