Merge branch 'develop' into matthew/dharma

pull/21833/head
Matthew Hodgson 2018-08-03 17:15:00 -07:00
commit 4fbf34e05b
15 changed files with 213 additions and 6983 deletions

3
.gitignore vendored
View File

@ -14,3 +14,6 @@ npm-debug.log
/src/component-index.js
.DS_Store
# https://github.com/vector-im/riot-web/issues/7083
package-lock.json

View File

@ -10,7 +10,7 @@ RIOT_WEB_DIR=riot-web
REACT_SDK_DIR=`pwd`
scripts/fetchdep.sh vector-im riot-web
cd "$RIOT_WEB_DIR"
pushd "$RIOT_WEB_DIR"
mkdir node_modules
npm install
@ -23,4 +23,16 @@ ln -s "$REACT_SDK_DIR/node_modules/matrix-js-sdk" node_modules/matrix-js-sdk
rm -r node_modules/matrix-react-sdk
ln -s "$REACT_SDK_DIR" node_modules/matrix-react-sdk
npm run build
npm run test
popd
# run end to end tests
git clone https://github.com/matrix-org/matrix-react-end-to-end-tests.git --branch master
pushd matrix-react-end-to-end-tests
ln -s $REACT_SDK_DIR/$RIOT_WEB_DIR riot/riot-web
# PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ./install.sh
# CHROME_PATH=$(which google-chrome-stable) ./run.sh
./install.sh
./run.sh
popd

View File

@ -15,5 +15,7 @@ addons:
chrome: stable
install:
- npm install
# install synapse prerequisites for end to end tests
- sudo apt-get install build-essential python2.7-dev libffi-dev python-pip python-setuptools sqlite3 libssl-dev python-virtualenv libjpeg-dev libxslt1-dev
script:
./scripts/travis.sh

View File

@ -1,3 +1,100 @@
Changes in [0.13.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.0) (2018-07-30)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.0-rc.2...v0.13.0)
* Fix composer bug where cursor position would change when Riot regained focus
[\#2093](https://github.com/matrix-org/matrix-react-sdk/pull/2093)
* Fix persistend element location not updating
[\#2094](https://github.com/matrix-org/matrix-react-sdk/pull/2094)
* Slate Fixes 42?
[\#2089](https://github.com/matrix-org/matrix-react-sdk/pull/2089)
Changes in [0.13.0-rc.2](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.0-rc.2) (2018-07-24)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.13.0-rc.1...v0.13.0-rc.2)
* Take jitsi conf calling out of labs
[\#2087](https://github.com/matrix-org/matrix-react-sdk/pull/2087)
Changes in [0.13.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.13.0-rc.1) (2018-07-24)
===============================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.12.9...v0.13.0-rc.1)
* Update from Weblate.
[\#2086](https://github.com/matrix-org/matrix-react-sdk/pull/2086)
* Moar Slate Fixes
[\#2082](https://github.com/matrix-org/matrix-react-sdk/pull/2082)
* Destroy the widget when its permission is revoked
[\#2081](https://github.com/matrix-org/matrix-react-sdk/pull/2081)
* Make ActiveWidgetStore clear persistent widgets
[\#2084](https://github.com/matrix-org/matrix-react-sdk/pull/2084)
* CreateRoomDialog is rendered before getting the config default_federate
[\#2078](https://github.com/matrix-org/matrix-react-sdk/pull/2078)
* Slate Fixes
[\#2076](https://github.com/matrix-org/matrix-react-sdk/pull/2076)
* FIX: Don't error on rooms the user has left already
[\#2077](https://github.com/matrix-org/matrix-react-sdk/pull/2077)
* Fix persistent apps being the wrong size
[\#2080](https://github.com/matrix-org/matrix-react-sdk/pull/2080)
* Fix widgets resetting when going to the top-left
[\#2079](https://github.com/matrix-org/matrix-react-sdk/pull/2079)
* Jitsi: Use integrations URL from config
[\#2062](https://github.com/matrix-org/matrix-react-sdk/pull/2062)
* Allow jitsi in e2e rooms
[\#2075](https://github.com/matrix-org/matrix-react-sdk/pull/2075)
* Fix border around persisted widgets
[\#2071](https://github.com/matrix-org/matrix-react-sdk/pull/2071)
* Fix e2e icons floating above jitsi
[\#2073](https://github.com/matrix-org/matrix-react-sdk/pull/2073)
* hide some commands after space as they have special semantics
[\#2074](https://github.com/matrix-org/matrix-react-sdk/pull/2074)
* Even More Slate Fixes :D
[\#2070](https://github.com/matrix-org/matrix-react-sdk/pull/2070)
* Improve UX for Jitsi by adding local echo for widgets
[\#2035](https://github.com/matrix-org/matrix-react-sdk/pull/2035)
* Jitsi: Check integrations server before call
[\#2063](https://github.com/matrix-org/matrix-react-sdk/pull/2063)
* Jitsi: Error message on no permission
[\#2061](https://github.com/matrix-org/matrix-react-sdk/pull/2061)
* Fix read receipts on top of Jitsi
[\#2065](https://github.com/matrix-org/matrix-react-sdk/pull/2065)
* Moar Slate Fixes
[\#2069](https://github.com/matrix-org/matrix-react-sdk/pull/2069)
* fix 2nd typo in one PR :(
[\#2068](https://github.com/matrix-org/matrix-react-sdk/pull/2068)
* check if has some completions, not if >=0
[\#2067](https://github.com/matrix-org/matrix-react-sdk/pull/2067)
* Slate fixes
[\#2066](https://github.com/matrix-org/matrix-react-sdk/pull/2066)
* Implement always-on-screen capability for widgets
[\#2056](https://github.com/matrix-org/matrix-react-sdk/pull/2056)
* simplify MessageComposerStore and improve its performance
[\#2064](https://github.com/matrix-org/matrix-react-sdk/pull/2064)
* Replace Draft with Slate
[\#1890](https://github.com/matrix-org/matrix-react-sdk/pull/1890)
* Fix not stopping to peek when navigating away from peeked room
[\#2055](https://github.com/matrix-org/matrix-react-sdk/pull/2055)
* T3chguy/slate cont2
[\#2049](https://github.com/matrix-org/matrix-react-sdk/pull/2049)
* add null-guard for stickerpickerWidget in StickerPicker
[\#2057](https://github.com/matrix-org/matrix-react-sdk/pull/2057)
* Implement always-on-screen capability for widgets
[\#2053](https://github.com/matrix-org/matrix-react-sdk/pull/2053)
* fix nullguard on EventTile, getComponent never returns falsey, it throws
[\#2024](https://github.com/matrix-org/matrix-react-sdk/pull/2024)
* Fix stickerpicker PersistedElement usage
[\#2051](https://github.com/matrix-org/matrix-react-sdk/pull/2051)
* encrypt for invited users if history visibility allows.
[\#2042](https://github.com/matrix-org/matrix-react-sdk/pull/2042)
* move nag bar clear statement to any desktop notif toggle not just 0->1
[\#2031](https://github.com/matrix-org/matrix-react-sdk/pull/2031)
* use TruncatedList to prevent rendering hundreds/thousands of DOM nodes
[\#2041](https://github.com/matrix-org/matrix-react-sdk/pull/2041)
* Fix stuff
[\#2047](https://github.com/matrix-org/matrix-react-sdk/pull/2047)
* Show m.room.server_acl
[\#2046](https://github.com/matrix-org/matrix-react-sdk/pull/2046)
Changes in [0.12.9](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v0.12.9) (2018-07-09)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.12.9-rc.2...v0.12.9)

6960
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
"version": "0.12.9",
"version": "0.13.0",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
@ -73,7 +73,7 @@
"linkifyjs": "^2.1.6",
"lodash": "^4.13.1",
"lolex": "2.3.2",
"matrix-js-sdk": "0.10.6",
"matrix-js-sdk": "0.10.7",
"optimist": "^0.6.1",
"pako": "^1.0.5",
"prop-types": "^15.5.8",
@ -89,7 +89,7 @@
"slate-react": "^0.12.4",
"slate-html-serializer": "^0.6.1",
"slate-md-serializer": "matrix-org/slate-md-serializer#f7c4ad3",
"sanitize-html": "^1.14.1",
"sanitize-html": "^1.18.4",
"text-encoding-utf-8": "^1.0.1",
"url": "^0.11.0",
"velocity-vector": "vector-im/velocity#059e3b2",

View File

@ -28,6 +28,12 @@ limitations under the License.
margin-top: -2px;
}
.mx_MatrixToolbar_error {
padding-left: 16px;
padding-right: 8px;
background-color: $warning-bg-color;
}
.mx_MatrixToolbar_content {
flex: 1;
}
@ -59,4 +65,4 @@ limitations under the License.
.mx_MatrixToolbar_changelog {
white-space: pre;
}
}

View File

@ -19,6 +19,7 @@ $focus-brightness: 200%;
// red warning colour
$warning-color: #ff0064;
$warning-bg-color: #DF2A8B;
// groups
$info-plinth-bg-color: #454545;

View File

@ -27,6 +27,8 @@ $focus-brightness: 125%;
// red warning colour
$warning-color: #ff0064;
// background colour for warnings
$warning-bg-color: #DF2A8B;
$mention-user-pill-bg-color: #ff0064;
$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);

View File

@ -98,6 +98,7 @@ const LoggedInView = React.createClass({
this._setStateFromSessionStore();
this._matrixClient.on("accountData", this.onAccountData);
this._matrixClient.on("sync", this.onSync);
},
componentWillUnmount: function() {
@ -142,6 +143,20 @@ const LoggedInView = React.createClass({
}
},
onSync: function(syncState, oldSyncState, data) {
if (syncState === oldSyncState) return;
if (syncState === 'ERROR') {
this.setState({
syncErrorData: data,
});
} else {
this.setState({
syncErrorData: null,
});
}
},
_onKeyDown: function(ev) {
/*
// Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers
@ -259,15 +274,15 @@ const LoggedInView = React.createClass({
// When the panels are disabled, clicking on them results in a mouse event
// which bubbles to certain elements in the tree. When this happens, close
// any settings page that is currently open (user/room/group).
if (this.props.leftDisabled &&
this.props.rightDisabled &&
(
ev.target.className === 'mx_MatrixChat' ||
ev.target.className === 'mx_MatrixChat_middlePanel' ||
ev.target.className === 'mx_RoomView'
)
) {
dis.dispatch({ action: 'close_settings' });
if (this.props.leftDisabled && this.props.rightDisabled) {
const targetClasses = new Set(ev.target.className.split(' '));
if (
targetClasses.has('mx_MatrixChat') ||
targetClasses.has('mx_MatrixChat_middlePanel') ||
targetClasses.has('mx_RoomView')
) {
dis.dispatch({ action: 'close_settings' });
}
}
},
@ -286,6 +301,7 @@ const LoggedInView = React.createClass({
const NewVersionBar = sdk.getComponent('globals.NewVersionBar');
const UpdateCheckBar = sdk.getComponent('globals.UpdateCheckBar');
const PasswordNagBar = sdk.getComponent('globals.PasswordNagBar');
const ServerLimitBar = sdk.getComponent('globals.ServerLimitBar');
let page_element;
let right_panel = '';
@ -370,7 +386,9 @@ const LoggedInView = React.createClass({
let topBar;
const isGuest = this.props.matrixClient.isGuest();
if (this.props.showCookieBar &&
if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
topBar = <ServerLimitBar />;
} else if (this.props.showCookieBar &&
this.props.config.piwik
) {
const policyUrl = this.props.config.piwik.policyUrl || null;

View File

@ -309,10 +309,14 @@ module.exports = React.createClass({
);
} else {
let consentError = null;
let mauError = null;
for (const m of unsentMessages) {
if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {
consentError = m.error;
break;
} else if (m.error && m.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
mauError = m.error;
break;
}
}
if (consentError) {
@ -327,6 +331,8 @@ module.exports = React.createClass({
</a>,
},
);
} else if (mauError) {
title = _t("Your message wasnt sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.");
} else if (
unsentMessages.length === 1 &&
unsentMessages[0].error &&

View File

@ -121,6 +121,15 @@ module.exports = React.createClass({
const usingEmail = username.indexOf("@") > 0;
if (error.httpStatus === 400 && usingEmail) {
errorText = _t('This Home Server does not support login using email address.');
} else if (error.errcode == 'M_MAU_LIMIT_EXCEEDED') {
errorText = (
<div>
<div>{ _t('This homeserver has hit its Monthly Active User limit') }</div>
<div className="mx_Login_smallError">
{ _t('Please contact your service administrator to continue using this service.') }
</div>
</div>
);
} else if (error.httpStatus === 401 || error.httpStatus === 403) {
if (SdkConfig.get()['disable_custom_urls']) {
errorText = (

View File

@ -164,7 +164,12 @@ module.exports = React.createClass({
if (!success) {
let msg = response.message || response.toString();
// can we give a better error message?
if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {
if (response.errcode == 'M_MAU_LIMIT_EXCEEDED') {
msg = <div>
<p>{_t("This homeserver has hit its Monthly Active User limit")}</p>
<p>{_t("Please contact your service administrator to continue using this service.")}</p>
</div>;
} else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {
let msisdnAvailable = false;
for (const flow of response.available_flows) {
msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;

View File

@ -0,0 +1,31 @@
/*
Copyright 2018 New Vector 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.
*/
import React from 'react';
import { _t } from '../../../languageHandler';
export default React.createClass({
render: function() {
const toolbarClasses = "mx_MatrixToolbar mx_MatrixToolbar_error";
return (
<div className={toolbarClasses}>
<div className="mx_MatrixToolbar_content">
{ _t("This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.") }
</div>
</div>
);
},
});

View File

@ -33,12 +33,6 @@
"VoIP is unsupported": "VoIP is unsupported",
"You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.",
"You cannot place a call with yourself.": "You cannot place a call with yourself.",
"Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms",
"Conference calls are not supported in this client": "Conference calls are not supported in this client",
"Warning!": "Warning!",
"Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.",
"Failed to set up conference call": "Failed to set up conference call",
"Conference call failed.": "Conference call failed.",
"Could not connect to the integration server": "Could not connect to the integration server",
"A conference call could not be started because the intgrations server is not available": "A conference call could not be started because the intgrations server is not available",
"Call in Progress": "Call in Progress",
@ -211,7 +205,6 @@
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
"Failed to join room": "Failed to join room",
"Message Pinning": "Message Pinning",
"Jitsi Conference Calling": "Jitsi Conference Calling",
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout",
"Hide removed messages": "Hide removed messages",
@ -271,6 +264,7 @@
"No display name": "No display name",
"New passwords don't match": "New passwords don't match",
"Passwords can't be empty": "Passwords can't be empty",
"Warning!": "Warning!",
"Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.",
"Continue": "Continue",
"Export E2E room keys": "Export E2E room keys",
@ -683,6 +677,7 @@
"A new version of Riot is available.": "A new version of Riot is available.",
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
"Set Password": "Set Password",
"This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.",
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
"Checking for an update...": "Checking for an update...",
"No update available.": "No update available.",
@ -1041,6 +1036,7 @@
"Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present",
"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.": "<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.",
"You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.": "You can't send any messages until you review and agree to <consentLink>our terms and conditions</consentLink>.",
"Your message wasnt sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasnt sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.",
"%(count)s of your messages have not been sent.|other": "Some of your messages have not been sent.",
"%(count)s of your messages have not been sent.|one": "Your message was not sent.",
"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.|other": "<resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. You can also select individual messages to resend or cancel.",
@ -1158,6 +1154,8 @@
"Send Reset Email": "Send Reset Email",
"Create an account": "Create an account",
"This Home Server does not support login using email address.": "This Home Server does not support login using email address.",
"This homeserver has hit its Monthly Active User limit": "This homeserver has hit its Monthly Active User limit",
"Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.",
"Incorrect username and/or password.": "Incorrect username and/or password.",
"Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.",
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",