Merge branch 'develop' into matthew/dharma
This commit is contained in:
commit
4fbf34e05b
15 changed files with 213 additions and 6983 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -14,3 +14,6 @@ npm-debug.log
|
||||||
/src/component-index.js
|
/src/component-index.js
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# https://github.com/vector-im/riot-web/issues/7083
|
||||||
|
package-lock.json
|
||||||
|
|
|
@ -10,7 +10,7 @@ RIOT_WEB_DIR=riot-web
|
||||||
REACT_SDK_DIR=`pwd`
|
REACT_SDK_DIR=`pwd`
|
||||||
|
|
||||||
scripts/fetchdep.sh vector-im riot-web
|
scripts/fetchdep.sh vector-im riot-web
|
||||||
cd "$RIOT_WEB_DIR"
|
pushd "$RIOT_WEB_DIR"
|
||||||
|
|
||||||
mkdir node_modules
|
mkdir node_modules
|
||||||
npm install
|
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
|
rm -r node_modules/matrix-react-sdk
|
||||||
ln -s "$REACT_SDK_DIR" node_modules/matrix-react-sdk
|
ln -s "$REACT_SDK_DIR" node_modules/matrix-react-sdk
|
||||||
|
|
||||||
|
npm run build
|
||||||
npm run test
|
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
|
||||||
|
|
|
@ -15,5 +15,7 @@ addons:
|
||||||
chrome: stable
|
chrome: stable
|
||||||
install:
|
install:
|
||||||
- npm 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:
|
script:
|
||||||
./scripts/travis.sh
|
./scripts/travis.sh
|
||||||
|
|
97
CHANGELOG.md
97
CHANGELOG.md
|
@ -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)
|
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)
|
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v0.12.9-rc.2...v0.12.9)
|
||||||
|
|
6960
package-lock.json
generated
6960
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "matrix-react-sdk",
|
"name": "matrix-react-sdk",
|
||||||
"version": "0.12.9",
|
"version": "0.13.0",
|
||||||
"description": "SDK for matrix.org using React",
|
"description": "SDK for matrix.org using React",
|
||||||
"author": "matrix.org",
|
"author": "matrix.org",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
"linkifyjs": "^2.1.6",
|
"linkifyjs": "^2.1.6",
|
||||||
"lodash": "^4.13.1",
|
"lodash": "^4.13.1",
|
||||||
"lolex": "2.3.2",
|
"lolex": "2.3.2",
|
||||||
"matrix-js-sdk": "0.10.6",
|
"matrix-js-sdk": "0.10.7",
|
||||||
"optimist": "^0.6.1",
|
"optimist": "^0.6.1",
|
||||||
"pako": "^1.0.5",
|
"pako": "^1.0.5",
|
||||||
"prop-types": "^15.5.8",
|
"prop-types": "^15.5.8",
|
||||||
|
@ -89,7 +89,7 @@
|
||||||
"slate-react": "^0.12.4",
|
"slate-react": "^0.12.4",
|
||||||
"slate-html-serializer": "^0.6.1",
|
"slate-html-serializer": "^0.6.1",
|
||||||
"slate-md-serializer": "matrix-org/slate-md-serializer#f7c4ad3",
|
"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",
|
"text-encoding-utf-8": "^1.0.1",
|
||||||
"url": "^0.11.0",
|
"url": "^0.11.0",
|
||||||
"velocity-vector": "vector-im/velocity#059e3b2",
|
"velocity-vector": "vector-im/velocity#059e3b2",
|
||||||
|
|
|
@ -28,6 +28,12 @@ limitations under the License.
|
||||||
margin-top: -2px;
|
margin-top: -2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_MatrixToolbar_error {
|
||||||
|
padding-left: 16px;
|
||||||
|
padding-right: 8px;
|
||||||
|
background-color: $warning-bg-color;
|
||||||
|
}
|
||||||
|
|
||||||
.mx_MatrixToolbar_content {
|
.mx_MatrixToolbar_content {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
@ -59,4 +65,4 @@ limitations under the License.
|
||||||
|
|
||||||
.mx_MatrixToolbar_changelog {
|
.mx_MatrixToolbar_changelog {
|
||||||
white-space: pre;
|
white-space: pre;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ $focus-brightness: 200%;
|
||||||
|
|
||||||
// red warning colour
|
// red warning colour
|
||||||
$warning-color: #ff0064;
|
$warning-color: #ff0064;
|
||||||
|
$warning-bg-color: #DF2A8B;
|
||||||
|
|
||||||
// groups
|
// groups
|
||||||
$info-plinth-bg-color: #454545;
|
$info-plinth-bg-color: #454545;
|
||||||
|
|
|
@ -27,6 +27,8 @@ $focus-brightness: 125%;
|
||||||
|
|
||||||
// red warning colour
|
// red warning colour
|
||||||
$warning-color: #ff0064;
|
$warning-color: #ff0064;
|
||||||
|
// background colour for warnings
|
||||||
|
$warning-bg-color: #DF2A8B;
|
||||||
$mention-user-pill-bg-color: #ff0064;
|
$mention-user-pill-bg-color: #ff0064;
|
||||||
$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);
|
$other-user-pill-bg-color: rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ const LoggedInView = React.createClass({
|
||||||
this._setStateFromSessionStore();
|
this._setStateFromSessionStore();
|
||||||
|
|
||||||
this._matrixClient.on("accountData", this.onAccountData);
|
this._matrixClient.on("accountData", this.onAccountData);
|
||||||
|
this._matrixClient.on("sync", this.onSync);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentWillUnmount: function() {
|
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) {
|
_onKeyDown: function(ev) {
|
||||||
/*
|
/*
|
||||||
// Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers
|
// 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
|
// 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
|
// which bubbles to certain elements in the tree. When this happens, close
|
||||||
// any settings page that is currently open (user/room/group).
|
// any settings page that is currently open (user/room/group).
|
||||||
if (this.props.leftDisabled &&
|
if (this.props.leftDisabled && this.props.rightDisabled) {
|
||||||
this.props.rightDisabled &&
|
const targetClasses = new Set(ev.target.className.split(' '));
|
||||||
(
|
if (
|
||||||
ev.target.className === 'mx_MatrixChat' ||
|
targetClasses.has('mx_MatrixChat') ||
|
||||||
ev.target.className === 'mx_MatrixChat_middlePanel' ||
|
targetClasses.has('mx_MatrixChat_middlePanel') ||
|
||||||
ev.target.className === 'mx_RoomView'
|
targetClasses.has('mx_RoomView')
|
||||||
)
|
) {
|
||||||
) {
|
dis.dispatch({ action: 'close_settings' });
|
||||||
dis.dispatch({ action: 'close_settings' });
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -286,6 +301,7 @@ const LoggedInView = React.createClass({
|
||||||
const NewVersionBar = sdk.getComponent('globals.NewVersionBar');
|
const NewVersionBar = sdk.getComponent('globals.NewVersionBar');
|
||||||
const UpdateCheckBar = sdk.getComponent('globals.UpdateCheckBar');
|
const UpdateCheckBar = sdk.getComponent('globals.UpdateCheckBar');
|
||||||
const PasswordNagBar = sdk.getComponent('globals.PasswordNagBar');
|
const PasswordNagBar = sdk.getComponent('globals.PasswordNagBar');
|
||||||
|
const ServerLimitBar = sdk.getComponent('globals.ServerLimitBar');
|
||||||
|
|
||||||
let page_element;
|
let page_element;
|
||||||
let right_panel = '';
|
let right_panel = '';
|
||||||
|
@ -370,7 +386,9 @@ const LoggedInView = React.createClass({
|
||||||
|
|
||||||
let topBar;
|
let topBar;
|
||||||
const isGuest = this.props.matrixClient.isGuest();
|
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
|
this.props.config.piwik
|
||||||
) {
|
) {
|
||||||
const policyUrl = this.props.config.piwik.policyUrl || null;
|
const policyUrl = this.props.config.piwik.policyUrl || null;
|
||||||
|
|
|
@ -309,10 +309,14 @@ module.exports = React.createClass({
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
let consentError = null;
|
let consentError = null;
|
||||||
|
let mauError = null;
|
||||||
for (const m of unsentMessages) {
|
for (const m of unsentMessages) {
|
||||||
if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {
|
if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {
|
||||||
consentError = m.error;
|
consentError = m.error;
|
||||||
break;
|
break;
|
||||||
|
} else if (m.error && m.error.errcode === 'M_MAU_LIMIT_EXCEEDED') {
|
||||||
|
mauError = m.error;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (consentError) {
|
if (consentError) {
|
||||||
|
@ -327,6 +331,8 @@ module.exports = React.createClass({
|
||||||
</a>,
|
</a>,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
} else if (mauError) {
|
||||||
|
title = _t("Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.");
|
||||||
} else if (
|
} else if (
|
||||||
unsentMessages.length === 1 &&
|
unsentMessages.length === 1 &&
|
||||||
unsentMessages[0].error &&
|
unsentMessages[0].error &&
|
||||||
|
|
|
@ -121,6 +121,15 @@ module.exports = React.createClass({
|
||||||
const usingEmail = username.indexOf("@") > 0;
|
const usingEmail = username.indexOf("@") > 0;
|
||||||
if (error.httpStatus === 400 && usingEmail) {
|
if (error.httpStatus === 400 && usingEmail) {
|
||||||
errorText = _t('This Home Server does not support login using email address.');
|
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) {
|
} else if (error.httpStatus === 401 || error.httpStatus === 403) {
|
||||||
if (SdkConfig.get()['disable_custom_urls']) {
|
if (SdkConfig.get()['disable_custom_urls']) {
|
||||||
errorText = (
|
errorText = (
|
||||||
|
|
|
@ -164,7 +164,12 @@ module.exports = React.createClass({
|
||||||
if (!success) {
|
if (!success) {
|
||||||
let msg = response.message || response.toString();
|
let msg = response.message || response.toString();
|
||||||
// can we give a better error message?
|
// 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;
|
let msisdnAvailable = false;
|
||||||
for (const flow of response.available_flows) {
|
for (const flow of response.available_flows) {
|
||||||
msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;
|
msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;
|
||||||
|
|
31
src/components/views/globals/ServerLimitBar.js
Normal file
31
src/components/views/globals/ServerLimitBar.js
Normal 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>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
});
|
|
@ -33,12 +33,6 @@
|
||||||
"VoIP is unsupported": "VoIP is unsupported",
|
"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 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.",
|
"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",
|
"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",
|
"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",
|
"Call in Progress": "Call in Progress",
|
||||||
|
@ -211,7 +205,6 @@
|
||||||
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
|
"Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?",
|
||||||
"Failed to join room": "Failed to join room",
|
"Failed to join room": "Failed to join room",
|
||||||
"Message Pinning": "Message Pinning",
|
"Message Pinning": "Message Pinning",
|
||||||
"Jitsi Conference Calling": "Jitsi Conference Calling",
|
|
||||||
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
|
"Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing",
|
||||||
"Use compact timeline layout": "Use compact timeline layout",
|
"Use compact timeline layout": "Use compact timeline layout",
|
||||||
"Hide removed messages": "Hide removed messages",
|
"Hide removed messages": "Hide removed messages",
|
||||||
|
@ -271,6 +264,7 @@
|
||||||
"No display name": "No display name",
|
"No display name": "No display name",
|
||||||
"New passwords don't match": "New passwords don't match",
|
"New passwords don't match": "New passwords don't match",
|
||||||
"Passwords can't be empty": "Passwords can't be empty",
|
"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.",
|
"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",
|
"Continue": "Continue",
|
||||||
"Export E2E room keys": "Export E2E room keys",
|
"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.",
|
"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>",
|
"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",
|
"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).",
|
"Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).",
|
||||||
"Checking for an update...": "Checking for an update...",
|
"Checking for an update...": "Checking for an update...",
|
||||||
"No update available.": "No update available.",
|
"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",
|
"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>.",
|
"<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>.",
|
"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 wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn’t 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.|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 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.",
|
"%(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",
|
"Send Reset Email": "Send Reset Email",
|
||||||
"Create an account": "Create an account",
|
"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 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.",
|
"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.",
|
"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.",
|
"Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue