Merge branch 'develop' of github.com:matrix-org/matrix-react-sdk into t3chguy/socials
This commit is contained in:
commit
499f7e8af7
38 changed files with 267 additions and 238 deletions
|
@ -1,4 +1,4 @@
|
|||
src/component-index.js
|
||||
test/end-to-end-tests/node_modules/
|
||||
test/end-to-end-tests/riot/
|
||||
test/end-to-end-tests/element/
|
||||
test/end-to-end-tests/synapse/
|
||||
|
|
|
@ -12,5 +12,5 @@ test/components/views/dialogs/InteractiveAuthDialog-test.js
|
|||
test/mock-clock.js
|
||||
src/component-index.js
|
||||
test/end-to-end-tests/node_modules/
|
||||
test/end-to-end-tests/riot/
|
||||
test/end-to-end-tests/element/
|
||||
test/end-to-end-tests/synapse/
|
||||
|
|
83
CHANGELOG.md
83
CHANGELOG.md
|
@ -1,3 +1,86 @@
|
|||
Changes in [3.10.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.10.0) (2020-12-07)
|
||||
=====================================================================================================
|
||||
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.10.0-rc.1...v3.10.0)
|
||||
|
||||
* Upgrade to JS SDK 9.3.0
|
||||
|
||||
Changes in [3.10.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.10.0-rc.1) (2020-12-02)
|
||||
===============================================================================================================
|
||||
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.9.0...v3.10.0-rc.1)
|
||||
|
||||
* Upgrade to JS SDK 9.3.0-rc.1
|
||||
* Translations update from Weblate
|
||||
[\#5461](https://github.com/matrix-org/matrix-react-sdk/pull/5461)
|
||||
* Fix VoIP call plinth on dark theme
|
||||
[\#5460](https://github.com/matrix-org/matrix-react-sdk/pull/5460)
|
||||
* Add sanity checking around widget pinning
|
||||
[\#5459](https://github.com/matrix-org/matrix-react-sdk/pull/5459)
|
||||
* Update i18n for Appearance User Settings
|
||||
[\#5457](https://github.com/matrix-org/matrix-react-sdk/pull/5457)
|
||||
* Only show 'answered elsewhere' if we tried to answer too
|
||||
[\#5455](https://github.com/matrix-org/matrix-react-sdk/pull/5455)
|
||||
* Fixed Avatar for 3PID invites
|
||||
[\#5442](https://github.com/matrix-org/matrix-react-sdk/pull/5442)
|
||||
* Slightly better error if we can't capture user media
|
||||
[\#5449](https://github.com/matrix-org/matrix-react-sdk/pull/5449)
|
||||
* Make it possible in-code to hide rooms from the room list
|
||||
[\#5445](https://github.com/matrix-org/matrix-react-sdk/pull/5445)
|
||||
* Fix the stickerpicker
|
||||
[\#5447](https://github.com/matrix-org/matrix-react-sdk/pull/5447)
|
||||
* Add live password validation to change password dialog
|
||||
[\#5436](https://github.com/matrix-org/matrix-react-sdk/pull/5436)
|
||||
* LaTeX rendering in element-web using KaTeX
|
||||
[\#5244](https://github.com/matrix-org/matrix-react-sdk/pull/5244)
|
||||
* Add lifecycle customisation point after logout
|
||||
[\#5448](https://github.com/matrix-org/matrix-react-sdk/pull/5448)
|
||||
* Simplify UserMenu for Guests as they can't use most of the options
|
||||
[\#5421](https://github.com/matrix-org/matrix-react-sdk/pull/5421)
|
||||
* Fix known issues with modal widgets
|
||||
[\#5444](https://github.com/matrix-org/matrix-react-sdk/pull/5444)
|
||||
* Fix existing widgets not having approved capabilities for their function
|
||||
[\#5443](https://github.com/matrix-org/matrix-react-sdk/pull/5443)
|
||||
* Use the WidgetDriver to run OIDC requests
|
||||
[\#5440](https://github.com/matrix-org/matrix-react-sdk/pull/5440)
|
||||
* Add a customisation point for widget permissions and fix amnesia issues
|
||||
[\#5439](https://github.com/matrix-org/matrix-react-sdk/pull/5439)
|
||||
* Fix Widget event notification text including spurious space
|
||||
[\#5441](https://github.com/matrix-org/matrix-react-sdk/pull/5441)
|
||||
* Move call listener out of MatrixChat
|
||||
[\#5438](https://github.com/matrix-org/matrix-react-sdk/pull/5438)
|
||||
* New Look in-Call View
|
||||
[\#5432](https://github.com/matrix-org/matrix-react-sdk/pull/5432)
|
||||
* Support arbitrary widgets sticking to the screen + sending stickers
|
||||
[\#5435](https://github.com/matrix-org/matrix-react-sdk/pull/5435)
|
||||
* Auth typescripting and validation tweaks
|
||||
[\#5433](https://github.com/matrix-org/matrix-react-sdk/pull/5433)
|
||||
* Add new widget API actions for changing rooms and sending/receiving events
|
||||
[\#5385](https://github.com/matrix-org/matrix-react-sdk/pull/5385)
|
||||
* Revert room header click behaviour to opening room settings
|
||||
[\#5434](https://github.com/matrix-org/matrix-react-sdk/pull/5434)
|
||||
* Add option to send/edit a message with Ctrl + Enter / Command + Enter
|
||||
[\#5160](https://github.com/matrix-org/matrix-react-sdk/pull/5160)
|
||||
* Add Analytics instrumentation to the Homepage
|
||||
[\#5409](https://github.com/matrix-org/matrix-react-sdk/pull/5409)
|
||||
* Fix encrypted video playback in Chrome-based browsers
|
||||
[\#5430](https://github.com/matrix-org/matrix-react-sdk/pull/5430)
|
||||
* Add border-radius for video
|
||||
[\#5333](https://github.com/matrix-org/matrix-react-sdk/pull/5333)
|
||||
* Push name to the end, near text, in IRC layout
|
||||
[\#5166](https://github.com/matrix-org/matrix-react-sdk/pull/5166)
|
||||
* Disable notifications for the room you have recently been active in
|
||||
[\#5325](https://github.com/matrix-org/matrix-react-sdk/pull/5325)
|
||||
* Search through the list of unfiltered rooms rather than the rooms in the
|
||||
state which are already filtered by the search text
|
||||
[\#5331](https://github.com/matrix-org/matrix-react-sdk/pull/5331)
|
||||
* Lighten blockquote colour in dark mode
|
||||
[\#5353](https://github.com/matrix-org/matrix-react-sdk/pull/5353)
|
||||
* Specify community description img must be mxc urls
|
||||
[\#5364](https://github.com/matrix-org/matrix-react-sdk/pull/5364)
|
||||
* Add keyboard shortcut to close the current conversation
|
||||
[\#5253](https://github.com/matrix-org/matrix-react-sdk/pull/5253)
|
||||
* Redirect user home from auth screens if they are already logged in
|
||||
[\#5423](https://github.com/matrix-org/matrix-react-sdk/pull/5423)
|
||||
|
||||
Changes in [3.9.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.9.0) (2020-11-23)
|
||||
===================================================================================================
|
||||
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.9.0-rc.1...v3.9.0)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "matrix-react-sdk",
|
||||
"version": "3.9.0",
|
||||
"version": "3.10.0",
|
||||
"description": "SDK for matrix.org using React",
|
||||
"author": "matrix.org",
|
||||
"repository": {
|
||||
|
@ -50,7 +50,7 @@
|
|||
"lint:types": "tsc --noEmit --jsx react",
|
||||
"lint:style": "stylelint 'res/css/**/*.scss'",
|
||||
"test": "jest",
|
||||
"test:e2e": "./test/end-to-end-tests/run.sh --riot-url http://localhost:8080"
|
||||
"test:e2e": "./test/end-to-end-tests/run.sh --app-url http://localhost:8080"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.10.5",
|
||||
|
@ -58,6 +58,7 @@
|
|||
"blueimp-canvas-to-blob": "^3.27.0",
|
||||
"browser-encrypt-attachment": "^0.3.0",
|
||||
"browser-request": "^0.3.3",
|
||||
"cheerio": "^1.0.0-rc.3",
|
||||
"classnames": "^2.2.6",
|
||||
"commonmark": "^0.29.1",
|
||||
"counterpart": "^0.18.6",
|
||||
|
@ -77,7 +78,6 @@
|
|||
"html-entities": "^1.3.1",
|
||||
"is-ip": "^2.0.0",
|
||||
"katex": "^0.12.0",
|
||||
"cheerio": "^1.0.0-rc.3",
|
||||
"linkifyjs": "^2.1.9",
|
||||
"lodash": "^4.17.19",
|
||||
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# Update on docker hub with the following commands in the directory of this file:
|
||||
# docker build -t matrixdotorg/riotweb-ci-e2etests-env:latest .
|
||||
# docker build -t vectorim/element-web-ci-e2etests-env:latest .
|
||||
# docker log
|
||||
# docker push matrixdotorg/riotweb-ci-e2etests-env:latest
|
||||
# docker push vectorim/element-web-ci-e2etests-env:latest
|
||||
FROM node:10
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install build-essential python3-dev libffi-dev python-pip python-setuptools sqlite3 libssl-dev python-virtualenv libjpeg-dev libxslt1-dev uuid-runtime
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
#
|
||||
# script which is run by the CI build (after `yarn test`).
|
||||
#
|
||||
# clones riot-web develop and runs the tests against our version of react-sdk.
|
||||
# clones element-web develop and runs the tests against our version of react-sdk.
|
||||
|
||||
set -ev
|
||||
|
||||
scripts/ci/layered-riot-web.sh
|
||||
cd ../riot-web
|
||||
scripts/ci/layered.sh
|
||||
cd element-web
|
||||
yarn build:genfiles # so the tests can run. Faster version of `build`
|
||||
yarn test
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# script which is run by the CI build (after `yarn test`).
|
||||
#
|
||||
# clones riot-web develop and runs the tests against our version of react-sdk.
|
||||
# clones element-web develop and runs the tests against our version of react-sdk.
|
||||
|
||||
set -ev
|
||||
|
||||
|
@ -14,20 +14,20 @@ handle_error() {
|
|||
trap 'handle_error' ERR
|
||||
|
||||
echo "--- Building Element"
|
||||
scripts/ci/layered-riot-web.sh
|
||||
cd ../riot-web
|
||||
riot_web_dir=`pwd`
|
||||
scripts/ci/layered.sh
|
||||
cd element-web
|
||||
element_web_dir=`pwd`
|
||||
CI_PACKAGE=true yarn build
|
||||
cd ../matrix-react-sdk
|
||||
cd ..
|
||||
# run end to end tests
|
||||
pushd test/end-to-end-tests
|
||||
ln -s $riot_web_dir riot/riot-web
|
||||
ln -s $element_web_dir element/element-web
|
||||
# PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ./install.sh
|
||||
# CHROME_PATH=$(which google-chrome-stable) ./run.sh
|
||||
echo "--- Install synapse & other dependencies"
|
||||
./install.sh
|
||||
# install static webserver to server symlinked local copy of riot
|
||||
./riot/install-webserver.sh
|
||||
# install static webserver to server symlinked local copy of element
|
||||
./element/install-webserver.sh
|
||||
rm -r logs || true
|
||||
mkdir logs
|
||||
echo "+++ Running end-to-end tests"
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Creates an environment similar to one that riot-web would expect for
|
||||
# development. This means going one directory up (and assuming we're in
|
||||
# a directory like /workdir/matrix-react-sdk) and putting riot-web and
|
||||
# the js-sdk there.
|
||||
|
||||
cd ../ # Assume we're at something like /workdir/matrix-react-sdk
|
||||
|
||||
# Set up the js-sdk first
|
||||
matrix-react-sdk/scripts/fetchdep.sh matrix-org matrix-js-sdk
|
||||
pushd matrix-js-sdk
|
||||
yarn link
|
||||
yarn install
|
||||
popd
|
||||
|
||||
# Now set up the react-sdk
|
||||
pushd matrix-react-sdk
|
||||
yarn link matrix-js-sdk
|
||||
yarn link
|
||||
yarn install
|
||||
popd
|
||||
|
||||
# Finally, set up riot-web
|
||||
matrix-react-sdk/scripts/fetchdep.sh vector-im riot-web
|
||||
pushd riot-web
|
||||
yarn link matrix-js-sdk
|
||||
yarn link matrix-react-sdk
|
||||
yarn install
|
||||
yarn build:res
|
||||
popd
|
31
scripts/ci/layered.sh
Executable file
31
scripts/ci/layered.sh
Executable file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Creates a layered environment with the full repo for the app and SDKs cloned
|
||||
# and linked.
|
||||
|
||||
# Note that this style is different from the recommended developer setup: this
|
||||
# file nests js-sdk and element-web inside react-sdk, while the local
|
||||
# development setup places them all at the same level. We are nesting them here
|
||||
# because some CI systems do not allow moving to a directory above the checkout
|
||||
# for the primary repo (react-sdk in this case).
|
||||
|
||||
# Set up the js-sdk first
|
||||
scripts/fetchdep.sh matrix-org matrix-js-sdk
|
||||
pushd matrix-js-sdk
|
||||
yarn link
|
||||
yarn install
|
||||
popd
|
||||
|
||||
# Now set up the react-sdk
|
||||
yarn link matrix-js-sdk
|
||||
yarn link
|
||||
yarn install
|
||||
|
||||
# Finally, set up element-web
|
||||
scripts/fetchdep.sh vector-im element-web
|
||||
pushd element-web
|
||||
yarn link matrix-js-sdk
|
||||
yarn link matrix-react-sdk
|
||||
yarn install
|
||||
yarn build:res
|
||||
popd
|
|
@ -34,7 +34,7 @@ elif [[ "${#BUILDKITE_BRANCH_ARRAY[@]}" == "2" ]]; then
|
|||
fi
|
||||
# Try the target branch of the push or PR.
|
||||
clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH
|
||||
# Try the current branch from Jenkins.
|
||||
clone $deforg $defrepo `"echo $GIT_BRANCH" | sed -e 's/^origin\///'`
|
||||
# Try HEAD which is the branch name in Netlify (not BRANCH which is pull/xxxx/head for PR builds)
|
||||
clone $deforg $defrepo $HEAD
|
||||
# Use the default branch as the last resort.
|
||||
clone $deforg $defrepo $defbranch
|
||||
|
|
|
@ -393,14 +393,14 @@ export default class CallHandler {
|
|||
title = _t("Unable to access microphone");
|
||||
description = <div>
|
||||
{_t(
|
||||
"Call failed because no microphone could not be accessed. " +
|
||||
"Call failed because microphone could not be accessed. " +
|
||||
"Check that a microphone is plugged in and set up correctly.",
|
||||
)}
|
||||
</div>;
|
||||
} else if (call.type === CallType.Video) {
|
||||
title = _t("Unable to access webcam / microphone");
|
||||
description = <div>
|
||||
{_t("Call failed because no webcam or microphone could not be accessed. Check that:")}
|
||||
{_t("Call failed because webcam or microphone could not be accessed. Check that:")}
|
||||
<ul>
|
||||
<li>{_t("A microphone and webcam are plugged in and set up correctly")}</li>
|
||||
<li>{_t("Permission is granted to use the webcam")}</li>
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
Copyright 2015, 2016 OpenMarket 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.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
function tsOfNewestEvent(room) {
|
||||
if (room.timeline.length) {
|
||||
return room.timeline[room.timeline.length - 1].getTs();
|
||||
} else {
|
||||
return Number.MAX_SAFE_INTEGER;
|
||||
}
|
||||
}
|
||||
|
||||
export function mostRecentActivityFirst(roomList) {
|
||||
return roomList.sort(function(a, b) {
|
||||
return tsOfNewestEvent(b) - tsOfNewestEvent(a);
|
||||
});
|
||||
}
|
|
@ -34,7 +34,6 @@ import { DecryptionFailureTracker } from "../../DecryptionFailureTracker";
|
|||
import { MatrixClientPeg, IMatrixClientCreds } from "../../MatrixClientPeg";
|
||||
import PlatformPeg from "../../PlatformPeg";
|
||||
import SdkConfig from "../../SdkConfig";
|
||||
import * as RoomListSorter from "../../RoomListSorter";
|
||||
import dis from "../../dispatcher/dispatcher";
|
||||
import Notifier from '../../Notifier';
|
||||
|
||||
|
@ -48,7 +47,6 @@ import * as Lifecycle from '../../Lifecycle';
|
|||
// LifecycleStore is not used but does listen to and dispatch actions
|
||||
import '../../stores/LifecycleStore';
|
||||
import PageTypes from '../../PageTypes';
|
||||
import { getHomePageUrl } from '../../utils/pages';
|
||||
|
||||
import createRoom from "../../createRoom";
|
||||
import {_t, _td, getCurrentLanguage} from '../../languageHandler';
|
||||
|
@ -591,7 +589,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
|||
MatrixClientPeg.get().leave(payload.room_id).then(() => {
|
||||
modal.close();
|
||||
if (this.state.currentRoomId === payload.room_id) {
|
||||
dis.dispatch({action: 'view_next_room'});
|
||||
dis.dispatch({action: 'view_home_page'});
|
||||
}
|
||||
}, (err) => {
|
||||
modal.close();
|
||||
|
@ -620,9 +618,6 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 'view_next_room':
|
||||
this.viewNextRoom(1);
|
||||
break;
|
||||
case Action.ViewUserSettings: {
|
||||
const tabPayload = payload as OpenToTabPayload;
|
||||
const UserSettingsDialog = sdk.getComponent("dialogs.UserSettingsDialog");
|
||||
|
@ -802,35 +797,6 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
|||
this.notifyNewScreen('register');
|
||||
}
|
||||
|
||||
// TODO: Move to RoomViewStore
|
||||
private viewNextRoom(roomIndexDelta: number) {
|
||||
const allRooms = RoomListSorter.mostRecentActivityFirst(
|
||||
MatrixClientPeg.get().getRooms(),
|
||||
);
|
||||
// If there are 0 rooms or 1 room, view the home page because otherwise
|
||||
// if there are 0, we end up trying to index into an empty array, and
|
||||
// if there is 1, we end up viewing the same room.
|
||||
if (allRooms.length < 2) {
|
||||
dis.dispatch({
|
||||
action: 'view_home_page',
|
||||
});
|
||||
return;
|
||||
}
|
||||
let roomIndex = -1;
|
||||
for (let i = 0; i < allRooms.length; ++i) {
|
||||
if (allRooms[i].roomId === this.state.currentRoomId) {
|
||||
roomIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
roomIndex = (roomIndex + roomIndexDelta) % allRooms.length;
|
||||
if (roomIndex < 0) roomIndex = allRooms.length - 1;
|
||||
dis.dispatch({
|
||||
action: 'view_room',
|
||||
room_id: allRooms[roomIndex].roomId,
|
||||
});
|
||||
}
|
||||
|
||||
// switch view to the given room
|
||||
//
|
||||
// @param {Object} roomInfo Object containing data about the room to be joined
|
||||
|
@ -1097,9 +1063,9 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
|||
|
||||
private forgetRoom(roomId: string) {
|
||||
MatrixClientPeg.get().forget(roomId).then(() => {
|
||||
// Switch to another room view if we're currently viewing the historical room
|
||||
// Switch to home page if we're currently viewing the forgotten room
|
||||
if (this.state.currentRoomId === roomId) {
|
||||
dis.dispatch({ action: "view_next_room" });
|
||||
dis.dispatch({ action: "view_home_page" });
|
||||
}
|
||||
}).catch((err) => {
|
||||
const errCode = err.errcode || _td("unknown error code");
|
||||
|
@ -1233,12 +1199,8 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
|||
} else {
|
||||
if (MatrixClientPeg.get().isGuest()) {
|
||||
dis.dispatch({action: 'view_welcome_page'});
|
||||
} else if (getHomePageUrl(this.props.config)) {
|
||||
dis.dispatch({action: 'view_home_page'});
|
||||
} else {
|
||||
this.firstSyncPromise.promise.then(() => {
|
||||
dis.dispatch({action: 'view_next_room'});
|
||||
});
|
||||
dis.dispatch({action: 'view_home_page'});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1332,7 +1332,7 @@ export default class RoomView extends React.Component<IProps, IState> {
|
|||
rejecting: true,
|
||||
});
|
||||
this.context.leave(this.state.roomId).then(() => {
|
||||
dis.dispatch({ action: 'view_next_room' });
|
||||
dis.dispatch({ action: 'view_home_page' });
|
||||
this.setState({
|
||||
rejecting: false,
|
||||
});
|
||||
|
@ -1366,7 +1366,7 @@ export default class RoomView extends React.Component<IProps, IState> {
|
|||
await this.context.setIgnoredUsers(ignoredUsers);
|
||||
|
||||
await this.context.leave(this.state.roomId);
|
||||
dis.dispatch({ action: 'view_next_room' });
|
||||
dis.dispatch({ action: 'view_home_page' });
|
||||
this.setState({
|
||||
rejecting: false,
|
||||
});
|
||||
|
|
|
@ -149,7 +149,7 @@ export default class MessageContextMenu extends React.Component {
|
|||
onRedactClick = () => {
|
||||
const ConfirmRedactDialog = sdk.getComponent("dialogs.ConfirmRedactDialog");
|
||||
Modal.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, {
|
||||
onFinished: async (proceed) => {
|
||||
onFinished: async (proceed, reason) => {
|
||||
if (!proceed) return;
|
||||
|
||||
const cli = MatrixClientPeg.get();
|
||||
|
@ -157,6 +157,8 @@ export default class MessageContextMenu extends React.Component {
|
|||
await cli.redactEvent(
|
||||
this.props.mxEvent.getRoomId(),
|
||||
this.props.mxEvent.getId(),
|
||||
undefined,
|
||||
reason ? { reason } : {},
|
||||
);
|
||||
} catch (e) {
|
||||
const code = e.errcode || e.statusCode;
|
||||
|
|
|
@ -23,15 +23,17 @@ import { _t } from '../../../languageHandler';
|
|||
*/
|
||||
export default class ConfirmRedactDialog extends React.Component {
|
||||
render() {
|
||||
const QuestionDialog = sdk.getComponent('views.dialogs.QuestionDialog');
|
||||
const TextInputDialog = sdk.getComponent('views.dialogs.TextInputDialog');
|
||||
return (
|
||||
<QuestionDialog onFinished={this.props.onFinished}
|
||||
<TextInputDialog onFinished={this.props.onFinished}
|
||||
title={_t("Confirm Removal")}
|
||||
description={
|
||||
_t("Are you sure you wish to remove (delete) this event? " +
|
||||
"Note that if you delete a room name or topic change, it could undo the change.")}
|
||||
placeholder={_t("Reason (optional)")}
|
||||
focus
|
||||
button={_t("Remove")}>
|
||||
</QuestionDialog>
|
||||
</TextInputDialog>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,9 +53,9 @@ export default class RoomSettingsDialog extends React.Component {
|
|||
}
|
||||
|
||||
_onAction = (payload) => {
|
||||
// When room changes below us, close the room settings
|
||||
// When view changes below us, close the room settings
|
||||
// whilst the modal is open this can only be triggered when someone hits Leave Room
|
||||
if (payload.action === 'view_next_room') {
|
||||
if (payload.action === 'view_home_page') {
|
||||
this.props.onFinished();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -175,7 +175,7 @@ export default class ServerPickerDialog extends React.PureComponent<IProps, ISta
|
|||
>
|
||||
<form className="mx_Dialog_content" id="mx_ServerPickerDialog" onSubmit={this.onSubmit}>
|
||||
<p>
|
||||
{_t("We call the places you where you can host your account ‘homeservers’.")} {text}
|
||||
{_t("We call the places where you can host your account ‘homeservers’.")} {text}
|
||||
</p>
|
||||
|
||||
<StyledRadioButton
|
||||
|
|
|
@ -47,9 +47,9 @@
|
|||
"Try using turn.matrix.org": "Try using turn.matrix.org",
|
||||
"OK": "OK",
|
||||
"Unable to access microphone": "Unable to access microphone",
|
||||
"Call failed because no microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Call failed because no microphone could not be accessed. Check that a microphone is plugged in and set up correctly.",
|
||||
"Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.",
|
||||
"Unable to access webcam / microphone": "Unable to access webcam / microphone",
|
||||
"Call failed because no webcam or microphone could not be accessed. Check that:": "Call failed because no webcam or microphone could not be accessed. Check that:",
|
||||
"Call failed because webcam or microphone could not be accessed. Check that:": "Call failed because webcam or microphone could not be accessed. Check that:",
|
||||
"A microphone and webcam are plugged in and set up correctly": "A microphone and webcam are plugged in and set up correctly",
|
||||
"Permission is granted to use the webcam": "Permission is granted to use the webcam",
|
||||
"No other application is using the webcam": "No other application is using the webcam",
|
||||
|
@ -1962,6 +1962,7 @@
|
|||
"Removing…": "Removing…",
|
||||
"Confirm Removal": "Confirm Removal",
|
||||
"Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.",
|
||||
"Reason (optional)": "Reason (optional)",
|
||||
"Clear all data in this session?": "Clear all data in this session?",
|
||||
"Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.",
|
||||
"Clear all data": "Clear all data",
|
||||
|
@ -2160,7 +2161,7 @@
|
|||
"Specify a homeserver": "Specify a homeserver",
|
||||
"Matrix.org is the biggest public homeserver in the world, so it’s a good place for many.": "Matrix.org is the biggest public homeserver in the world, so it’s a good place for many.",
|
||||
"Sign into your homeserver": "Sign into your homeserver",
|
||||
"We call the places you where you can host your account ‘homeservers’.": "We call the places you where you can host your account ‘homeservers’.",
|
||||
"We call the places where you can host your account ‘homeservers’.": "We call the places where you can host your account ‘homeservers’.",
|
||||
"Other homeserver": "Other homeserver",
|
||||
"Use your preferred Matrix homeserver if you have one, or host your own.": "Use your preferred Matrix homeserver if you have one, or host your own.",
|
||||
"Learn more": "Learn more",
|
||||
|
|
|
@ -29,6 +29,8 @@ import WidgetUtils from "../utils/WidgetUtils";
|
|||
import {SettingLevel} from "../settings/SettingLevel";
|
||||
import {WidgetType} from "../widgets/WidgetType";
|
||||
import {UPDATE_EVENT} from "./AsyncStore";
|
||||
import { MatrixClientPeg } from "../MatrixClientPeg";
|
||||
import { arrayDiff, arrayHasDiff, arrayUnion } from "../utils/arrays";
|
||||
|
||||
interface IState {}
|
||||
|
||||
|
@ -48,13 +50,16 @@ interface IRoomWidgets {
|
|||
|
||||
export const MAX_PINNED = 3;
|
||||
|
||||
function widgetUid(app: IApp): string {
|
||||
return `${app.roomId ?? MatrixClientPeg.get().getUserId()}::${app.id}`;
|
||||
}
|
||||
|
||||
// TODO consolidate WidgetEchoStore into this
|
||||
// TODO consolidate ActiveWidgetStore into this
|
||||
export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
||||
private static internalInstance = new WidgetStore();
|
||||
|
||||
// TODO: Come up with a unique key for widgets as their IDs are not globally unique, but can exist anywhere
|
||||
private widgetMap = new Map<string, IApp>(); // Key is widget ID
|
||||
private widgetMap = new Map<string, IApp>(); // Key is widget Unique ID (UID)
|
||||
private roomMap = new Map<string, IRoomWidgets>(); // Key is room ID
|
||||
|
||||
private constructor() {
|
||||
|
@ -129,14 +134,12 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
|||
// first clean out old widgets from the map which originate from this room
|
||||
// otherwise we are out of sync with the rest of the app with stale widget events during removal
|
||||
Array.from(this.widgetMap.values()).forEach(app => {
|
||||
if (app.roomId === room.roomId) {
|
||||
this.widgetMap.delete(app.id);
|
||||
}
|
||||
this.widgetMap.delete(widgetUid(app));
|
||||
});
|
||||
|
||||
this.generateApps(room).forEach(app => {
|
||||
// Sanity check for https://github.com/vector-im/element-web/issues/15705
|
||||
const existingApp = this.widgetMap.get(app.id);
|
||||
const existingApp = this.widgetMap.get(widgetUid(app));
|
||||
if (existingApp) {
|
||||
console.warn(
|
||||
`Possible widget ID conflict for ${app.id} - wants to store in room ${app.roomId} ` +
|
||||
|
@ -144,7 +147,7 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
|||
);
|
||||
}
|
||||
|
||||
this.widgetMap.set(app.id, app);
|
||||
this.widgetMap.set(widgetUid(app), app);
|
||||
roomInfo.widgets.push(app);
|
||||
});
|
||||
this.emit(room.roomId);
|
||||
|
@ -158,19 +161,6 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
|||
this.emit(UPDATE_EVENT);
|
||||
};
|
||||
|
||||
public getRoomId = (widgetId: string) => {
|
||||
const app = this.widgetMap.get(widgetId);
|
||||
if (!app) return null;
|
||||
|
||||
// Sanity check for https://github.com/vector-im/element-web/issues/15705
|
||||
const roomInfo = this.getRoom(app.roomId);
|
||||
if (!roomInfo.widgets?.some(w => w.id === app.id)) {
|
||||
throw new Error(`Widget ${app.id} says it is in ${app.roomId} but was not found there`);
|
||||
}
|
||||
|
||||
return app.roomId;
|
||||
}
|
||||
|
||||
public getRoom = (roomId: string) => {
|
||||
return this.roomMap.get(roomId);
|
||||
};
|
||||
|
@ -220,7 +210,7 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
|||
this.setPinned(roomId, widgetId, true);
|
||||
|
||||
// Show the apps drawer upon the user pinning a widget
|
||||
if (RoomViewStore.getRoomId() === this.getRoomId(widgetId)) {
|
||||
if (RoomViewStore.getRoomId() === roomId) {
|
||||
defaultDispatcher.dispatch({
|
||||
action: "appsDrawer",
|
||||
show: true,
|
||||
|
@ -295,12 +285,33 @@ export default class WidgetStore extends AsyncStoreWithClient<IState> {
|
|||
});
|
||||
|
||||
const order = Object.keys(roomInfo.pinned).filter(k => roomInfo.pinned[k]);
|
||||
let apps = order.map(wId => this.widgetMap.get(wId)).filter(Boolean);
|
||||
apps = apps.slice(0, priorityWidget ? MAX_PINNED - 1 : MAX_PINNED);
|
||||
const apps = order
|
||||
.map(wId => Array.from(this.widgetMap.values())
|
||||
.find(w2 => w2.roomId === roomId && w2.id === wId))
|
||||
.filter(Boolean)
|
||||
.slice(0, priorityWidget ? MAX_PINNED - 1 : MAX_PINNED);
|
||||
if (priorityWidget) {
|
||||
apps.push(priorityWidget);
|
||||
}
|
||||
|
||||
// Sanity check for https://github.com/vector-im/element-web/issues/15705
|
||||
// We union the app IDs the above generated with the roomInfo's known widgets to
|
||||
// get a list of IDs which both exist. We then diff that against the generated app
|
||||
// IDs above to ensure that all of the app IDs are captured by the union with the
|
||||
// room - if we grabbed a widget that wasn't part of the roomInfo's list, it wouldn't
|
||||
// be in the union and thus result in a diff.
|
||||
const appIds = apps.map(a => widgetUid(a));
|
||||
const roomAppIds = roomInfo.widgets.map(a => widgetUid(a));
|
||||
const roomAppIdsUnion = arrayUnion(appIds, roomAppIds);
|
||||
const missingSomeApps = arrayHasDiff(roomAppIdsUnion, appIds);
|
||||
if (missingSomeApps) {
|
||||
const diff = arrayDiff(roomAppIdsUnion, appIds);
|
||||
console.warn(
|
||||
`${roomId} appears to have a conflict for which widgets belong to it. ` +
|
||||
`Widget UIDs are: `, [...diff.added, ...diff.removed],
|
||||
);
|
||||
}
|
||||
|
||||
return apps;
|
||||
}
|
||||
|
||||
|
|
|
@ -140,6 +140,6 @@ export async function leaveRoomBehaviour(roomId: string) {
|
|||
}
|
||||
|
||||
if (RoomViewStore.getRoomId() === roomId) {
|
||||
dis.dispatch({action: 'view_next_room'});
|
||||
dis.dispatch({action: 'view_home_page'});
|
||||
}
|
||||
}
|
||||
|
|
2
test/end-to-end-tests/.gitignore
vendored
2
test/end-to-end-tests/.gitignore
vendored
|
@ -1,3 +1,3 @@
|
|||
node_modules
|
||||
*.png
|
||||
riot/env
|
||||
element/env
|
||||
|
|
|
@ -5,9 +5,9 @@ This directory contains tests for matrix-react-sdk. The tests fire up a headless
|
|||
## Setup
|
||||
|
||||
Run `./install.sh`. This will:
|
||||
- install Synapse, fetches the master branch at the moment. If anything fails here, please refer to the Synapse README to see if you're missing one of the prerequisites.
|
||||
- install Riot, this fetches the master branch at the moment.
|
||||
- install dependencies (will download copy of chrome)
|
||||
- install Synapse, fetches the develop branch at the moment. If anything fails here, please refer to the Synapse README to see if you're missing one of the prerequisites.
|
||||
- install Element Web, this fetches the develop branch at the moment.
|
||||
- install dependencies (will download copy of Chrome)
|
||||
|
||||
## Running the tests
|
||||
|
||||
|
@ -15,7 +15,7 @@ Run tests with `./run.sh`.
|
|||
|
||||
### Debug tests locally.
|
||||
|
||||
`./run.sh` will run the tests against the Riot copy present in `riot/riot-web` served by a static Python HTTP server. You can symlink your `riot-web` develop copy here but that doesn't work well with Webpack recompiling. You can run the test runner directly and specify parameters to get more insight into a failure or run the tests against your local Webpack server.
|
||||
`./run.sh` will run the tests against the Element copy present in `element/element-web` served by a static Python HTTP server. You can symlink your `element-web` develop copy here but that doesn't work well with Webpack recompiling. You can run the test runner directly and specify parameters to get more insight into a failure or run the tests against your local Webpack server.
|
||||
|
||||
```
|
||||
./synapse/stop.sh && \
|
||||
|
@ -26,8 +26,7 @@ It's important to always stop and start Synapse before each run of the tests to
|
|||
|
||||
start.js accepts these parameters (and more, see `node start.js --help`) that can help running the tests locally:
|
||||
|
||||
- `--riot-url <url>` don't use the Riot copy and static server provided by the tests, but use a running server like the Webpack watch server to run the tests against. Make sure to have the following local config:
|
||||
- `welcomeUserId` disabled as the tests assume there is no riot-bot currently.
|
||||
- `--app-url <url>` don't use the Element Web copy and static server provided by the tests, but use a running server like the Webpack watch server to run the tests against.
|
||||
- `--slow-mo` type at a human speed, useful with `--windowed`.
|
||||
- `--throttle-cpu <factor>` throttle cpu in the browser by the given factor. Useful to reproduce failures because of insufficient timeouts happening on the slower CI server.
|
||||
- `--windowed` run the tests in an actual browser window Try to limit interacting with the windows while the tests are running. Hovering over the window tends to fail the tests, dragging the title bar should be fine though.
|
||||
|
|
|
@ -5,14 +5,14 @@ and start following these steps to get going:
|
|||
|
||||
1. Navigate to your working directory (`cd /mnt/c/users/travisr/whatever/matrix-react-sdk` for example).
|
||||
2. Run `sudo apt-get install unzip python3 virtualenv dos2unix`
|
||||
3. Run `dos2unix ./test/end-to-end-tests/*.sh ./test/end-to-end-tests/synapse/*.sh ./test/end-to-end-tests/riot/*.sh`
|
||||
3. Run `dos2unix ./test/end-to-end-tests/*.sh ./test/end-to-end-tests/synapse/*.sh ./test/end-to-end-tests/element/*.sh`
|
||||
4. Install NodeJS for ubuntu:
|
||||
```bash
|
||||
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
|
||||
sudo apt-get update
|
||||
sudo apt-get install nodejs
|
||||
```
|
||||
5. Start Riot on Windows through `yarn start`
|
||||
5. Start Element on Windows through `yarn start`
|
||||
6. While that builds... Run:
|
||||
```bash
|
||||
sudo apt-get install x11-apps
|
||||
|
@ -25,11 +25,11 @@ and start following these steps to get going:
|
|||
cd ./test/end-to-end-tests
|
||||
./synapse/install.sh
|
||||
./install.sh
|
||||
./run.sh --riot-url http://localhost:8080 --no-sandbox
|
||||
./run.sh --app-url http://localhost:8080 --no-sandbox
|
||||
```
|
||||
|
||||
Note that using `yarn test:e2e` probably won't work for you. You might also have to use the config.json from the
|
||||
`riot/config-template` directory in order to actually succeed at the tests.
|
||||
`element/config-template` directory in order to actually succeed at the tests.
|
||||
|
||||
Also note that you'll have to use `--no-sandbox` otherwise Chrome will complain that there's no sandbox available. You
|
||||
could probably fix this with enough effort, or you could run a headless Chrome in the WSL container without a sandbox.
|
||||
|
|
2
test/end-to-end-tests/element/.gitignore
vendored
Normal file
2
test/end-to-end-tests/element/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
element-web
|
||||
element.pid
|
|
@ -8,7 +8,7 @@
|
|||
"brand": "Element",
|
||||
"integrations_ui_url": "https://scalar.vector.im/",
|
||||
"integrations_rest_url": "https://scalar.vector.im/api",
|
||||
"bug_report_endpoint_url": "https://riot.im/bugreports/submit",
|
||||
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
|
||||
"showLabsSettings": true,
|
||||
"default_federate": true,
|
||||
"welcomePageUrl": "home.html",
|
16
test/end-to-end-tests/element/install.sh
Executable file
16
test/end-to-end-tests/element/install.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
ELEMENT_BRANCH=develop
|
||||
|
||||
if [ -d $BASE_DIR/element-web ]; then
|
||||
echo "Element is already installed"
|
||||
exit
|
||||
fi
|
||||
|
||||
curl -L https://github.com/vector-im/element-web/archive/${ELEMENT_BRANCH}.zip --output element.zip
|
||||
unzip -q element.zip
|
||||
rm element.zip
|
||||
mv element-web-${ELEMENT_BRANCH} element-web
|
||||
cd element-web
|
||||
yarn install
|
||||
yarn run build
|
|
@ -3,7 +3,7 @@ set -e
|
|||
|
||||
PORT=5000
|
||||
BASE_DIR=$(cd $(dirname $0) && pwd)
|
||||
PIDFILE=$BASE_DIR/riot.pid
|
||||
PIDFILE=$BASE_DIR/element.pid
|
||||
CONFIG_BACKUP=config.e2etests_backup.json
|
||||
|
||||
if [ -f $PIDFILE ]; then
|
||||
|
@ -11,8 +11,8 @@ if [ -f $PIDFILE ]; then
|
|||
fi
|
||||
|
||||
cd $BASE_DIR/
|
||||
echo -n "starting riot on http://localhost:$PORT ... "
|
||||
pushd riot-web/webapp/ > /dev/null
|
||||
echo -n "Starting Element on http://localhost:$PORT ... "
|
||||
pushd element-web/webapp/ > /dev/null
|
||||
|
||||
# backup config file before we copy template
|
||||
if [ -f config.json ]; then
|
||||
|
@ -34,7 +34,7 @@ LOGFILE=$(mktemp)
|
|||
# NOT expected SIGTERM (128 + 15)
|
||||
# from stop.sh?
|
||||
if [ $RESULT -ne 143 ]; then
|
||||
echo "failed"
|
||||
echo "Failed"
|
||||
cat $LOGFILE
|
||||
rm $PIDFILE 2> /dev/null
|
||||
fi
|
||||
|
@ -49,6 +49,6 @@ sleep 0.5 &
|
|||
wait -n; RESULT=$?
|
||||
# return exit code of first child to exit
|
||||
if [ $RESULT -eq 0 ]; then
|
||||
echo "running"
|
||||
echo "Running"
|
||||
fi
|
||||
exit $RESULT
|
|
@ -2,19 +2,19 @@
|
|||
set -e
|
||||
|
||||
BASE_DIR=$(cd $(dirname $0) && pwd)
|
||||
PIDFILE=riot.pid
|
||||
PIDFILE=element.pid
|
||||
CONFIG_BACKUP=config.e2etests_backup.json
|
||||
|
||||
cd $BASE_DIR
|
||||
|
||||
if [ -f $PIDFILE ]; then
|
||||
echo "stopping riot server ..."
|
||||
echo "Stopping Element server ..."
|
||||
PID=$(cat $PIDFILE)
|
||||
rm $PIDFILE
|
||||
kill $PID
|
||||
|
||||
# revert config file
|
||||
cd riot-web/webapp
|
||||
cd element-web/webapp
|
||||
rm config.json
|
||||
if [ -f $CONFIG_BACKUP ]; then
|
||||
mv $CONFIG_BACKUP config.json
|
|
@ -15,10 +15,10 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
// used from run.sh as getopts doesn't support long parameters
|
||||
const idx = process.argv.indexOf("--riot-url");
|
||||
let hasRiotUrl = false;
|
||||
const idx = process.argv.indexOf("--app-url");
|
||||
let hasAppUrl = false;
|
||||
if (idx !== -1) {
|
||||
const value = process.argv[idx + 1];
|
||||
hasRiotUrl = !!value;
|
||||
hasAppUrl = !!value;
|
||||
}
|
||||
process.stdout.write(hasRiotUrl ? "1" : "0" );
|
||||
process.stdout.write(hasAppUrl ? "1" : "0" );
|
2
test/end-to-end-tests/riot/.gitignore
vendored
2
test/end-to-end-tests/riot/.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
riot-web
|
||||
riot.pid
|
|
@ -1,16 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
RIOT_BRANCH=develop
|
||||
|
||||
if [ -d $BASE_DIR/riot-web ]; then
|
||||
echo "riot is already installed"
|
||||
exit
|
||||
fi
|
||||
|
||||
curl -L https://github.com/vector-im/riot-web/archive/${RIOT_BRANCH}.zip --output riot.zip
|
||||
unzip -q riot.zip
|
||||
rm riot.zip
|
||||
mv riot-web-${RIOT_BRANCH} riot-web
|
||||
cd riot-web
|
||||
yarn install
|
||||
yarn run build
|
|
@ -9,16 +9,16 @@ echo "Please first run $BASE_DIR/install.sh"
|
|||
exit 1
|
||||
fi
|
||||
|
||||
has_custom_riot=$(node has_custom_riot.js $@)
|
||||
has_custom_app=$(node has-custom-app.js $@)
|
||||
|
||||
if [ ! -d "riot/riot-web" ] && [ $has_custom_riot -ne "1" ]; then
|
||||
echo "Please provide an instance of riot to test against by passing --riot-url <url> or running $BASE_DIR/riot/install.sh"
|
||||
if [ ! -d "element/element-web" ] && [ $has_custom_app -ne "1" ]; then
|
||||
echo "Please provide an instance of Element to test against by passing --element-url <url> or running $BASE_DIR/element/install.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
stop_servers() {
|
||||
if [ $has_custom_riot -ne "1" ]; then
|
||||
./riot/stop.sh
|
||||
if [ $has_custom_app -ne "1" ]; then
|
||||
./element/stop.sh
|
||||
fi
|
||||
./synapse/stop.sh
|
||||
}
|
||||
|
@ -32,8 +32,8 @@ handle_error() {
|
|||
trap 'handle_error' ERR
|
||||
|
||||
./synapse/start.sh
|
||||
if [ $has_custom_riot -ne "1" ]; then
|
||||
./riot/start.sh
|
||||
if [ $has_custom_app -ne "1" ]; then
|
||||
./element/start.sh
|
||||
fi
|
||||
node start.js $@
|
||||
stop_servers
|
||||
|
|
|
@ -22,12 +22,12 @@ const {delay} = require('./util');
|
|||
|
||||
const DEFAULT_TIMEOUT = 20000;
|
||||
|
||||
module.exports = class RiotSession {
|
||||
constructor(browser, page, username, riotserver, hsUrl) {
|
||||
module.exports = class ElementSession {
|
||||
constructor(browser, page, username, elementServer, hsUrl) {
|
||||
this.browser = browser;
|
||||
this.page = page;
|
||||
this.hsUrl = hsUrl;
|
||||
this.riotserver = riotserver;
|
||||
this.elementServer = elementServer;
|
||||
this.username = username;
|
||||
this.consoleLog = new LogBuffer(page, "console", (msg) => `${msg.text()}\n`);
|
||||
this.networkLog = new LogBuffer(page, "requestfinished", async (req) => {
|
||||
|
@ -38,7 +38,7 @@ module.exports = class RiotSession {
|
|||
this.log = new Logger(this.username);
|
||||
}
|
||||
|
||||
static async create(username, puppeteerOptions, riotserver, hsUrl, throttleCpuFactor = 1) {
|
||||
static async create(username, puppeteerOptions, elementServer, hsUrl, throttleCpuFactor = 1) {
|
||||
const browser = await puppeteer.launch(puppeteerOptions);
|
||||
const page = await browser.newPage();
|
||||
await page.setViewport({
|
||||
|
@ -50,7 +50,7 @@ module.exports = class RiotSession {
|
|||
console.log("throttling cpu by a factor of", throttleCpuFactor);
|
||||
await client.send('Emulation.setCPUThrottlingRate', { rate: throttleCpuFactor });
|
||||
}
|
||||
return new RiotSession(browser, page, username, riotserver, hsUrl);
|
||||
return new ElementSession(browser, page, username, elementServer, hsUrl);
|
||||
}
|
||||
|
||||
async tryGetInnertext(selector) {
|
||||
|
@ -194,7 +194,7 @@ module.exports = class RiotSession {
|
|||
}
|
||||
|
||||
url(path) {
|
||||
return this.riotserver + path;
|
||||
return this.elementServer + path;
|
||||
}
|
||||
|
||||
delay(ms) {
|
||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
const RiotSession = require('./src/session');
|
||||
const ElementSession = require('./src/session');
|
||||
const scenario = require('./src/scenario');
|
||||
const RestSessionCreator = require('./src/rest/creator');
|
||||
const fs = require("fs");
|
||||
|
@ -22,7 +22,7 @@ const fs = require("fs");
|
|||
const program = require('commander');
|
||||
program
|
||||
.option('--no-logs', "don't output logs, document html on error", false)
|
||||
.option('--riot-url [url]', "riot url to test", "http://localhost:5000")
|
||||
.option('--app-url [url]', "url to test", "http://localhost:5000")
|
||||
.option('--windowed', "dont run tests headless", false)
|
||||
.option('--slow-mo', "type at a human speed", false)
|
||||
.option('--dev-tools', "open chrome devtools in browser window", false)
|
||||
|
@ -57,7 +57,7 @@ async function runTests() {
|
|||
);
|
||||
|
||||
async function createSession(username) {
|
||||
const session = await RiotSession.create(username, options, program.riotUrl, hsUrl, program.throttleCpu);
|
||||
const session = await ElementSession.create(username, options, program.appUrl, hsUrl, program.throttleCpu);
|
||||
sessions.push(session);
|
||||
return session;
|
||||
}
|
||||
|
|
|
@ -875,8 +875,8 @@ password_config:
|
|||
|
||||
|
||||
# Enable sending emails for notification events
|
||||
# Defining a custom URL for Riot is only needed if email notifications
|
||||
# should contain links to a self-hosted installation of Riot; when set
|
||||
# Defining a custom URL for Element is only needed if email notifications
|
||||
# should contain links to a self-hosted installation of Element; when set
|
||||
# the "app_name" setting is ignored.
|
||||
#
|
||||
# If your SMTP server requires authentication, the optional smtp_user &
|
||||
|
@ -897,7 +897,7 @@ email:
|
|||
notif_template_html: notif_mail.html
|
||||
notif_template_text: notif_mail.txt
|
||||
notif_for_new_users: True
|
||||
riot_base_url: "http://localhost/riot"
|
||||
client_base_url: "http://localhost/element"
|
||||
|
||||
|
||||
#password_providers:
|
||||
|
|
30
yarn.lock
30
yarn.lock
|
@ -1256,10 +1256,10 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.11.2":
|
||||
version "7.11.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
|
||||
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
|
||||
"@babel/runtime@^7.12.5":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
|
||||
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
|
@ -4842,9 +4842,9 @@ has@^1.0.1, has@^1.0.3:
|
|||
function-bind "^1.1.1"
|
||||
|
||||
highlight.js@^10.1.2:
|
||||
version "10.1.2"
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.1.2.tgz#c20db951ba1c22c055010648dfffd7b2a968e00c"
|
||||
integrity sha512-Q39v/Mn5mfBlMff9r+zzA+gWxRsCRKwEMvYTiisLr/XUiFI/4puWt0Ojdko3R3JCNWGdOWaA5g/Yxqa23kC5AA==
|
||||
version "10.4.1"
|
||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0"
|
||||
integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==
|
||||
|
||||
hoist-non-react-statics@^3.3.0:
|
||||
version "3.3.2"
|
||||
|
@ -6390,10 +6390,10 @@ log-symbols@^2.0.0, log-symbols@^2.2.0:
|
|||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
loglevel@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0"
|
||||
integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==
|
||||
loglevel@^1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
|
||||
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
|
||||
|
||||
lolex@^5.0.0, lolex@^5.1.2:
|
||||
version "5.1.2"
|
||||
|
@ -6513,15 +6513,15 @@ mathml-tag-names@^2.0.1:
|
|||
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
||||
|
||||
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
|
||||
version "9.2.0"
|
||||
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/6661bde6088e6e43f31198e8532432e162aef33c"
|
||||
version "9.3.0"
|
||||
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/ff6612f9d0aa1a7c08b65a0b41c5ab997506016f"
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.11.2"
|
||||
"@babel/runtime" "^7.12.5"
|
||||
another-json "^0.2.0"
|
||||
browser-request "^0.3.3"
|
||||
bs58 "^4.0.1"
|
||||
content-type "^1.0.4"
|
||||
loglevel "^1.7.0"
|
||||
loglevel "^1.7.1"
|
||||
qs "^6.9.4"
|
||||
request "^2.88.2"
|
||||
unhomoglyph "^1.0.6"
|
||||
|
|
Loading…
Reference in a new issue