From 18faa2d8ba27b5bb3c5d9b50a44a7248de304f17 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 15 Oct 2017 21:18:39 -0600 Subject: [PATCH 01/21] CSS for new pinned events indicator Signed-off-by: Travis Ralston --- src/skins/vector/css/_components.scss | 4 ++-- .../matrix-react-sdk/views/rooms/_RoomHeader.scss | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 82c2c18641..f8c69c74df 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -55,6 +55,8 @@ @import "./matrix-react-sdk/views/rooms/_MemberInfo.scss"; @import "./matrix-react-sdk/views/rooms/_MemberList.scss"; @import "./matrix-react-sdk/views/rooms/_MessageComposer.scss"; +@import "./matrix-react-sdk/views/rooms/_PinnedEventTile.scss"; +@import "./matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss"; @import "./matrix-react-sdk/views/rooms/_PresenceLabel.scss"; @import "./matrix-react-sdk/views/rooms/_RoomHeader.scss"; @import "./matrix-react-sdk/views/rooms/_RoomList.scss"; @@ -68,8 +70,6 @@ @import "./matrix-react-sdk/views/voip/_CallView.scss"; @import "./matrix-react-sdk/views/voip/_IncomingCallbox.scss"; @import "./matrix-react-sdk/views/voip/_VideoView.scss"; -@import "./matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss"; -@import "./matrix-react-sdk/views/rooms/_PinnedEventTile.scss"; @import "./vector-web/_fonts.scss"; @import "./vector-web/structures/_CompatibilityPage.scss"; @import "./vector-web/structures/_HomePage.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 05cdfba8fc..3adf5a414e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -224,3 +224,17 @@ limitations under the License. .mx_RoomHeader_voipButtons { margin-top: 18px; } + +.mx_RoomHeader_pinnedButton { + position: relative; +} + +.mx_RoomHeader_unreadPinsIndicator { + position: absolute; + right: 0; + bottom: 4px; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: $warning-color; +} \ No newline at end of file From f3b1c6cc5bee759175c30f0c165de0bc5607ebd3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 18 Oct 2017 08:50:34 -0600 Subject: [PATCH 02/21] Add newlines to end of file Signed-off-by: Travis Ralston --- .../vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 3adf5a414e..ce9f39ef8b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -237,4 +237,4 @@ limitations under the License. height: 8px; border-radius: 8px; background-color: $warning-color; -} \ No newline at end of file +} From 19320c37dfc8bacb4b5f072ba256c9e881b10b4c Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Fri, 27 Oct 2017 19:57:05 +0100 Subject: [PATCH 03/21] Add back bottom border to widget title bar --- package-lock.json | 98 +++++++++---------- .../views/rooms/_AppsDrawer.scss | 2 +- 2 files changed, 47 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64e2e49aef..67707deca4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "riot-web", - "version": "0.12.2", + "version": "0.12.7", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -260,6 +260,16 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.9.0" + } + }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", @@ -299,16 +309,6 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" - } - }, "arraybuffer.slice": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", @@ -3202,16 +3202,36 @@ } }, "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", + "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", "dev": true, "requires": { - "array.prototype.find": "2.0.4", - "doctrine": "1.2.3", + "doctrine": "2.0.0", "has": "1.0.1", - "jsx-ast-utils": "1.4.1", - "object.assign": "4.0.4" + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + } } }, "espree": { @@ -4657,8 +4677,7 @@ "tweetnacl": { "version": "0.14.5", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "uid-number": { "version": "0.0.6", @@ -5696,12 +5715,6 @@ "verror": "1.10.0" } }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", @@ -6108,9 +6121,9 @@ "dev": true }, "matrix-js-sdk": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.8.2.tgz", - "integrity": "sha1-e7mrVoXrNCFLOFlMiDn++pY2ViE=", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.8.5.tgz", + "integrity": "sha1-1ZAVTx53ADVyZw+p28rH5APnbk8=", "requires": { "another-json": "0.2.0", "bluebird": "3.5.1", @@ -6130,9 +6143,9 @@ } }, "matrix-react-sdk": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.10.2.tgz", - "integrity": "sha1-TNSwkN1P4Jsl4Yh5Z/XOE17U8q4=", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.10.7.tgz", + "integrity": "sha1-pi7GrlMwbNRJi0eYYAU04ORBMcA=", "requires": { "babel-runtime": "6.26.0", "bluebird": "3.5.1", @@ -6155,7 +6168,7 @@ "isomorphic-fetch": "2.2.1", "linkifyjs": "2.1.5", "lodash": "4.17.4", - "matrix-js-sdk": "0.8.2", + "matrix-js-sdk": "0.8.5", "optimist": "0.6.1", "prop-types": "15.6.0", "react": "15.6.2", @@ -6611,25 +6624,6 @@ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, "object.entries": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 14b8cb4572..f9c092873e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -74,7 +74,7 @@ limitations under the License. margin: 0; padding: 2px 10px; // background-color: $e2e-verified-color; - // border-bottom: 1px solid $primary-hairline-color; + border-bottom: 1px solid $primary-hairline-color; font-size: 10px; } From ea9b6300828af0d58c46e4c5202e0e52a9a5e4e4 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 30 Oct 2017 12:44:50 +0000 Subject: [PATCH 04/21] Refactor and add Account Data stuffs Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/dialogs/DevtoolsDialog.js | 463 +++++++++++++----- src/i18n/strings/en_EN.json | 4 + .../views/dialogs/_DevtoolsDialog.scss | 103 ++++ 3 files changed, 457 insertions(+), 113 deletions(-) diff --git a/src/components/views/dialogs/DevtoolsDialog.js b/src/components/views/dialogs/DevtoolsDialog.js index 7760ea8418..2c854f99b0 100644 --- a/src/components/views/dialogs/DevtoolsDialog.js +++ b/src/components/views/dialogs/DevtoolsDialog.js @@ -15,35 +15,24 @@ limitations under the License. */ import React from 'react'; +import PropTypes from 'prop-types'; import sdk from 'matrix-react-sdk'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; -class SendCustomEvent extends React.Component { - static propTypes = { - roomId: React.PropTypes.string.isRequired, - onBack: React.PropTypes.func.isRequired, - - eventType: React.PropTypes.string.isRequired, - evContent: React.PropTypes.string.isRequired, +class DevtoolsComponent extends React.Component { + static contextTypes = { + roomId: PropTypes.string.isRequired, }; +} - static defaultProps = { - eventType: '', - evContent: '{\n\n}', - }; +class GenericEditor extends DevtoolsComponent { + // static propTypes = {onBack: PropTypes.func.isRequired}; constructor(props, context) { super(props, context); - this._send = this._send.bind(this); - this.onBack = this.onBack.bind(this); this._onChange = this._onChange.bind(this); - - this.state = { - message: null, - input_eventType: this.props.eventType, - input_evContent: this.props.evContent, - }; + this.onBack = this.onBack.bind(this); } onBack() { @@ -54,6 +43,10 @@ class SendCustomEvent extends React.Component { } } + _onChange(e) { + this.setState({[e.target.id]: e.target.type === 'checkbox' ? e.target.checked : e.target.value}); + } + _buttons() { return
@@ -61,19 +54,64 @@ class SendCustomEvent extends React.Component {
; } + textInput(id, label) { + return
+
+ +
+
+ +
+
; + } +} + +class SendCustomEvent extends GenericEditor { + static getLabel() { return _t('Send Custom Event'); } + + static propTypes = { + onBack: PropTypes.func.isRequired, + forceStateEvent: PropTypes.bool, + inputs: PropTypes.object, + }; + + constructor(props, context) { + super(props, context); + this._send = this._send.bind(this); + + const {eventType, stateKey, evContent} = Object.assign({ + eventType: '', + stateKey: '', + evContent: '{\n\n}', + }, this.props.inputs); + + this.state = { + isStateEvent: Boolean(this.props.forceStateEvent), + + eventType, + stateKey, + evContent, + }; + } + send(content) { - return MatrixClientPeg.get().sendEvent(this.props.roomId, this.state.input_eventType, content); + const cli = MatrixClientPeg.get(); + if (this.state.isStateEvent) { + return cli.sendStateEvent(this.context.roomId, this.state.eventType, content, this.state.stateKey); + } else { + return cli.sendEvent(this.context.roomId, this.state.eventType, content); + } } async _send() { - if (this.state.input_eventType === '') { + if (this.state.eventType === '') { this.setState({ message: _t('You must specify an event type!') }); return; } let message; try { - const content = JSON.parse(this.state.input_evContent); + const content = JSON.parse(this.state.evContent); await this.send(content); message = _t('Event sent!'); } catch (e) { @@ -82,14 +120,6 @@ class SendCustomEvent extends React.Component { this.setState({ message }); } - _additionalFields() { - return
; - } - - _onChange(e) { - this.setState({[`input_${e.target.id}`]: e.target.value}); - } - render() { if (this.state.message) { return
@@ -102,87 +132,176 @@ class SendCustomEvent extends React.Component { return
- { this._additionalFields() } -
- -
-
- -
+ { this.textInput('eventType', _t('Event Type')) } + { this.state.isStateEvent && this.textInput('stateKey', _t('State Key')) } -
+
+ +
-