Replace Riot with Element in docs and comments
This only covers the simple cases of references to issues and repos. More complex areas, such as deployment scripts, will be handled separately. Part of https://github.com/vector-im/element-web/issues/14864
This commit is contained in:
parent
fba1158700
commit
ce226ab534
93 changed files with 202 additions and 202 deletions
|
@ -17,7 +17,7 @@ module.exports = {
|
||||||
"at-rule-no-unknown": null,
|
"at-rule-no-unknown": null,
|
||||||
"no-descending-specificity": null,
|
"no-descending-specificity": null,
|
||||||
"scss/at-rule-no-unknown": [true, {
|
"scss/at-rule-no-unknown": [true, {
|
||||||
// https://github.com/vector-im/riot-web/issues/10544
|
// https://github.com/vector-im/element-web/issues/10544
|
||||||
"ignoreAtRules": ["define-mixin"],
|
"ignoreAtRules": ["define-mixin"],
|
||||||
}],
|
}],
|
||||||
}
|
}
|
||||||
|
|
18
README.md
18
README.md
|
@ -11,14 +11,14 @@ a 'skin'. A skin provides:
|
||||||
* The containing application
|
* The containing application
|
||||||
* Zero or more 'modules' containing non-UI functionality
|
* Zero or more 'modules' containing non-UI functionality
|
||||||
|
|
||||||
As of Aug 2018, the only skin that exists is `vector-im/riot-web`; it and
|
As of Aug 2018, the only skin that exists is `vector-im/element-web`; it and
|
||||||
`matrix-org/matrix-react-sdk` should effectively
|
`matrix-org/matrix-react-sdk` should effectively
|
||||||
be considered as a single project (for instance, matrix-react-sdk bugs
|
be considered as a single project (for instance, matrix-react-sdk bugs
|
||||||
are currently filed against vector-im/riot-web rather than this project).
|
are currently filed against vector-im/element-web rather than this project).
|
||||||
|
|
||||||
Translation Status
|
Translation Status
|
||||||
==================
|
==================
|
||||||
[![Translation status](https://translate.riot.im/widgets/riot-web/-/multi-auto.svg)](https://translate.riot.im/engage/riot-web/?utm_source=widget)
|
[![Translation status](https://translate.riot.im/widgets/element-web/-/multi-auto.svg)](https://translate.riot.im/engage/element-web/?utm_source=widget)
|
||||||
|
|
||||||
Developer Guide
|
Developer Guide
|
||||||
===============
|
===============
|
||||||
|
@ -41,10 +41,10 @@ https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md
|
||||||
|
|
||||||
Code should be committed as follows:
|
Code should be committed as follows:
|
||||||
* All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components
|
* All new components: https://github.com/matrix-org/matrix-react-sdk/tree/master/src/components
|
||||||
* Riot-specific components: https://github.com/vector-im/riot-web/tree/master/src/components
|
* Element-specific components: https://github.com/vector-im/element-web/tree/master/src/components
|
||||||
* In practice, `matrix-react-sdk` is still evolving so fast that the maintenance
|
* In practice, `matrix-react-sdk` is still evolving so fast that the maintenance
|
||||||
burden of customising and overriding these components for Riot can seriously
|
burden of customising and overriding these components for Element can seriously
|
||||||
impede development. So right now, there should be very few (if any) customisations for Riot.
|
impede development. So right now, there should be very few (if any) customisations for Element.
|
||||||
* CSS: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/css
|
* CSS: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/css
|
||||||
* Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
|
* Theme specific CSS & resources: https://github.com/matrix-org/matrix-react-sdk/tree/master/res/themes
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ practices that anyone working with the SDK needs to be be aware of and uphold:
|
||||||
|
|
||||||
* The view's CSS file MUST have the same name (e.g. view/rooms/MessageTile.css).
|
* The view's CSS file MUST have the same name (e.g. view/rooms/MessageTile.css).
|
||||||
CSS for matrix-react-sdk currently resides in
|
CSS for matrix-react-sdk currently resides in
|
||||||
https://github.com/vector-im/riot-web/tree/master/src/skins/vector/css/matrix-react-sdk.
|
https://github.com/vector-im/element-web/tree/master/src/skins/vector/css/matrix-react-sdk.
|
||||||
|
|
||||||
* Per-view CSS is optional - it could choose to inherit all its styling from
|
* Per-view CSS is optional - it could choose to inherit all its styling from
|
||||||
the context of the rest of the app, although this is unusual for any but
|
the context of the rest of the app, although this is unusual for any but
|
||||||
|
@ -125,7 +125,7 @@ from it.
|
||||||
Github Issues
|
Github Issues
|
||||||
=============
|
=============
|
||||||
|
|
||||||
All issues should be filed under https://github.com/vector-im/riot-web/issues
|
All issues should be filed under https://github.com/vector-im/element-web/issues
|
||||||
for now.
|
for now.
|
||||||
|
|
||||||
Development
|
Development
|
||||||
|
@ -174,5 +174,5 @@ yarn test
|
||||||
|
|
||||||
## End-to-End tests
|
## End-to-End tests
|
||||||
|
|
||||||
Make sure you've got your Riot development server running (by doing `yarn start` in riot-web), and then in this project, run `yarn run e2etests`.
|
Make sure you've got your Element development server running (by doing `yarn start` in element-web), and then in this project, run `yarn run e2etests`.
|
||||||
See `test/end-to-end-tests/README.md` for more information.
|
See `test/end-to-end-tests/README.md` for more information.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# The CIDER (Contenteditable-Input-Diff-Error-Reconcile) editor
|
# The CIDER (Contenteditable-Input-Diff-Error-Reconcile) editor
|
||||||
|
|
||||||
The CIDER editor is a custom editor written for Riot.
|
The CIDER editor is a custom editor written for Element.
|
||||||
Most of the code can be found in the `/editor/` directory of the `matrix-react-sdk` project.
|
Most of the code can be found in the `/editor/` directory of the `matrix-react-sdk` project.
|
||||||
It is used to power the composer main composer (both to send and edit messages), and might be used for other usecases where autocomplete is desired (invite box, ...).
|
It is used to power the composer main composer (both to send and edit messages), and might be used for other usecases where autocomplete is desired (invite box, ...).
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ which takes several parameters:
|
||||||
be null.
|
be null.
|
||||||
|
|
||||||
The react-sdk will assume that `jitsi.html` is at the path of wherever it is currently
|
The react-sdk will assume that `jitsi.html` is at the path of wherever it is currently
|
||||||
being served. For example, `https://riot.im/develop/jitsi.html` or `vector://webapp/jitsi.html`.
|
being served. For example, `https://develop.element.io/jitsi.html` or `vector://webapp/jitsi.html`.
|
||||||
|
|
||||||
The `jitsi.html` wrapper can use the react-sdk's `WidgetApi` to communicate, making
|
The `jitsi.html` wrapper can use the react-sdk's `WidgetApi` to communicate, making
|
||||||
it easier to actually implement the feature.
|
it easier to actually implement the feature.
|
||||||
|
|
|
@ -55,7 +55,7 @@ timestamp contained within the event (generated server-side by the sender's serv
|
||||||
|
|
||||||
This is the easiest of the algorithms to understand because it does essentially nothing. It imposes no
|
This is the easiest of the algorithms to understand because it does essentially nothing. It imposes no
|
||||||
behavioural changes over the tag sorting algorithm and is by far the simplest way to order a room list.
|
behavioural changes over the tag sorting algorithm and is by far the simplest way to order a room list.
|
||||||
Historically, it's been the only option in Riot and extremely common in most chat applications due to
|
Historically, it's been the only option in Element and extremely common in most chat applications due to
|
||||||
its relative deterministic behaviour.
|
its relative deterministic behaviour.
|
||||||
|
|
||||||
### List ordering algorithm: Importance
|
### List ordering algorithm: Importance
|
||||||
|
|
|
@ -13,7 +13,7 @@ ScrollPanel supports a mode to prevent it shrinking. This is used to prevent a j
|
||||||
|
|
||||||
BACAT scrolling implements a different way of restoring the scroll position in the timeline while tiles out of view are changing height or tiles are being added or removed. It was added in https://github.com/matrix-org/matrix-react-sdk/pull/2842.
|
BACAT scrolling implements a different way of restoring the scroll position in the timeline while tiles out of view are changing height or tiles are being added or removed. It was added in https://github.com/matrix-org/matrix-react-sdk/pull/2842.
|
||||||
|
|
||||||
The motivation for the changes is having noticed that setting scrollTop while scrolling tends to not work well, with it interrupting ongoing scrolling and also querying scrollTop reporting outdated values and consecutive scroll adjustments cancelling each out previous ones. This seems to be worse on macOS than other platforms, presumably because of a higher resolution in scroll events there. Also see https://github.com/vector-im/riot-web/issues/528. The BACAT approach allows to only have to change the scroll offset when adding or removing tiles.
|
The motivation for the changes is having noticed that setting scrollTop while scrolling tends to not work well, with it interrupting ongoing scrolling and also querying scrollTop reporting outdated values and consecutive scroll adjustments cancelling each out previous ones. This seems to be worse on macOS than other platforms, presumably because of a higher resolution in scroll events there. Also see https://github.com/vector-im/element-web/issues/528. The BACAT approach allows to only have to change the scroll offset when adding or removing tiles.
|
||||||
|
|
||||||
The approach taken instead is to vertically align the timeline tiles to the bottom of the scroll container (using flexbox) and give the timeline inside the scroll container an explicit height, initially set to a multiple of the PAGE_SIZE (400px at time of writing) as needed by the content. When scrolled up, we can compensate for anything that grew below the viewport by changing the height of the timeline to maintain what's currently visible in the viewport without adjusting the scrollTop and hence without jumping.
|
The approach taken instead is to vertically align the timeline tiles to the bottom of the scroll container (using flexbox) and give the timeline inside the scroll container an explicit height, initially set to a multiple of the PAGE_SIZE (400px at time of writing) as needed by the content. When scrolled up, we can compensate for anything that grew below the viewport by changing the height of the timeline to maintain what's currently visible in the viewport without adjusting the scrollTop and hence without jumping.
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ letting the browser and user interact with the resulting data may be dangerous,
|
||||||
previously `usercontent.riot.im` was used to act as a sandbox on a different origin to close the attack surface,
|
previously `usercontent.riot.im` was used to act as a sandbox on a different origin to close the attack surface,
|
||||||
it is now possible to do by using a combination of a sandboxed iframe and some code written into the app which consumes this SDK.
|
it is now possible to do by using a combination of a sandboxed iframe and some code written into the app which consumes this SDK.
|
||||||
|
|
||||||
Usercontent is an iframe sandbox target for allowing a user to safely download a decrypted attachment from a sandboxed origin where it cannot be used to XSS your riot session out from under you.
|
Usercontent is an iframe sandbox target for allowing a user to safely download a decrypted attachment from a sandboxed origin where it cannot be used to XSS your Element session out from under you.
|
||||||
|
|
||||||
Its function is to create an Object URL for the user/browser to use but bound to an origin different to that of the riot instance to protect against XSS.
|
Its function is to create an Object URL for the user/browser to use but bound to an origin different to that of the Element instance to protect against XSS.
|
||||||
|
|
||||||
It exposes a function over a postMessage API, when sent an object with the matching fields to render a download link with the Object URL:
|
It exposes a function over a postMessage API, when sent an object with the matching fields to render a download link with the Object URL:
|
||||||
|
|
||||||
|
@ -24,4 +24,4 @@ It exposes a function over a postMessage API, when sent an object with the match
|
||||||
|
|
||||||
If only imgSrc, imgStyle and style are passed then just update the existing link without overwriting other things about it.
|
If only imgSrc, imgStyle and style are passed then just update the existing link without overwriting other things about it.
|
||||||
|
|
||||||
It is expected that this target be available at `usercontent/` relative to the root of the app, this can be seen in riot-web's webpack config.
|
It is expected that this target be available at `usercontent/` relative to the root of the app, this can be seen in element-web's webpack config.
|
||||||
|
|
|
@ -38,7 +38,7 @@ body {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
|
|
||||||
// needed to match the designs correctly on macOS
|
// needed to match the designs correctly on macOS
|
||||||
// see https://github.com/vector-im/riot-web/issues/11425
|
// see https://github.com/vector-im/element-web/issues/11425
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
@ -436,7 +436,7 @@ input[type=text]:focus, input[type=password]:focus, textarea:focus {
|
||||||
// TODO: Review mx_GeneralButton usage to see if it can use a different class
|
// TODO: Review mx_GeneralButton usage to see if it can use a different class
|
||||||
// These classes were brought in from the old UserSettings and are included here to avoid
|
// These classes were brought in from the old UserSettings and are included here to avoid
|
||||||
// breaking the app.
|
// breaking the app.
|
||||||
// Ref: https://github.com/vector-im/riot-web/issues/8420
|
// Ref: https://github.com/vector-im/element-web/issues/8420
|
||||||
.mx_GeneralButton {
|
.mx_GeneralButton {
|
||||||
@mixin mx_DialogButton;
|
@mixin mx_DialogButton;
|
||||||
display: inline;
|
display: inline;
|
||||||
|
|
|
@ -72,7 +72,7 @@ limitations under the License.
|
||||||
flex: 1 1 0;
|
flex: 1 1 0;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
|
||||||
/* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari
|
/* To fix https://github.com/vector-im/element-web/issues/3298 where Safari
|
||||||
needed height 100% all the way down to the HomePage. Height does not
|
needed height 100% all the way down to the HomePage. Height does not
|
||||||
have to be auto, empirically.
|
have to be auto, empirically.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,7 +22,7 @@ limitations under the License.
|
||||||
// different results during full reflow of the page vs. incremental reflow
|
// different results during full reflow of the page vs. incremental reflow
|
||||||
// of small portions. While that's surely a browser bug, we can avoid it by
|
// of small portions. While that's surely a browser bug, we can avoid it by
|
||||||
// using `inline-block` instead of the default `inline`.
|
// using `inline-block` instead of the default `inline`.
|
||||||
// https://github.com/vector-im/riot-web/issues/5594
|
// https://github.com/vector-im/element-web/issues/5594
|
||||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=1535053
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=1535053
|
||||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=255139
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=255139
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
|
@ -169,7 +169,7 @@ limitations under the License.
|
||||||
// that the sublists below them do not jump. However, that leaves a gap
|
// that the sublists below them do not jump. However, that leaves a gap
|
||||||
// when scrolled to the top above the first sublist (whose header can only
|
// when scrolled to the top above the first sublist (whose header can only
|
||||||
// ever stick to top), so we force height to 0 for only that first header.
|
// ever stick to top), so we force height to 0 for only that first header.
|
||||||
// See also https://github.com/vector-im/riot-web/issues/14429.
|
// See also https://github.com/vector-im/element-web/issues/14429.
|
||||||
&:first-child .mx_RoomSublist_headerContainer {
|
&:first-child .mx_RoomSublist_headerContainer {
|
||||||
height: 0;
|
height: 0;
|
||||||
padding-bottom: 4px;
|
padding-bottom: 4px;
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
// Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree
|
// Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree
|
||||||
// This value is overridden by external themes in `riot-web`.
|
// This value is overridden by external themes in `element-web`.
|
||||||
$res: ../../..;
|
$res: ../../..;
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
// Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree
|
// Path from root SCSS file (such as `light.scss`) to `res` dir in the source tree
|
||||||
// This value is overridden by external themes in `riot-web`.
|
// This value is overridden by external themes in `element-web`.
|
||||||
$res: ../../..;
|
$res: ../../..;
|
||||||
|
|
|
@ -13,7 +13,7 @@ handle_error() {
|
||||||
|
|
||||||
trap 'handle_error' ERR
|
trap 'handle_error' ERR
|
||||||
|
|
||||||
echo "--- Building Riot"
|
echo "--- Building Element"
|
||||||
scripts/ci/layered-riot-web.sh
|
scripts/ci/layered-riot-web.sh
|
||||||
cd ../riot-web
|
cd ../riot-web
|
||||||
riot_web_dir=`pwd`
|
riot_web_dir=`pwd`
|
||||||
|
|
|
@ -217,7 +217,7 @@ function getTranslationsOther(file) {
|
||||||
|
|
||||||
const trs = new Set();
|
const trs = new Set();
|
||||||
|
|
||||||
// Taken from riot-web src/components/structures/HomePage.js
|
// Taken from element-web src/components/structures/HomePage.js
|
||||||
const translationsRegex = /_t\(['"]([\s\S]*?)['"]\)/mg;
|
const translationsRegex = /_t\(['"]([\s\S]*?)['"]\)/mg;
|
||||||
let matches;
|
let matches;
|
||||||
while (matches = translationsRegex.exec(contents)) {
|
while (matches = translationsRegex.exec(contents)) {
|
||||||
|
|
|
@ -41,7 +41,7 @@ export default createReactClass({
|
||||||
componentDidMount: function() {
|
componentDidMount: function() {
|
||||||
this._unmounted = false;
|
this._unmounted = false;
|
||||||
// XXX: temporary logging to try to diagnose
|
// XXX: temporary logging to try to diagnose
|
||||||
// https://github.com/vector-im/riot-web/issues/3148
|
// https://github.com/vector-im/element-web/issues/3148
|
||||||
console.log('Starting load of AsyncWrapper for modal');
|
console.log('Starting load of AsyncWrapper for modal');
|
||||||
this.props.prom.then((result) => {
|
this.props.prom.then((result) => {
|
||||||
if (this._unmounted) {
|
if (this._unmounted) {
|
||||||
|
|
|
@ -90,7 +90,7 @@ function play(audioId) {
|
||||||
// This is usually because the user hasn't interacted with the document,
|
// This is usually because the user hasn't interacted with the document,
|
||||||
// or chrome doesn't think so and is denying the request. Not sure what
|
// or chrome doesn't think so and is denying the request. Not sure what
|
||||||
// we can really do here...
|
// we can really do here...
|
||||||
// https://github.com/vector-im/riot-web/issues/7657
|
// https://github.com/vector-im/element-web/issues/7657
|
||||||
console.log("Unable to play audio clip", e);
|
console.log("Unable to play audio clip", e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -474,15 +474,15 @@ const callHandler = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The conference handler is a module that deals with implementation-specific
|
* The conference handler is a module that deals with implementation-specific
|
||||||
* multi-party calling implementations. Riot passes in its own which creates
|
* multi-party calling implementations. Element passes in its own which creates
|
||||||
* a one-to-one call with a freeswitch conference bridge. As of July 2018,
|
* a one-to-one call with a freeswitch conference bridge. As of July 2018,
|
||||||
* the de-facto way of conference calling is a Jitsi widget, so this is
|
* the de-facto way of conference calling is a Jitsi widget, so this is
|
||||||
* deprecated. It reamins here for two reasons:
|
* deprecated. It reamins here for two reasons:
|
||||||
* 1. So Riot still supports joining existing freeswitch conference calls
|
* 1. So Element still supports joining existing freeswitch conference calls
|
||||||
* (but doesn't support creating them). After a transition period, we can
|
* (but doesn't support creating them). After a transition period, we can
|
||||||
* remove support for joining them too.
|
* remove support for joining them too.
|
||||||
* 2. To hide the one-to-one rooms that old-style conferencing creates. This
|
* 2. To hide the one-to-one rooms that old-style conferencing creates. This
|
||||||
* is much harder to remove: probably either we make Riot leave & forget these
|
* is much harder to remove: probably either we make Element leave & forget these
|
||||||
* rooms after we remove support for joining freeswitch conferences, or we
|
* rooms after we remove support for joining freeswitch conferences, or we
|
||||||
* accept that random rooms with cryptic users will suddently appear for
|
* accept that random rooms with cryptic users will suddently appear for
|
||||||
* anyone who's ever used conference calling, or we are stuck with this
|
* anyone who's ever used conference calling, or we are stuck with this
|
||||||
|
|
|
@ -177,7 +177,7 @@ export default class IdentityAuthClient {
|
||||||
// appropriately. We already clear storage on sign out, but we'll need
|
// appropriately. We already clear storage on sign out, but we'll need
|
||||||
// additional clearing when changing ISes in settings as part of future
|
// additional clearing when changing ISes in settings as part of future
|
||||||
// privacy work.
|
// privacy work.
|
||||||
// See also https://github.com/vector-im/riot-web/issues/10455.
|
// See also https://github.com/vector-im/element-web/issues/10455.
|
||||||
}
|
}
|
||||||
|
|
||||||
async registerForToken(check=true) {
|
async registerForToken(check=true) {
|
||||||
|
|
|
@ -99,7 +99,7 @@ export default class Markdown {
|
||||||
// puts softbreaks in for multiple lines in a blockquote,
|
// puts softbreaks in for multiple lines in a blockquote,
|
||||||
// so if these are just newline characters then the
|
// so if these are just newline characters then the
|
||||||
// block quote ends up all on one line
|
// block quote ends up all on one line
|
||||||
// (https://github.com/vector-im/riot-web/issues/3154)
|
// (https://github.com/vector-im/element-web/issues/3154)
|
||||||
softbreak: '<br />',
|
softbreak: '<br />',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ export default class Markdown {
|
||||||
* Render the markdown message to plain text. That is, essentially
|
* Render the markdown message to plain text. That is, essentially
|
||||||
* just remove any backslashes escaping what would otherwise be
|
* just remove any backslashes escaping what would otherwise be
|
||||||
* markdown syntax
|
* markdown syntax
|
||||||
* (to fix https://github.com/vector-im/riot-web/issues/2870).
|
* (to fix https://github.com/vector-im/element-web/issues/2870).
|
||||||
*
|
*
|
||||||
* N.B. this does **NOT** render arbitrary MD to plain text - only MD
|
* N.B. this does **NOT** render arbitrary MD to plain text - only MD
|
||||||
* which has no formatting. Otherwise it emits HTML(!).
|
* which has no formatting. Otherwise it emits HTML(!).
|
||||||
|
|
|
@ -319,7 +319,7 @@ export class ModalManager {
|
||||||
|
|
||||||
private reRender() {
|
private reRender() {
|
||||||
if (this.modals.length === 0 && !this.priorityModal && !this.staticModal) {
|
if (this.modals.length === 0 && !this.priorityModal && !this.staticModal) {
|
||||||
// If there is no modal to render, make all of Riot available
|
// If there is no modal to render, make all of Element available
|
||||||
// to screen reader users again
|
// to screen reader users again
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'aria_unhide_main_app',
|
action: 'aria_unhide_main_app',
|
||||||
|
|
|
@ -52,7 +52,7 @@ export async function startAnyRegistrationFlow(options) {
|
||||||
// caution though.
|
// caution though.
|
||||||
|
|
||||||
// XXX: ILAG is disabled for now,
|
// XXX: ILAG is disabled for now,
|
||||||
// see https://github.com/vector-im/riot-web/issues/8222
|
// see https://github.com/vector-im/element-web/issues/8222
|
||||||
|
|
||||||
// const flows = await _getRegistrationFlows();
|
// const flows = await _getRegistrationFlows();
|
||||||
// const hasIlagFlow = flows.some((flow) => {
|
// const hasIlagFlow = flows.some((flow) => {
|
||||||
|
|
|
@ -45,7 +45,7 @@ export default class Resend {
|
||||||
});
|
});
|
||||||
}, function(err) {
|
}, function(err) {
|
||||||
// XXX: temporary logging to try to diagnose
|
// XXX: temporary logging to try to diagnose
|
||||||
// https://github.com/vector-im/riot-web/issues/3148
|
// https://github.com/vector-im/element-web/issues/3148
|
||||||
console.log('Resend got send failure: ' + err.name + '(' + err + ')');
|
console.log('Resend got send failure: ' + err.name + '(' + err + ')');
|
||||||
|
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
|
|
|
@ -174,7 +174,7 @@ Request:
|
||||||
Response:
|
Response:
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
type: "im.vector.modular.widgets",
|
type: "im.vector.modular.widgets",
|
||||||
state_key: "wid1",
|
state_key: "wid1",
|
||||||
content: {
|
content: {
|
||||||
|
@ -193,7 +193,7 @@ Example:
|
||||||
room_id: "!foo:bar",
|
room_id: "!foo:bar",
|
||||||
response: [
|
response: [
|
||||||
{
|
{
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
type: "im.vector.modular.widgets",
|
type: "im.vector.modular.widgets",
|
||||||
state_key: "wid1",
|
state_key: "wid1",
|
||||||
content: {
|
content: {
|
||||||
|
|
|
@ -479,7 +479,7 @@ export const Commands = [
|
||||||
const parsedUrl = new URL(params[0]);
|
const parsedUrl = new URL(params[0]);
|
||||||
const hostname = parsedUrl.host || parsedUrl.hostname; // takes first non-falsey value
|
const hostname = parsedUrl.host || parsedUrl.hostname; // takes first non-falsey value
|
||||||
|
|
||||||
// if we're using a Riot permalink handler, this will catch it before we get much further.
|
// if we're using a Element permalink handler, this will catch it before we get much further.
|
||||||
// see below where we make assumptions about parsing the URL.
|
// see below where we make assumptions about parsing the URL.
|
||||||
if (isPermalinkHost(hostname)) {
|
if (isPermalinkHost(hostname)) {
|
||||||
isPermalink = true;
|
isPermalink = true;
|
||||||
|
|
|
@ -345,7 +345,7 @@ function textForCallHangupEvent(event) {
|
||||||
} else if (eventContent.reason === "invite_timeout") {
|
} else if (eventContent.reason === "invite_timeout") {
|
||||||
reason = _t('(no answer)');
|
reason = _t('(no answer)');
|
||||||
} else if (eventContent.reason === "user hangup") {
|
} else if (eventContent.reason === "user hangup") {
|
||||||
// workaround for https://github.com/vector-im/riot-web/issues/5178
|
// workaround for https://github.com/vector-im/element-web/issues/5178
|
||||||
// it seems Android randomly sets a reason of "user hangup" which is
|
// it seems Android randomly sets a reason of "user hangup" which is
|
||||||
// interpreted as an error code :(
|
// interpreted as an error code :(
|
||||||
// https://github.com/vector-im/riot-android/issues/2623
|
// https://github.com/vector-im/riot-android/issues/2623
|
||||||
|
@ -603,7 +603,7 @@ const stateHandlers = {
|
||||||
'm.room.guest_access': textForGuestAccessEvent,
|
'm.room.guest_access': textForGuestAccessEvent,
|
||||||
'm.room.related_groups': textForRelatedGroupsEvent,
|
'm.room.related_groups': textForRelatedGroupsEvent,
|
||||||
|
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
'im.vector.modular.widgets': textForWidgetEvent,
|
'im.vector.modular.widgets': textForWidgetEvent,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -327,7 +327,7 @@ class Tinter {
|
||||||
// Vector Green as its primary color?
|
// Vector Green as its primary color?
|
||||||
// --richvdh
|
// --richvdh
|
||||||
|
|
||||||
// Yes, tinting assumes that you are using the Riot skin for now.
|
// Yes, tinting assumes that you are using the Element skin for now.
|
||||||
// The right solution will be to move the CSS over to react-sdk.
|
// The right solution will be to move the CSS over to react-sdk.
|
||||||
// And yes, the default assets for the base skin might as well use
|
// And yes, the default assets for the base skin might as well use
|
||||||
// Vector Green as any other colour.
|
// Vector Green as any other colour.
|
||||||
|
|
|
@ -52,10 +52,10 @@ export function doesRoomHaveUnreadMessages(room) {
|
||||||
|
|
||||||
// as we don't send RRs for our own messages, make sure we special case that
|
// as we don't send RRs for our own messages, make sure we special case that
|
||||||
// if *we* sent the last message into the room, we consider it not unread!
|
// if *we* sent the last message into the room, we consider it not unread!
|
||||||
// Should fix: https://github.com/vector-im/riot-web/issues/3263
|
// Should fix: https://github.com/vector-im/element-web/issues/3263
|
||||||
// https://github.com/vector-im/riot-web/issues/2427
|
// https://github.com/vector-im/element-web/issues/2427
|
||||||
// ...and possibly some of the others at
|
// ...and possibly some of the others at
|
||||||
// https://github.com/vector-im/riot-web/issues/3363
|
// https://github.com/vector-im/element-web/issues/3363
|
||||||
if (room.timeline.length &&
|
if (room.timeline.length &&
|
||||||
room.timeline[room.timeline.length - 1].sender &&
|
room.timeline[room.timeline.length - 1].sender &&
|
||||||
room.timeline[room.timeline.length - 1].sender.userId === myUserId) {
|
room.timeline[room.timeline.length - 1].sender.userId === myUserId) {
|
||||||
|
|
|
@ -19,13 +19,13 @@ import {createNewMatrixCall as jsCreateNewMatrixCall, Room} from "matrix-js-sdk"
|
||||||
import CallHandler from './CallHandler';
|
import CallHandler from './CallHandler';
|
||||||
import {MatrixClientPeg} from "./MatrixClientPeg";
|
import {MatrixClientPeg} from "./MatrixClientPeg";
|
||||||
|
|
||||||
// FIXME: this is Riot (Vector) specific code, but will be removed shortly when
|
// FIXME: this is Element specific code, but will be removed shortly when we
|
||||||
// we switch over to jitsi entirely for video conferencing.
|
// switch over to Jitsi entirely for video conferencing.
|
||||||
|
|
||||||
// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing.
|
// FIXME: This currently forces Element to try to hit the matrix.org AS for
|
||||||
// This is bad because it prevents people running their own ASes from being used.
|
// conferencing. This is bad because it prevents people running their own ASes
|
||||||
// This isn't permanent and will be customisable in the future: see the proposal
|
// from being used. This isn't permanent and will be customisable in the future:
|
||||||
// at docs/conferencing.md for more info.
|
// see the proposal at docs/conferencing.md for more info.
|
||||||
const USER_PREFIX = "fs_";
|
const USER_PREFIX = "fs_";
|
||||||
const DOMAIN = "matrix.org";
|
const DOMAIN = "matrix.org";
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ export default class WidgetMessaging {
|
||||||
console.error(err._error);
|
console.error(err._error);
|
||||||
}
|
}
|
||||||
// Potential XSS attack if 'msg' is not appropriately sanitized,
|
// Potential XSS attack if 'msg' is not appropriately sanitized,
|
||||||
// as it is untrusted input by our parent window (which we assume is Riot).
|
// as it is untrusted input by our parent window (which we assume is Element).
|
||||||
// We can't aggressively sanitize [A-z0-9] since it might be a translation.
|
// We can't aggressively sanitize [A-z0-9] since it might be a translation.
|
||||||
throw new Error(msg);
|
throw new Error(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ export default createReactClass({
|
||||||
const blob = new Blob([f], {
|
const blob = new Blob([f], {
|
||||||
type: 'text/plain;charset=us-ascii',
|
type: 'text/plain;charset=us-ascii',
|
||||||
});
|
});
|
||||||
FileSaver.saveAs(blob, 'riot-keys.txt');
|
FileSaver.saveAs(blob, 'element-keys.txt');
|
||||||
this.props.onFinished(true);
|
this.props.onFinished(true);
|
||||||
}).catch((e) => {
|
}).catch((e) => {
|
||||||
console.error("Error exporting e2e keys:", e);
|
console.error("Error exporting e2e keys:", e);
|
||||||
|
|
|
@ -286,7 +286,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
|
||||||
changeText = _t("Use a different passphrase?");
|
changeText = _t("Use a different passphrase?");
|
||||||
} else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) {
|
} else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) {
|
||||||
// only tell them they're wrong if they've actually gone wrong.
|
// only tell them they're wrong if they've actually gone wrong.
|
||||||
// Security concious readers will note that if you left riot-web unattended
|
// Security concious readers will note that if you left element-web unattended
|
||||||
// on this screen, this would make it easy for a malicious person to guess
|
// on this screen, this would make it easy for a malicious person to guess
|
||||||
// your passphrase one letter at a time, but they could get this faster by
|
// your passphrase one letter at a time, but they could get this faster by
|
||||||
// just opening the browser's developer tools and reading it.
|
// just opening the browser's developer tools and reading it.
|
||||||
|
|
|
@ -480,7 +480,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
// click the button are aware they're making a change to their account.
|
// click the button are aware they're making a change to their account.
|
||||||
// Once we're confident enough in this (and it's supported enough) we can do
|
// Once we're confident enough in this (and it's supported enough) we can do
|
||||||
// it automatically.
|
// it automatically.
|
||||||
// https://github.com/vector-im/riot-web/issues/11696
|
// https://github.com/vector-im/element-web/issues/11696
|
||||||
const Field = sdk.getComponent('views.elements.Field');
|
const Field = sdk.getComponent('views.elements.Field');
|
||||||
|
|
||||||
let authPrompt;
|
let authPrompt;
|
||||||
|
@ -575,7 +575,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
|
||||||
changeText = _t("Use a different passphrase?");
|
changeText = _t("Use a different passphrase?");
|
||||||
} else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) {
|
} else if (!this.state.passPhrase.startsWith(this.state.passPhraseConfirm)) {
|
||||||
// only tell them they're wrong if they've actually gone wrong.
|
// only tell them they're wrong if they've actually gone wrong.
|
||||||
// Security concious readers will note that if you left riot-web unattended
|
// Security concious readers will note that if you left element-web unattended
|
||||||
// on this screen, this would make it easy for a malicious person to guess
|
// on this screen, this would make it easy for a malicious person to guess
|
||||||
// your passphrase one letter at a time, but they could get this faster by
|
// your passphrase one letter at a time, but they could get this faster by
|
||||||
// just opening the browser's developer tools and reading it.
|
// just opening the browser's developer tools and reading it.
|
||||||
|
|
|
@ -53,7 +53,7 @@ export default class CommunityProvider extends AutocompleteProvider {
|
||||||
const BaseAvatar = sdk.getComponent('views.avatars.BaseAvatar');
|
const BaseAvatar = sdk.getComponent('views.avatars.BaseAvatar');
|
||||||
|
|
||||||
// Disable autocompletions when composing commands because of various issues
|
// Disable autocompletions when composing commands because of various issues
|
||||||
// (see https://github.com/vector-im/riot-web/issues/4762)
|
// (see https://github.com/vector-im/element-web/issues/4762)
|
||||||
if (/^(\/join|\/leave)/.test(query)) {
|
if (/^(\/join|\/leave)/.test(query)) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,8 +46,8 @@ const HomePage = () => {
|
||||||
const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
|
const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
|
||||||
return <AutoHideScrollbar className="mx_HomePage mx_HomePage_default">
|
return <AutoHideScrollbar className="mx_HomePage mx_HomePage_default">
|
||||||
<div className="mx_HomePage_default_wrapper">
|
<div className="mx_HomePage_default_wrapper">
|
||||||
<img src={logoUrl} alt={config.brand || "Riot"} />
|
<img src={logoUrl} alt={config.brand || "Element"} />
|
||||||
<h1>{ _t("Welcome to %(appName)s", { appName: config.brand || "Riot" }) }</h1>
|
<h1>{ _t("Welcome to %(appName)s", { appName: config.brand || "Element" }) }</h1>
|
||||||
<h4>{ _t("Liberate your communication") }</h4>
|
<h4>{ _t("Liberate your communication") }</h4>
|
||||||
<div className="mx_HomePage_default_buttons">
|
<div className="mx_HomePage_default_buttons">
|
||||||
<AccessibleButton onClick={onClickSendDm} className="mx_HomePage_button_sendDm">
|
<AccessibleButton onClick={onClickSendDm} className="mx_HomePage_button_sendDm">
|
||||||
|
|
|
@ -158,7 +158,7 @@ export default class IndicatorScrollbar extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't mess with the horizontal scroll for trackpad users
|
// don't mess with the horizontal scroll for trackpad users
|
||||||
// See https://github.com/vector-im/riot-web/issues/10005
|
// See https://github.com/vector-im/element-web/issues/10005
|
||||||
if (this._likelyTrackpadUser) {
|
if (this._likelyTrackpadUser) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,7 +203,7 @@ export default createReactClass({
|
||||||
// the UI layer, so we ignore this signal and show a spinner until
|
// the UI layer, so we ignore this signal and show a spinner until
|
||||||
// there's a new screen to show the user. This is implemented by setting
|
// there's a new screen to show the user. This is implemented by setting
|
||||||
// `busy: false` in `_authStateUpdated`.
|
// `busy: false` in `_authStateUpdated`.
|
||||||
// See also https://github.com/vector-im/riot-web/issues/12546
|
// See also https://github.com/vector-im/element-web/issues/12546
|
||||||
},
|
},
|
||||||
|
|
||||||
_setFocus: function() {
|
_setFocus: function() {
|
||||||
|
|
|
@ -596,7 +596,7 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||||
const maxRadius = 5; // People shouldn't be straying too far, hopefully
|
const maxRadius = 5; // People shouldn't be straying too far, hopefully
|
||||||
|
|
||||||
// Note: we track how far the user moved their mouse to help
|
// Note: we track how far the user moved their mouse to help
|
||||||
// combat against https://github.com/vector-im/riot-web/issues/7158
|
// combat against https://github.com/vector-im/element-web/issues/7158
|
||||||
|
|
||||||
if (distance < maxRadius) {
|
if (distance < maxRadius) {
|
||||||
// This is probably a real click, and not a drag
|
// This is probably a real click, and not a drag
|
||||||
|
|
|
@ -415,7 +415,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.pageChanging = true;
|
this.pageChanging = true;
|
||||||
performance.mark('riot_MatrixChat_page_change_start');
|
performance.mark('element_MatrixChat_page_change_start');
|
||||||
}
|
}
|
||||||
|
|
||||||
stopPageChangeTimer() {
|
stopPageChangeTimer() {
|
||||||
|
@ -427,15 +427,15 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.pageChanging = false;
|
this.pageChanging = false;
|
||||||
performance.mark('riot_MatrixChat_page_change_stop');
|
performance.mark('element_MatrixChat_page_change_stop');
|
||||||
performance.measure(
|
performance.measure(
|
||||||
'riot_MatrixChat_page_change_delta',
|
'element_MatrixChat_page_change_delta',
|
||||||
'riot_MatrixChat_page_change_start',
|
'element_MatrixChat_page_change_start',
|
||||||
'riot_MatrixChat_page_change_stop',
|
'element_MatrixChat_page_change_stop',
|
||||||
);
|
);
|
||||||
performance.clearMarks('riot_MatrixChat_page_change_start');
|
performance.clearMarks('element_MatrixChat_page_change_start');
|
||||||
performance.clearMarks('riot_MatrixChat_page_change_stop');
|
performance.clearMarks('element_MatrixChat_page_change_stop');
|
||||||
const measurement = performance.getEntriesByName('riot_MatrixChat_page_change_delta').pop();
|
const measurement = performance.getEntriesByName('element_MatrixChat_page_change_delta').pop();
|
||||||
|
|
||||||
// In practice, sometimes the entries list is empty, so we get no measurement
|
// In practice, sometimes the entries list is empty, so we get no measurement
|
||||||
if (!measurement) return null;
|
if (!measurement) return null;
|
||||||
|
@ -1323,7 +1323,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
// state (each of which can be 10s of MBs) for each DISJOINT timeline. This is
|
// state (each of which can be 10s of MBs) for each DISJOINT timeline. This is
|
||||||
// particularly noticeable when there are lots of 'limited' /sync responses
|
// particularly noticeable when there are lots of 'limited' /sync responses
|
||||||
// such as when laptops unsleep.
|
// such as when laptops unsleep.
|
||||||
// https://github.com/vector-im/riot-web/issues/3307#issuecomment-282895568
|
// https://github.com/vector-im/element-web/issues/3307#issuecomment-282895568
|
||||||
cli.setCanResetTimelineCallback((roomId) => {
|
cli.setCanResetTimelineCallback((roomId) => {
|
||||||
console.log("Request to reset timeline in room ", roomId, " viewing:", this.state.currentRoomId);
|
console.log("Request to reset timeline in room ", roomId, " viewing:", this.state.currentRoomId);
|
||||||
if (roomId !== this.state.currentRoomId) {
|
if (roomId !== this.state.currentRoomId) {
|
||||||
|
@ -1661,7 +1661,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
// of the app, we coerce the eventId to be undefined where applicable.
|
// of the app, we coerce the eventId to be undefined where applicable.
|
||||||
if (!eventId) eventId = undefined;
|
if (!eventId) eventId = undefined;
|
||||||
|
|
||||||
// TODO: Handle encoded room/event IDs: https://github.com/vector-im/riot-web/issues/9149
|
// TODO: Handle encoded room/event IDs: https://github.com/vector-im/element-web/issues/9149
|
||||||
|
|
||||||
// FIXME: sort_out caseConsistency
|
// FIXME: sort_out caseConsistency
|
||||||
const thirdPartyInvite = {
|
const thirdPartyInvite = {
|
||||||
|
@ -1935,7 +1935,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
|
||||||
let fragmentAfterLogin = "";
|
let fragmentAfterLogin = "";
|
||||||
const initialScreenAfterLogin = this.props.initialScreenAfterLogin;
|
const initialScreenAfterLogin = this.props.initialScreenAfterLogin;
|
||||||
if (initialScreenAfterLogin &&
|
if (initialScreenAfterLogin &&
|
||||||
// XXX: workaround for https://github.com/vector-im/riot-web/issues/11643 causing a login-loop
|
// XXX: workaround for https://github.com/vector-im/element-web/issues/11643 causing a login-loop
|
||||||
!["welcome", "login", "register", "start_sso", "start_cas"].includes(initialScreenAfterLogin.screen)
|
!["welcome", "login", "register", "start_sso", "start_cas"].includes(initialScreenAfterLogin.screen)
|
||||||
) {
|
) {
|
||||||
fragmentAfterLogin = `/${initialScreenAfterLogin.screen}`;
|
fragmentAfterLogin = `/${initialScreenAfterLogin.screen}`;
|
||||||
|
|
|
@ -251,7 +251,7 @@ export default createReactClass({
|
||||||
this.context.stopPeeking();
|
this.context.stopPeeking();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307
|
// Temporary logging to diagnose https://github.com/vector-im/element-web/issues/4307
|
||||||
console.log(
|
console.log(
|
||||||
'RVS update:',
|
'RVS update:',
|
||||||
newState.roomId,
|
newState.roomId,
|
||||||
|
@ -1078,7 +1078,7 @@ export default createReactClass({
|
||||||
// Do this by indicating our intention to join
|
// Do this by indicating our intention to join
|
||||||
|
|
||||||
// XXX: ILAG is disabled for now,
|
// XXX: ILAG is disabled for now,
|
||||||
// see https://github.com/vector-im/riot-web/issues/8222
|
// see https://github.com/vector-im/element-web/issues/8222
|
||||||
dis.dispatch({action: 'require_registration'});
|
dis.dispatch({action: 'require_registration'});
|
||||||
// dis.dispatch({
|
// dis.dispatch({
|
||||||
// action: 'will_join',
|
// action: 'will_join',
|
||||||
|
|
|
@ -141,7 +141,7 @@ const TagPanel = createReactClass({
|
||||||
<AutoHideScrollbar
|
<AutoHideScrollbar
|
||||||
className="mx_TagPanel_scroller"
|
className="mx_TagPanel_scroller"
|
||||||
// XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273
|
// XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273
|
||||||
// instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6253
|
// instead of onClick. Otherwise we experience https://github.com/vector-im/element-web/issues/6253
|
||||||
onMouseDown={this.onMouseDown}
|
onMouseDown={this.onMouseDown}
|
||||||
>
|
>
|
||||||
<Droppable
|
<Droppable
|
||||||
|
|
|
@ -1186,7 +1186,7 @@ const TimelinePanel = createReactClass({
|
||||||
if (!timeline) {
|
if (!timeline) {
|
||||||
// Somehow, it seems to be possible for live events to not have
|
// Somehow, it seems to be possible for live events to not have
|
||||||
// a timeline, even though that should not happen. :(
|
// a timeline, even though that should not happen. :(
|
||||||
// https://github.com/vector-im/riot-web/issues/12120
|
// https://github.com/vector-im/element-web/issues/12120
|
||||||
console.warn(
|
console.warn(
|
||||||
`Event ${events[i].getId()} in room ${room.roomId} is live, ` +
|
`Event ${events[i].getId()} in room ${room.roomId} is live, ` +
|
||||||
`but it does not have a timeline`,
|
`but it does not have a timeline`,
|
||||||
|
|
|
@ -170,7 +170,7 @@ export default class UserMenu extends React.Component<IProps, IState> {
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
ev.stopPropagation();
|
ev.stopPropagation();
|
||||||
|
|
||||||
// TODO: Archived room view: https://github.com/vector-im/riot-web/issues/14038
|
// TODO: Archived room view: https://github.com/vector-im/element-web/issues/14038
|
||||||
// Note: You'll need to uncomment the button too.
|
// Note: You'll need to uncomment the button too.
|
||||||
console.log("TODO: Show archived rooms");
|
console.log("TODO: Show archived rooms");
|
||||||
};
|
};
|
||||||
|
|
|
@ -285,7 +285,7 @@ export default createReactClass({
|
||||||
// We'd like to rely on new props coming in via `onServerConfigChange`
|
// We'd like to rely on new props coming in via `onServerConfigChange`
|
||||||
// so that we know the servers have definitely updated before clearing
|
// so that we know the servers have definitely updated before clearing
|
||||||
// the busy state. In the case of a full MXID that resolves to the same
|
// the busy state. In the case of a full MXID that resolves to the same
|
||||||
// HS as Riot's default HS though, there may not be any server change.
|
// HS as Element's default HS though, there may not be any server change.
|
||||||
// To avoid this trap, we clear busy here. For cases where the server
|
// To avoid this trap, we clear busy here. For cases where the server
|
||||||
// actually has changed, `_initLoginLogic` will be called and manages
|
// actually has changed, `_initLoginLogic` will be called and manages
|
||||||
// busy state for its own liveness check.
|
// busy state for its own liveness check.
|
||||||
|
@ -615,8 +615,8 @@ export default createReactClass({
|
||||||
}
|
}
|
||||||
// XXX: This link does *not* have a target="_blank" because single sign-on relies on
|
// XXX: This link does *not* have a target="_blank" because single sign-on relies on
|
||||||
// redirecting the user back to a URI once they're logged in. On the web, this means
|
// redirecting the user back to a URI once they're logged in. On the web, this means
|
||||||
// we use the same window and redirect back to riot. On electron, this actually
|
// we use the same window and redirect back to Element. On Electron, this actually
|
||||||
// opens the SSO page in the electron app itself due to
|
// opens the SSO page in the Electron app itself due to
|
||||||
// https://github.com/electron/electron/issues/8841 and so happens to work.
|
// https://github.com/electron/electron/issues/8841 and so happens to work.
|
||||||
// If this bug gets fixed, it will break SSO since it will open the SSO page in the
|
// If this bug gets fixed, it will break SSO since it will open the SSO page in the
|
||||||
// user's browser, let them log into their SSO provider, then redirect their browser
|
// user's browser, let them log into their SSO provider, then redirect their browser
|
||||||
|
|
|
@ -262,7 +262,7 @@ export default createReactClass({
|
||||||
// the user off to the login page to figure their account out.
|
// the user off to the login page to figure their account out.
|
||||||
try {
|
try {
|
||||||
const loginLogic = new Login(hsUrl, isUrl, null, {
|
const loginLogic = new Login(hsUrl, isUrl, null, {
|
||||||
defaultDeviceDisplayName: "riot login check", // We shouldn't ever be used
|
defaultDeviceDisplayName: "Element login check", // We shouldn't ever be used
|
||||||
});
|
});
|
||||||
const flows = await loginLogic.getFlows();
|
const flows = await loginLogic.getFlows();
|
||||||
const hasSsoFlow = flows.find(f => f.type === 'm.login.sso' || f.type === 'm.login.cas');
|
const hasSsoFlow = flows.find(f => f.type === 'm.login.sso' || f.type === 'm.login.cas');
|
||||||
|
|
|
@ -152,7 +152,7 @@ export default class SetupEncryptionBody extends React.Component {
|
||||||
</div>
|
</div>
|
||||||
<div className="mx_CompleteSecurity_clients_mobile">
|
<div className="mx_CompleteSecurity_clients_mobile">
|
||||||
<div>{_t("%(brand)s iOS", { brand })}</div>
|
<div>{_t("%(brand)s iOS", { brand })}</div>
|
||||||
<div>{_t("%(brand)s X for Android", { brand })}</div>
|
<div>{_t("%(brand)s Android", { brand })}</div>
|
||||||
</div>
|
</div>
|
||||||
<p>{_t("or another cross-signing capable Matrix client")}</p>
|
<p>{_t("or another cross-signing capable Matrix client")}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -109,7 +109,7 @@ export const PasswordAuthEntry = createReactClass({
|
||||||
this.props.submitAuthDict({
|
this.props.submitAuthDict({
|
||||||
type: PasswordAuthEntry.LOGIN_TYPE,
|
type: PasswordAuthEntry.LOGIN_TYPE,
|
||||||
// TODO: Remove `user` once servers support proper UIA
|
// TODO: Remove `user` once servers support proper UIA
|
||||||
// See https://github.com/vector-im/riot-web/issues/10312
|
// See https://github.com/vector-im/element-web/issues/10312
|
||||||
user: this.props.matrixClient.credentials.userId,
|
user: this.props.matrixClient.credentials.userId,
|
||||||
identifier: {
|
identifier: {
|
||||||
type: "m.id.user",
|
type: "m.id.user",
|
||||||
|
@ -538,7 +538,7 @@ export const MsisdnAuthEntry = createReactClass({
|
||||||
this.props.submitAuthDict({
|
this.props.submitAuthDict({
|
||||||
type: MsisdnAuthEntry.LOGIN_TYPE,
|
type: MsisdnAuthEntry.LOGIN_TYPE,
|
||||||
// TODO: Remove `threepid_creds` once servers support proper UIA
|
// TODO: Remove `threepid_creds` once servers support proper UIA
|
||||||
// See https://github.com/vector-im/riot-web/issues/10312
|
// See https://github.com/vector-im/element-web/issues/10312
|
||||||
// See https://github.com/matrix-org/matrix-doc/issues/2220
|
// See https://github.com/matrix-org/matrix-doc/issues/2220
|
||||||
threepid_creds: creds,
|
threepid_creds: creds,
|
||||||
threepidCreds: creds,
|
threepidCreds: creds,
|
||||||
|
|
|
@ -166,7 +166,7 @@ export default class BugReportDialog extends React.Component {
|
||||||
{
|
{
|
||||||
a: (sub) => <a
|
a: (sub) => <a
|
||||||
target="_blank"
|
target="_blank"
|
||||||
href="https://github.com/vector-im/riot-web/issues/new"
|
href="https://github.com/vector-im/element-web/issues/new"
|
||||||
>
|
>
|
||||||
{ sub }
|
{ sub }
|
||||||
</a>,
|
</a>,
|
||||||
|
@ -179,7 +179,7 @@ export default class BugReportDialog extends React.Component {
|
||||||
label={_t("GitHub issue")}
|
label={_t("GitHub issue")}
|
||||||
onChange={this._onIssueUrlChange}
|
onChange={this._onIssueUrlChange}
|
||||||
value={this.state.issueUrl}
|
value={this.state.issueUrl}
|
||||||
placeholder="https://github.com/vector-im/riot-web/issues/..."
|
placeholder="https://github.com/vector-im/element-web/issues/..."
|
||||||
/>
|
/>
|
||||||
<Field
|
<Field
|
||||||
className="mx_BugReportDialog_field_input"
|
className="mx_BugReportDialog_field_input"
|
||||||
|
|
|
@ -21,7 +21,7 @@ import * as sdk from '../../../index';
|
||||||
import request from 'browser-request';
|
import request from 'browser-request';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
|
|
||||||
const REPOS = ['vector-im/riot-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];
|
const REPOS = ['vector-im/element-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];
|
||||||
|
|
||||||
export default class ChangelogDialog extends React.Component {
|
export default class ChangelogDialog extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
|
|
@ -19,9 +19,9 @@ import QuestionDialog from './QuestionDialog';
|
||||||
import { _t } from '../../../languageHandler';
|
import { _t } from '../../../languageHandler';
|
||||||
|
|
||||||
export default (props) => {
|
export default (props) => {
|
||||||
const existingIssuesUrl = "https://github.com/vector-im/riot-web/issues" +
|
const existingIssuesUrl = "https://github.com/vector-im/element-web/issues" +
|
||||||
"?q=is%3Aopen+is%3Aissue+sort%3Areactions-%2B1-desc";
|
"?q=is%3Aopen+is%3Aissue+sort%3Areactions-%2B1-desc";
|
||||||
const newIssueUrl = "https://github.com/vector-im/riot-web/issues/new";
|
const newIssueUrl = "https://github.com/vector-im/element-web/issues/new";
|
||||||
|
|
||||||
const description1 =
|
const description1 =
|
||||||
_t("If you run into any bugs or have feedback you'd like to share, " +
|
_t("If you run into any bugs or have feedback you'd like to share, " +
|
||||||
|
|
|
@ -361,14 +361,14 @@ export default class AppTile extends React.Component {
|
||||||
return terminationPromise.finally(() => {
|
return terminationPromise.finally(() => {
|
||||||
// HACK: This is a really dirty way to ensure that Jitsi cleans up
|
// HACK: This is a really dirty way to ensure that Jitsi cleans up
|
||||||
// its hold on the webcam. Without this, the widget holds a media
|
// its hold on the webcam. Without this, the widget holds a media
|
||||||
// stream open, even after death. See https://github.com/vector-im/riot-web/issues/7351
|
// stream open, even after death. See https://github.com/vector-im/element-web/issues/7351
|
||||||
if (this._appFrame.current) {
|
if (this._appFrame.current) {
|
||||||
// In practice we could just do `+= ''` to trick the browser
|
// In practice we could just do `+= ''` to trick the browser
|
||||||
// into thinking the URL changed, however I can foresee this
|
// into thinking the URL changed, however I can foresee this
|
||||||
// being optimized out by a browser. Instead, we'll just point
|
// being optimized out by a browser. Instead, we'll just point
|
||||||
// the iframe at a page that is reasonably safe to use in the
|
// the iframe at a page that is reasonably safe to use in the
|
||||||
// event the iframe doesn't wink away.
|
// event the iframe doesn't wink away.
|
||||||
// This is relative to where the Riot instance is located.
|
// This is relative to where the Element instance is located.
|
||||||
this._appFrame.current.src = 'about:blank';
|
this._appFrame.current.src = 'about:blank';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -727,7 +727,7 @@ export default class AppTile extends React.Component {
|
||||||
|
|
||||||
// Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin
|
// Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin
|
||||||
// because that would allow the iframe to programmatically remove the sandbox attribute, but
|
// because that would allow the iframe to programmatically remove the sandbox attribute, but
|
||||||
// this would only be for content hosted on the same origin as the riot client: anything
|
// this would only be for content hosted on the same origin as the element client: anything
|
||||||
// hosted on the same origin as the client will get the same access as if you clicked
|
// hosted on the same origin as the client will get the same access as if you clicked
|
||||||
// a link to it.
|
// a link to it.
|
||||||
const sandboxFlags = "allow-forms allow-popups allow-popups-to-escape-sandbox "+
|
const sandboxFlags = "allow-forms allow-popups allow-popups-to-escape-sandbox "+
|
||||||
|
@ -924,7 +924,7 @@ AppTile.propTypes = {
|
||||||
// Optionally show the reload widget icon
|
// Optionally show the reload widget icon
|
||||||
// This is not currently intended for use with production widgets. However
|
// This is not currently intended for use with production widgets. However
|
||||||
// it can be useful when developing persistent widgets in order to avoid
|
// it can be useful when developing persistent widgets in order to avoid
|
||||||
// having to reload all of riot to get new widget content.
|
// having to reload all of Element to get new widget content.
|
||||||
showReload: PropTypes.bool,
|
showReload: PropTypes.bool,
|
||||||
// Widget capabilities to allow by default (without user confirmation)
|
// Widget capabilities to allow by default (without user confirmation)
|
||||||
// NOTE -- Use with caution. This is intended to aid better integration / UX
|
// NOTE -- Use with caution. This is intended to aid better integration / UX
|
||||||
|
|
|
@ -72,7 +72,7 @@ export default class ErrorBoundary extends React.PureComponent {
|
||||||
render() {
|
render() {
|
||||||
if (this.state.error) {
|
if (this.state.error) {
|
||||||
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
const AccessibleButton = sdk.getComponent('elements.AccessibleButton');
|
||||||
const newIssueUrl = "https://github.com/vector-im/riot-web/issues/new";
|
const newIssueUrl = "https://github.com/vector-im/element-web/issues/new";
|
||||||
return <div className="mx_ErrorBoundary">
|
return <div className="mx_ErrorBoundary">
|
||||||
<div className="mx_ErrorBoundary_body">
|
<div className="mx_ErrorBoundary_body">
|
||||||
<h1>{_t("Something went wrong!")}</h1>
|
<h1>{_t("Something went wrong!")}</h1>
|
||||||
|
|
|
@ -126,7 +126,7 @@ const GroupTile = createReactClass({
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273
|
// XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273
|
||||||
// instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6156
|
// instead of onClick. Otherwise we experience https://github.com/vector-im/element-web/issues/6156
|
||||||
return <AccessibleButton className="mx_GroupTile" onMouseDown={this.onMouseDown} onClick={nop}>
|
return <AccessibleButton className="mx_GroupTile" onMouseDown={this.onMouseDown} onClick={nop}>
|
||||||
{ avatarElement }
|
{ avatarElement }
|
||||||
<div className="mx_GroupTile_profile">
|
<div className="mx_GroupTile_profile">
|
||||||
|
|
|
@ -208,7 +208,7 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
|
||||||
});
|
});
|
||||||
let body: JSX.Element;
|
let body: JSX.Element;
|
||||||
if (this.state.reciprocateQREvent) {
|
if (this.state.reciprocateQREvent) {
|
||||||
// riot web doesn't support scanning yet, so assume here we're the client being scanned.
|
// Element Web doesn't support scanning yet, so assume here we're the client being scanned.
|
||||||
//
|
//
|
||||||
// we're passing both a label and a child string to Button as
|
// we're passing both a label and a child string to Button as
|
||||||
// FormButton and AccessibleButton expect this differently
|
// FormButton and AccessibleButton expect this differently
|
||||||
|
|
|
@ -233,7 +233,7 @@ export default class AliasSettings extends React.Component {
|
||||||
onLocalAliasDeleted = (index) => {
|
onLocalAliasDeleted = (index) => {
|
||||||
const alias = this.state.localAliases[index];
|
const alias = this.state.localAliases[index];
|
||||||
// TODO: In future, we should probably be making sure that the alias actually belongs
|
// TODO: In future, we should probably be making sure that the alias actually belongs
|
||||||
// to this room. See https://github.com/vector-im/riot-web/issues/7353
|
// to this room. See https://github.com/vector-im/element-web/issues/7353
|
||||||
MatrixClientPeg.get().deleteAlias(alias).then(() => {
|
MatrixClientPeg.get().deleteAlias(alias).then(() => {
|
||||||
const localAliases = this.state.localAliases.filter(a => a !== alias);
|
const localAliases = this.state.localAliases.filter(a => a !== alias);
|
||||||
this.setState({localAliases});
|
this.setState({localAliases});
|
||||||
|
|
|
@ -39,7 +39,7 @@ const ROOM_COLORS = [
|
||||||
|
|
||||||
// Dev note: this component is not attached anywhere, but is left here as it
|
// Dev note: this component is not attached anywhere, but is left here as it
|
||||||
// has a high possibility of being used in the nearish future.
|
// has a high possibility of being used in the nearish future.
|
||||||
// Ref: https://github.com/vector-im/riot-web/issues/8421
|
// Ref: https://github.com/vector-im/element-web/issues/8421
|
||||||
|
|
||||||
export default createReactClass({
|
export default createReactClass({
|
||||||
displayName: 'ColorSettings',
|
displayName: 'ColorSettings',
|
||||||
|
|
|
@ -242,7 +242,7 @@ export default class BasicMessageEditor extends React.Component<IProps, IState>
|
||||||
// so trigger a model update after the composition is done by calling the input handler.
|
// so trigger a model update after the composition is done by calling the input handler.
|
||||||
|
|
||||||
// however, modifying the DOM (caused by the editor model update) from the compositionend handler seems
|
// however, modifying the DOM (caused by the editor model update) from the compositionend handler seems
|
||||||
// to confuse the IME in Chrome, likely causing https://github.com/vector-im/riot-web/issues/10913 ,
|
// to confuse the IME in Chrome, likely causing https://github.com/vector-im/element-web/issues/10913 ,
|
||||||
// so we do it async
|
// so we do it async
|
||||||
|
|
||||||
// however, doing this async seems to break things in Safari for some reason, so browser sniff.
|
// however, doing this async seems to break things in Safari for some reason, so browser sniff.
|
||||||
|
@ -273,7 +273,7 @@ export default class BasicMessageEditor extends React.Component<IProps, IState>
|
||||||
const {model} = this.props;
|
const {model} = this.props;
|
||||||
const range = getRangeForSelection(this.editorRef.current, model, selection);
|
const range = getRangeForSelection(this.editorRef.current, model, selection);
|
||||||
const selectedParts = range.parts.map(p => p.serialize());
|
const selectedParts = range.parts.map(p => p.serialize());
|
||||||
event.clipboardData.setData("application/x-riot-composer", JSON.stringify(selectedParts));
|
event.clipboardData.setData("application/x-element-composer", JSON.stringify(selectedParts));
|
||||||
event.clipboardData.setData("text/plain", text); // so plain copy/paste works
|
event.clipboardData.setData("text/plain", text); // so plain copy/paste works
|
||||||
if (type === "cut") {
|
if (type === "cut") {
|
||||||
// Remove the text, updating the model as appropriate
|
// Remove the text, updating the model as appropriate
|
||||||
|
@ -301,7 +301,7 @@ export default class BasicMessageEditor extends React.Component<IProps, IState>
|
||||||
|
|
||||||
const {model} = this.props;
|
const {model} = this.props;
|
||||||
const {partCreator} = model;
|
const {partCreator} = model;
|
||||||
const partsText = event.clipboardData.getData("application/x-riot-composer");
|
const partsText = event.clipboardData.getData("application/x-element-composer");
|
||||||
let parts;
|
let parts;
|
||||||
if (partsText) {
|
if (partsText) {
|
||||||
const serializedTextParts = JSON.parse(partsText);
|
const serializedTextParts = JSON.parse(partsText);
|
||||||
|
|
|
@ -60,7 +60,7 @@ const stateEventTileTypes = {
|
||||||
'm.room.power_levels': 'messages.TextualEvent',
|
'm.room.power_levels': 'messages.TextualEvent',
|
||||||
'm.room.pinned_events': 'messages.TextualEvent',
|
'm.room.pinned_events': 'messages.TextualEvent',
|
||||||
'm.room.server_acl': 'messages.TextualEvent',
|
'm.room.server_acl': 'messages.TextualEvent',
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
'im.vector.modular.widgets': 'messages.TextualEvent',
|
'im.vector.modular.widgets': 'messages.TextualEvent',
|
||||||
'm.room.tombstone': 'messages.TextualEvent',
|
'm.room.tombstone': 'messages.TextualEvent',
|
||||||
'm.room.join_rules': 'messages.TextualEvent',
|
'm.room.join_rules': 'messages.TextualEvent',
|
||||||
|
@ -519,7 +519,7 @@ export default createReactClass({
|
||||||
|
|
||||||
onPermalinkClicked: function(e) {
|
onPermalinkClicked: function(e) {
|
||||||
// This allows the permalink to be opened in a new tab/window or copied as
|
// This allows the permalink to be opened in a new tab/window or copied as
|
||||||
// matrix.to, but also for it to enable routing within Riot when clicked.
|
// matrix.to, but also for it to enable routing within Element when clicked.
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'view_room',
|
action: 'view_room',
|
||||||
|
@ -595,11 +595,11 @@ export default createReactClass({
|
||||||
}
|
}
|
||||||
const eventId = this.props.mxEvent.getId();
|
const eventId = this.props.mxEvent.getId();
|
||||||
if (!eventId) {
|
if (!eventId) {
|
||||||
// XXX: Temporary diagnostic logging for https://github.com/vector-im/riot-web/issues/11120
|
// XXX: Temporary diagnostic logging for https://github.com/vector-im/element-web/issues/11120
|
||||||
console.error("EventTile attempted to get relations for an event without an ID");
|
console.error("EventTile attempted to get relations for an event without an ID");
|
||||||
// Use event's special `toJSON` method to log key data.
|
// Use event's special `toJSON` method to log key data.
|
||||||
console.log(JSON.stringify(this.props.mxEvent, null, 4));
|
console.log(JSON.stringify(this.props.mxEvent, null, 4));
|
||||||
console.trace("Stacktrace for https://github.com/vector-im/riot-web/issues/11120");
|
console.trace("Stacktrace for https://github.com/vector-im/element-web/issues/11120");
|
||||||
}
|
}
|
||||||
return this.props.getRelationsForEvent(eventId, "m.annotation", "m.reaction");
|
return this.props.getRelationsForEvent(eventId, "m.annotation", "m.reaction");
|
||||||
},
|
},
|
||||||
|
|
|
@ -97,7 +97,7 @@ export default class NotificationBadge extends React.PureComponent<XOR<IProps, I
|
||||||
// Don't show a badge if we don't need to
|
// Don't show a badge if we don't need to
|
||||||
if (notification.isIdle) return null;
|
if (notification.isIdle) return null;
|
||||||
|
|
||||||
// TODO: Update these booleans for FTUE Notifications: https://github.com/vector-im/riot-web/issues/14261
|
// TODO: Update these booleans for FTUE Notifications: https://github.com/vector-im/element-web/issues/14261
|
||||||
// As of writing, that is "if red, show count always" and "optionally show counts instead of dots".
|
// As of writing, that is "if red, show count always" and "optionally show counts instead of dots".
|
||||||
// See git diff for what that boolean state looks like.
|
// See git diff for what that boolean state looks like.
|
||||||
// XXX: We ignore this.state.showCounts (the setting which controls counts vs dots).
|
// XXX: We ignore this.state.showCounts (the setting which controls counts vs dots).
|
||||||
|
|
|
@ -128,7 +128,7 @@ const TAG_AESTHETICS: {
|
||||||
defaultHidden: false,
|
defaultHidden: false,
|
||||||
},
|
},
|
||||||
|
|
||||||
// TODO: Replace with archived view: https://github.com/vector-im/riot-web/issues/14038
|
// TODO: Replace with archived view: https://github.com/vector-im/element-web/issues/14038
|
||||||
[DefaultTagID.Archived]: {
|
[DefaultTagID.Archived]: {
|
||||||
sectionLabel: _td("Historical"),
|
sectionLabel: _td("Historical"),
|
||||||
isInvite: false,
|
isInvite: false,
|
||||||
|
@ -215,7 +215,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
|
||||||
private updateLists = () => {
|
private updateLists = () => {
|
||||||
const newLists = RoomListStore.instance.orderedLists;
|
const newLists = RoomListStore.instance.orderedLists;
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log("new lists", newLists);
|
console.log("new lists", newLists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ export default class RoomList extends React.PureComponent<IProps, IState> {
|
||||||
|
|
||||||
private renderCommunityInvites(): TemporaryTile[] {
|
private renderCommunityInvites(): TemporaryTile[] {
|
||||||
// TODO: Put community invites in a more sensible place (not in the room list)
|
// TODO: Put community invites in a more sensible place (not in the room list)
|
||||||
// See https://github.com/vector-im/riot-web/issues/14456
|
// See https://github.com/vector-im/element-web/issues/14456
|
||||||
return MatrixClientPeg.get().getGroups().filter(g => {
|
return MatrixClientPeg.get().getGroups().filter(g => {
|
||||||
return g.myMembership === 'invite';
|
return g.myMembership === 'invite';
|
||||||
}).map(g => {
|
}).map(g => {
|
||||||
|
|
|
@ -511,7 +511,7 @@ export default createReactClass({
|
||||||
"If you think you're seeing this message in error, please " +
|
"If you think you're seeing this message in error, please " +
|
||||||
"<issueLink>submit a bug report</issueLink>.",
|
"<issueLink>submit a bug report</issueLink>.",
|
||||||
{ errcode: this.props.error.errcode },
|
{ errcode: this.props.error.errcode },
|
||||||
{ issueLink: label => <a href="https://github.com/vector-im/riot-web/issues/new/choose"
|
{ issueLink: label => <a href="https://github.com/vector-im/element-web/issues/new/choose"
|
||||||
target="_blank" rel="noreferrer noopener">{ label }</a> },
|
target="_blank" rel="noreferrer noopener">{ label }</a> },
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
|
@ -74,7 +74,7 @@ interface IProps {
|
||||||
// You should feel bad if you use this.
|
// You should feel bad if you use this.
|
||||||
extraBadTilesThatShouldntExist?: TemporaryTile[];
|
extraBadTilesThatShouldntExist?: TemporaryTile[];
|
||||||
|
|
||||||
// TODO: Account for https://github.com/vector-im/riot-web/issues/14179
|
// TODO: Account for https://github.com/vector-im/element-web/issues/14179
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Use re-resizer's NumberSize when it is exposed as the type
|
// TODO: Use re-resizer's NumberSize when it is exposed as the type
|
||||||
|
@ -703,7 +703,7 @@ export default class RoomSublist extends React.Component<IProps, IState> {
|
||||||
|
|
||||||
private onScrollPrevent(e: React.UIEvent<HTMLDivElement>) {
|
private onScrollPrevent(e: React.UIEvent<HTMLDivElement>) {
|
||||||
// the RoomTile calls scrollIntoView and the browser may scroll a div we do not wish to be scrollable
|
// the RoomTile calls scrollIntoView and the browser may scroll a div we do not wish to be scrollable
|
||||||
// this fixes https://github.com/vector-im/riot-web/issues/14413
|
// this fixes https://github.com/vector-im/element-web/issues/14413
|
||||||
(e.target as HTMLDivElement).scrollTop = 0;
|
(e.target as HTMLDivElement).scrollTop = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ interface IState {
|
||||||
hover: boolean;
|
hover: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove with community invites in the room list: https://github.com/vector-im/riot-web/issues/14456
|
// TODO: Remove with community invites in the room list: https://github.com/vector-im/element-web/issues/14456
|
||||||
export default class TemporaryTile extends React.Component<IProps, IState> {
|
export default class TemporaryTile extends React.Component<IProps, IState> {
|
||||||
constructor(props: IProps) {
|
constructor(props: IProps) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
|
@ -119,8 +119,8 @@ export default createReactClass({
|
||||||
'In future this will be improved.',
|
'In future this will be improved.',
|
||||||
) }
|
) }
|
||||||
{' '}
|
{' '}
|
||||||
<a href="https://github.com/vector-im/riot-web/issues/2671" target="_blank" rel="noreferrer noopener">
|
<a href="https://github.com/vector-im/element-web/issues/2671" target="_blank" rel="noreferrer noopener">
|
||||||
https://github.com/vector-im/riot-web/issues/2671
|
https://github.com/vector-im/element-web/issues/2671
|
||||||
</a>
|
</a>
|
||||||
</div>,
|
</div>,
|
||||||
button: _t("Continue"),
|
button: _t("Continue"),
|
||||||
|
|
|
@ -160,7 +160,7 @@ export default class EventIndexPanel extends React.Component {
|
||||||
);
|
);
|
||||||
} else if (EventIndexPeg.platformHasSupport() && !EventIndexPeg.supportIsInstalled()) {
|
} else if (EventIndexPeg.platformHasSupport() && !EventIndexPeg.supportIsInstalled()) {
|
||||||
const nativeLink = (
|
const nativeLink = (
|
||||||
"https://github.com/vector-im/riot-web/blob/develop/" +
|
"https://github.com/vector-im/element-web/blob/develop/" +
|
||||||
"docs/native-node-modules.md#" +
|
"docs/native-node-modules.md#" +
|
||||||
"adding-seshat-for-search-in-e2e-encrypted-rooms"
|
"adding-seshat-for-search-in-e2e-encrypted-rooms"
|
||||||
);
|
);
|
||||||
|
@ -194,7 +194,7 @@ export default class EventIndexPanel extends React.Component {
|
||||||
brand,
|
brand,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'desktopLink': (sub) => <a href="https://riot.im/download/desktop"
|
'desktopLink': (sub) => <a href="https://element.io/get-started"
|
||||||
target="_blank" rel="noreferrer noopener">{sub}</a>,
|
target="_blank" rel="noreferrer noopener">{sub}</a>,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
@ -33,7 +33,7 @@ const plEventsToLabels = {
|
||||||
"m.room.tombstone": _td("Upgrade the room"),
|
"m.room.tombstone": _td("Upgrade the room"),
|
||||||
"m.room.encryption": _td("Enable room encryption"),
|
"m.room.encryption": _td("Enable room encryption"),
|
||||||
|
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
"im.vector.modular.widgets": _td("Modify widgets"),
|
"im.vector.modular.widgets": _td("Modify widgets"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ const plEventsToShow = {
|
||||||
"m.room.tombstone": {isState: true},
|
"m.room.tombstone": {isState: true},
|
||||||
"m.room.encryption": {isState: true},
|
"m.room.encryption": {isState: true},
|
||||||
|
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
"im.vector.modular.widgets": {isState: true},
|
"im.vector.modular.widgets": {isState: true},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ export default class SecurityRoomSettingsTab extends React.Component {
|
||||||
{
|
{
|
||||||
'a': (sub) => {
|
'a': (sub) => {
|
||||||
return <a rel='noreferrer noopener' target='_blank'
|
return <a rel='noreferrer noopener' target='_blank'
|
||||||
href='https://about.riot.im/help#end-to-end-encryption'>{sub}</a>;
|
href='https://element.io/help#encryption'>{sub}</a>;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
|
@ -55,7 +55,7 @@ export default class LabsUserSettingsTab extends React.Component {
|
||||||
_t('Customise your experience with experimental labs features. ' +
|
_t('Customise your experience with experimental labs features. ' +
|
||||||
'<a>Learn more</a>.', {}, {
|
'<a>Learn more</a>.', {}, {
|
||||||
'a': (sub) => {
|
'a': (sub) => {
|
||||||
return <a href="https://github.com/vector-im/riot-web/blob/develop/docs/labs.md"
|
return <a href="https://github.com/vector-im/element-web/blob/develop/docs/labs.md"
|
||||||
rel='noreferrer noopener' target='_blank'>{sub}</a>;
|
rel='noreferrer noopener' target='_blank'>{sub}</a>;
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
|
@ -59,7 +59,7 @@ export function setCaretPosition(editor: HTMLDivElement, model: EditorModel, car
|
||||||
// If the selection matches, it's important to leave it alone.
|
// If the selection matches, it's important to leave it alone.
|
||||||
// Recreating the selection state in at least Chrome can cause
|
// Recreating the selection state in at least Chrome can cause
|
||||||
// strange side effects, like touch bar flickering on every key.
|
// strange side effects, like touch bar flickering on every key.
|
||||||
// See https://github.com/vector-im/riot-web/issues/9299
|
// See https://github.com/vector-im/element-web/issues/9299
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,7 +158,7 @@ function checkDescendInto(node) {
|
||||||
|
|
||||||
function checkIgnored(n) {
|
function checkIgnored(n) {
|
||||||
if (n.nodeType === Node.TEXT_NODE) {
|
if (n.nodeType === Node.TEXT_NODE) {
|
||||||
// riot adds \n text nodes in a lot of places,
|
// Element adds \n text nodes in a lot of places,
|
||||||
// which should be ignored
|
// which should be ignored
|
||||||
return n.nodeValue === "\n";
|
return n.nodeValue === "\n";
|
||||||
} else if (n.nodeType === Node.ELEMENT_NODE) {
|
} else if (n.nodeType === Node.ELEMENT_NODE) {
|
||||||
|
|
|
@ -2171,7 +2171,7 @@
|
||||||
"%(brand)s Web": "%(brand)s Web",
|
"%(brand)s Web": "%(brand)s Web",
|
||||||
"%(brand)s Desktop": "%(brand)s Desktop",
|
"%(brand)s Desktop": "%(brand)s Desktop",
|
||||||
"%(brand)s iOS": "%(brand)s iOS",
|
"%(brand)s iOS": "%(brand)s iOS",
|
||||||
"%(brand)s X for Android": "%(brand)s X for Android",
|
"%(brand)s Android": "%(brand)s Android",
|
||||||
"or another cross-signing capable Matrix client": "or another cross-signing capable Matrix client",
|
"or another cross-signing capable Matrix client": "or another cross-signing capable Matrix client",
|
||||||
"Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.",
|
"Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.",
|
||||||
"Your new session is now verified. Other users will see it as trusted.": "Your new session is now verified. Other users will see it as trusted.",
|
"Your new session is now verified. Other users will see it as trusted.": "Your new session is now verified. Other users will see it as trusted.",
|
||||||
|
|
|
@ -145,7 +145,7 @@ export default class EventIndex extends EventEmitter {
|
||||||
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
const indexManager = PlatformPeg.get().getEventIndexingManager();
|
||||||
|
|
||||||
if (prevState === "PREPARED" && state === "SYNCING") {
|
if (prevState === "PREPARED" && state === "SYNCING") {
|
||||||
// If our indexer is empty we're most likely running Riot the
|
// If our indexer is empty we're most likely running Element the
|
||||||
// first time with indexing support or running it with an
|
// first time with indexing support or running it with an
|
||||||
// initial sync. Add checkpoints to crawl our encrypted rooms.
|
// initial sync. Add checkpoints to crawl our encrypted rooms.
|
||||||
const eventIndexWasEmpty = await indexManager.isEventIndexEmpty();
|
const eventIndexWasEmpty = await indexManager.isEventIndexEmpty();
|
||||||
|
|
|
@ -64,7 +64,7 @@ export function _td(s: string): string {
|
||||||
// Wrapper for counterpart's translation function so that it handles nulls and undefineds properly
|
// Wrapper for counterpart's translation function so that it handles nulls and undefineds properly
|
||||||
// Takes the same arguments as counterpart.translate()
|
// Takes the same arguments as counterpart.translate()
|
||||||
function safeCounterpartTranslate(text: string, options?: object) {
|
function safeCounterpartTranslate(text: string, options?: object) {
|
||||||
// Horrible hack to avoid https://github.com/vector-im/riot-web/issues/4191
|
// Horrible hack to avoid https://github.com/vector-im/element-web/issues/4191
|
||||||
// The interpolation library that counterpart uses does not support undefined/null
|
// The interpolation library that counterpart uses does not support undefined/null
|
||||||
// values and instead will throw an error. This is a problem since everywhere else
|
// values and instead will throw an error. This is a problem since everywhere else
|
||||||
// in JS land passing undefined/null will simply stringify instead, and when converting
|
// in JS land passing undefined/null will simply stringify instead, and when converting
|
||||||
|
@ -295,7 +295,7 @@ export function replaceByRegexes(text: string, mapping: IVariables | Tags): stri
|
||||||
|
|
||||||
// Allow overriding the text displayed when no translation exists
|
// Allow overriding the text displayed when no translation exists
|
||||||
// Currently only used in unit tests to avoid having to load
|
// Currently only used in unit tests to avoid having to load
|
||||||
// the translations in riot-web
|
// the translations in element-web
|
||||||
export function setMissingEntryGenerator(f: (value: string) => void) {
|
export function setMissingEntryGenerator(f: (value: string) => void) {
|
||||||
counterpart.setMissingEntryGenerator(f);
|
counterpart.setMissingEntryGenerator(f);
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
"advancedRoomListLogging": {
|
"advancedRoomListLogging": {
|
||||||
// TODO: Remove flag before launch: https://github.com/vector-im/riot-web/issues/14231
|
// TODO: Remove flag before launch: https://github.com/vector-im/element-web/issues/14231
|
||||||
displayName: _td("Enable advanced debugging for the room list"),
|
displayName: _td("Enable advanced debugging for the room list"),
|
||||||
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,
|
||||||
default: false,
|
default: false,
|
||||||
|
@ -488,13 +488,13 @@ export const SETTINGS: {[setting: string]: ISetting} = {
|
||||||
deny: [],
|
deny: [],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// TODO: Remove setting: https://github.com/vector-im/riot-web/issues/14373
|
// TODO: Remove setting: https://github.com/vector-im/element-web/issues/14373
|
||||||
"RoomList.orderAlphabetically": {
|
"RoomList.orderAlphabetically": {
|
||||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||||
displayName: _td("Order rooms by name"),
|
displayName: _td("Order rooms by name"),
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
// TODO: Remove setting: https://github.com/vector-im/riot-web/issues/14373
|
// TODO: Remove setting: https://github.com/vector-im/element-web/issues/14373
|
||||||
"RoomList.orderByImportance": {
|
"RoomList.orderByImportance": {
|
||||||
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
|
||||||
displayName: _td("Show rooms with unread notifications first"),
|
displayName: _td("Show rooms with unread notifications first"),
|
||||||
|
|
|
@ -78,7 +78,7 @@ export default class ThemeWatcher {
|
||||||
};
|
};
|
||||||
|
|
||||||
// XXX: forceTheme param added here as local echo appears to be unreliable
|
// XXX: forceTheme param added here as local echo appears to be unreliable
|
||||||
// https://github.com/vector-im/riot-web/issues/11443
|
// https://github.com/vector-im/element-web/issues/11443
|
||||||
public recheck(forceTheme?: string) {
|
public recheck(forceTheme?: string) {
|
||||||
const oldTheme = this.currentTheme;
|
const oldTheme = this.currentTheme;
|
||||||
this.currentTheme = forceTheme === undefined ? this.getEffectiveTheme() : forceTheme;
|
this.currentTheme = forceTheme === undefined ? this.getEffectiveTheme() : forceTheme;
|
||||||
|
|
|
@ -64,7 +64,7 @@ class ActiveWidgetStore extends EventEmitter {
|
||||||
// Everything else relies on views listening for events and calling setters
|
// Everything else relies on views listening for events and calling setters
|
||||||
// on this class which is terrible. This store should just listen for events
|
// on this class which is terrible. This store should just listen for events
|
||||||
// and keep itself up to date.
|
// and keep itself up to date.
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
if (ev.getType() !== 'im.vector.modular.widgets') return;
|
if (ev.getType() !== 'im.vector.modular.widgets') return;
|
||||||
|
|
||||||
if (ev.getStateKey() === this._persistentWidgetId) {
|
if (ev.getStateKey() === this._persistentWidgetId) {
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
export enum NotificationColor {
|
export enum NotificationColor {
|
||||||
// Inverted (None -> Red) because we do integer comparisons on this
|
// Inverted (None -> Red) because we do integer comparisons on this
|
||||||
None, // nothing special
|
None, // nothing special
|
||||||
// TODO: Remove bold with notifications: https://github.com/vector-im/riot-web/issues/14227
|
// TODO: Remove bold with notifications: https://github.com/vector-im/element-web/issues/14227
|
||||||
Bold, // no badge, show as unread
|
Bold, // no badge, show as unread
|
||||||
Grey, // unread notified messages
|
Grey, // unread notified messages
|
||||||
Red, // unread pings
|
Red, // unread pings
|
||||||
|
|
|
@ -65,7 +65,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
private readonly watchedSettings = [
|
private readonly watchedSettings = [
|
||||||
'feature_custom_tags',
|
'feature_custom_tags',
|
||||||
'advancedRoomListLogging', // TODO: Remove watch: https://github.com/vector-im/riot-web/issues/14602
|
'advancedRoomListLogging', // TODO: Remove watch: https://github.com/vector-im/element-web/issues/14602
|
||||||
];
|
];
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -161,7 +161,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
await this.algorithm.setStickyRoom(null);
|
await this.algorithm.setStickyRoom(null);
|
||||||
} else if (activeRoom !== this.algorithm.stickyRoom) {
|
} else if (activeRoom !== this.algorithm.stickyRoom) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Changing sticky room to ${activeRoomId}`);
|
console.log(`Changing sticky room to ${activeRoomId}`);
|
||||||
}
|
}
|
||||||
await this.algorithm.setStickyRoom(activeRoom);
|
await this.algorithm.setStickyRoom(activeRoom);
|
||||||
|
@ -205,7 +205,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
if (payload.action === 'setting_updated') {
|
if (payload.action === 'setting_updated') {
|
||||||
if (this.watchedSettings.includes(payload.settingName)) {
|
if (this.watchedSettings.includes(payload.settingName)) {
|
||||||
// TODO: Remove with https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove with https://github.com/vector-im/element-web/issues/14602
|
||||||
if (payload.settingName === "advancedRoomListLogging") {
|
if (payload.settingName === "advancedRoomListLogging") {
|
||||||
// Log when the setting changes so we know when it was turned on in the rageshake
|
// Log when the setting changes so we know when it was turned on in the rageshake
|
||||||
const enabled = SettingsStore.getValue("advancedRoomListLogging");
|
const enabled = SettingsStore.getValue("advancedRoomListLogging");
|
||||||
|
@ -236,7 +236,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Got own read receipt in ${room.roomId}`);
|
console.log(`[RoomListDebug] Got own read receipt in ${room.roomId}`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(room, RoomUpdateCause.ReadReceipt);
|
await this.handleRoomUpdate(room, RoomUpdateCause.ReadReceipt);
|
||||||
|
@ -246,7 +246,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
} else if (payload.action === 'MatrixActions.Room.tags') {
|
} else if (payload.action === 'MatrixActions.Room.tags') {
|
||||||
const roomPayload = (<any>payload); // TODO: Type out the dispatcher types
|
const roomPayload = (<any>payload); // TODO: Type out the dispatcher types
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Got tag change in ${roomPayload.room.roomId}`);
|
console.log(`[RoomListDebug] Got tag change in ${roomPayload.room.roomId}`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(roomPayload.room, RoomUpdateCause.PossibleTagChange);
|
await this.handleRoomUpdate(roomPayload.room, RoomUpdateCause.PossibleTagChange);
|
||||||
|
@ -261,13 +261,13 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
const room = this.matrixClient.getRoom(roomId);
|
const room = this.matrixClient.getRoom(roomId);
|
||||||
const tryUpdate = async (updatedRoom: Room) => {
|
const tryUpdate = async (updatedRoom: Room) => {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Live timeline event ${eventPayload.event.getId()}` +
|
console.log(`[RoomListDebug] Live timeline event ${eventPayload.event.getId()}` +
|
||||||
` in ${updatedRoom.roomId}`);
|
` in ${updatedRoom.roomId}`);
|
||||||
}
|
}
|
||||||
if (eventPayload.event.getType() === 'm.room.tombstone' && eventPayload.event.getStateKey() === '') {
|
if (eventPayload.event.getType() === 'm.room.tombstone' && eventPayload.event.getStateKey() === '') {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Got tombstone event - trying to remove now-dead room`);
|
console.log(`[RoomListDebug] Got tombstone event - trying to remove now-dead room`);
|
||||||
}
|
}
|
||||||
const newRoom = this.matrixClient.getRoom(eventPayload.event.getContent()['replacement_room']);
|
const newRoom = this.matrixClient.getRoom(eventPayload.event.getContent()['replacement_room']);
|
||||||
|
@ -300,7 +300,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Decrypted timeline event ${eventPayload.event.getId()} in ${roomId}`);
|
console.log(`[RoomListDebug] Decrypted timeline event ${eventPayload.event.getId()} in ${roomId}`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(room, RoomUpdateCause.Timeline);
|
await this.handleRoomUpdate(room, RoomUpdateCause.Timeline);
|
||||||
|
@ -308,7 +308,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
} else if (payload.action === 'MatrixActions.accountData' && payload.event_type === 'm.direct') {
|
} else if (payload.action === 'MatrixActions.accountData' && payload.event_type === 'm.direct') {
|
||||||
const eventPayload = (<any>payload); // TODO: Type out the dispatcher types
|
const eventPayload = (<any>payload); // TODO: Type out the dispatcher types
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Received updated DM map`);
|
console.log(`[RoomListDebug] Received updated DM map`);
|
||||||
}
|
}
|
||||||
const dmMap = eventPayload.event.getContent();
|
const dmMap = eventPayload.event.getContent();
|
||||||
|
@ -335,7 +335,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
const newMembership = getEffectiveMembership(membershipPayload.membership);
|
const newMembership = getEffectiveMembership(membershipPayload.membership);
|
||||||
if (oldMembership !== EffectiveMembership.Join && newMembership === EffectiveMembership.Join) {
|
if (oldMembership !== EffectiveMembership.Join && newMembership === EffectiveMembership.Join) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Handling new room ${membershipPayload.room.roomId}`);
|
console.log(`[RoomListDebug] Handling new room ${membershipPayload.room.roomId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
const createEvent = membershipPayload.room.currentState.getStateEvents("m.room.create", "");
|
const createEvent = membershipPayload.room.currentState.getStateEvents("m.room.create", "");
|
||||||
if (createEvent && createEvent.getContent()['predecessor']) {
|
if (createEvent && createEvent.getContent()['predecessor']) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Room has a predecessor`);
|
console.log(`[RoomListDebug] Room has a predecessor`);
|
||||||
}
|
}
|
||||||
const prevRoom = this.matrixClient.getRoom(createEvent.getContent()['predecessor']['room_id']);
|
const prevRoom = this.matrixClient.getRoom(createEvent.getContent()['predecessor']['room_id']);
|
||||||
|
@ -352,7 +352,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
const isSticky = this.algorithm.stickyRoom === prevRoom;
|
const isSticky = this.algorithm.stickyRoom === prevRoom;
|
||||||
if (isSticky) {
|
if (isSticky) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Clearing sticky room due to room upgrade`);
|
console.log(`[RoomListDebug] Clearing sticky room due to room upgrade`);
|
||||||
}
|
}
|
||||||
await this.algorithm.setStickyRoom(null);
|
await this.algorithm.setStickyRoom(null);
|
||||||
|
@ -361,7 +361,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
// Note: we hit the algorithm instead of our handleRoomUpdate() function to
|
// Note: we hit the algorithm instead of our handleRoomUpdate() function to
|
||||||
// avoid redundant updates.
|
// avoid redundant updates.
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Removing previous room from room list`);
|
console.log(`[RoomListDebug] Removing previous room from room list`);
|
||||||
}
|
}
|
||||||
await this.algorithm.handleRoomUpdate(prevRoom, RoomUpdateCause.RoomRemoved);
|
await this.algorithm.handleRoomUpdate(prevRoom, RoomUpdateCause.RoomRemoved);
|
||||||
|
@ -369,7 +369,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Adding new room to room list`);
|
console.log(`[RoomListDebug] Adding new room to room list`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom);
|
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom);
|
||||||
|
@ -379,7 +379,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
if (oldMembership !== EffectiveMembership.Invite && newMembership === EffectiveMembership.Invite) {
|
if (oldMembership !== EffectiveMembership.Invite && newMembership === EffectiveMembership.Invite) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Handling invite to ${membershipPayload.room.roomId}`);
|
console.log(`[RoomListDebug] Handling invite to ${membershipPayload.room.roomId}`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom);
|
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.NewRoom);
|
||||||
|
@ -390,7 +390,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
// If it's not a join, it's transitioning into a different list (possibly historical)
|
// If it's not a join, it's transitioning into a different list (possibly historical)
|
||||||
if (oldMembership !== newMembership) {
|
if (oldMembership !== newMembership) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Handling membership change in ${membershipPayload.room.roomId}`);
|
console.log(`[RoomListDebug] Handling membership change in ${membershipPayload.room.roomId}`);
|
||||||
}
|
}
|
||||||
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.PossibleTagChange);
|
await this.handleRoomUpdate(membershipPayload.room, RoomUpdateCause.PossibleTagChange);
|
||||||
|
@ -404,7 +404,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
const shouldUpdate = await this.algorithm.handleRoomUpdate(room, cause);
|
const shouldUpdate = await this.algorithm.handleRoomUpdate(room, cause);
|
||||||
if (shouldUpdate) {
|
if (shouldUpdate) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[DEBUG] Room "${room.name}" (${room.roomId}) triggered by ${cause} requires list update`);
|
console.log(`[DEBUG] Room "${room.name}" (${room.roomId}) triggered by ${cause} requires list update`);
|
||||||
}
|
}
|
||||||
this.updateFn.mark();
|
this.updateFn.mark();
|
||||||
|
@ -418,7 +418,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
private async setAndPersistTagSorting(tagId: TagID, sort: SortAlgorithm) {
|
private async setAndPersistTagSorting(tagId: TagID, sort: SortAlgorithm) {
|
||||||
await this.algorithm.setTagSorting(tagId, sort);
|
await this.algorithm.setTagSorting(tagId, sort);
|
||||||
// TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114
|
// TODO: Per-account? https://github.com/vector-im/element-web/issues/14114
|
||||||
localStorage.setItem(`mx_tagSort_${tagId}`, sort);
|
localStorage.setItem(`mx_tagSort_${tagId}`, sort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,7 +428,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
// noinspection JSMethodCanBeStatic
|
// noinspection JSMethodCanBeStatic
|
||||||
private getStoredTagSorting(tagId: TagID): SortAlgorithm {
|
private getStoredTagSorting(tagId: TagID): SortAlgorithm {
|
||||||
// TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114
|
// TODO: Per-account? https://github.com/vector-im/element-web/issues/14114
|
||||||
return <SortAlgorithm>localStorage.getItem(`mx_tagSort_${tagId}`);
|
return <SortAlgorithm>localStorage.getItem(`mx_tagSort_${tagId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
private async setAndPersistListOrder(tagId: TagID, order: ListAlgorithm) {
|
private async setAndPersistListOrder(tagId: TagID, order: ListAlgorithm) {
|
||||||
await this.algorithm.setListOrdering(tagId, order);
|
await this.algorithm.setListOrdering(tagId, order);
|
||||||
// TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114
|
// TODO: Per-account? https://github.com/vector-im/element-web/issues/14114
|
||||||
localStorage.setItem(`mx_listOrder_${tagId}`, order);
|
localStorage.setItem(`mx_listOrder_${tagId}`, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
// noinspection JSMethodCanBeStatic
|
// noinspection JSMethodCanBeStatic
|
||||||
private getStoredListOrder(tagId: TagID): ListAlgorithm {
|
private getStoredListOrder(tagId: TagID): ListAlgorithm {
|
||||||
// TODO: Per-account? https://github.com/vector-im/riot-web/issues/14114
|
// TODO: Per-account? https://github.com/vector-im/element-web/issues/14114
|
||||||
return <ListAlgorithm>localStorage.getItem(`mx_listOrder_${tagId}`);
|
return <ListAlgorithm>localStorage.getItem(`mx_listOrder_${tagId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +521,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
private onAlgorithmListUpdated = () => {
|
private onAlgorithmListUpdated = () => {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log("Underlying algorithm has triggered a list update - marking");
|
console.log("Underlying algorithm has triggered a list update - marking");
|
||||||
}
|
}
|
||||||
this.updateFn.mark();
|
this.updateFn.mark();
|
||||||
|
@ -574,7 +574,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
public addFilter(filter: IFilterCondition): void {
|
public addFilter(filter: IFilterCondition): void {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log("Adding filter condition:", filter);
|
console.log("Adding filter condition:", filter);
|
||||||
}
|
}
|
||||||
this.filterConditions.push(filter);
|
this.filterConditions.push(filter);
|
||||||
|
@ -586,7 +586,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> {
|
||||||
|
|
||||||
public removeFilter(filter: IFilterCondition): void {
|
public removeFilter(filter: IFilterCondition): void {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log("Removing filter condition:", filter);
|
console.log("Removing filter condition:", filter);
|
||||||
}
|
}
|
||||||
const idx = this.filterConditions.indexOf(filter);
|
const idx = this.filterConditions.indexOf(filter);
|
||||||
|
|
|
@ -334,7 +334,7 @@ export class Algorithm extends EventEmitter {
|
||||||
newMap[tagId] = allowedRoomsInThisTag;
|
newMap[tagId] = allowedRoomsInThisTag;
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[DEBUG] ${newMap[tagId].length}/${rooms.length} rooms filtered into ${tagId}`);
|
console.log(`[DEBUG] ${newMap[tagId].length}/${rooms.length} rooms filtered into ${tagId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -349,7 +349,7 @@ export class Algorithm extends EventEmitter {
|
||||||
if (!this.hasFilters) return; // don't bother doing work if there's nothing to do
|
if (!this.hasFilters) return; // don't bother doing work if there's nothing to do
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Recalculating filtered rooms for ${tagId}`);
|
console.log(`Recalculating filtered rooms for ${tagId}`);
|
||||||
}
|
}
|
||||||
delete this.filteredRooms[tagId];
|
delete this.filteredRooms[tagId];
|
||||||
|
@ -361,7 +361,7 @@ export class Algorithm extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[DEBUG] ${filteredRooms.length}/${rooms.length} rooms filtered into ${tagId}`);
|
console.log(`[DEBUG] ${filteredRooms.length}/${rooms.length} rooms filtered into ${tagId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -403,7 +403,7 @@ export class Algorithm extends EventEmitter {
|
||||||
|
|
||||||
if (!this._cachedStickyRooms || !updatedTag) {
|
if (!this._cachedStickyRooms || !updatedTag) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Generating clone of cached rooms for sticky room handling`);
|
console.log(`Generating clone of cached rooms for sticky room handling`);
|
||||||
}
|
}
|
||||||
const stickiedTagMap: ITagMap = {};
|
const stickiedTagMap: ITagMap = {};
|
||||||
|
@ -417,7 +417,7 @@ export class Algorithm extends EventEmitter {
|
||||||
// Update the tag indicated by the caller, if possible. This is mostly to ensure
|
// Update the tag indicated by the caller, if possible. This is mostly to ensure
|
||||||
// our cache is up to date.
|
// our cache is up to date.
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Replacing cached sticky rooms for ${updatedTag}`);
|
console.log(`Replacing cached sticky rooms for ${updatedTag}`);
|
||||||
}
|
}
|
||||||
this._cachedStickyRooms[updatedTag] = this.cachedRooms[updatedTag].map(r => r); // shallow clone
|
this._cachedStickyRooms[updatedTag] = this.cachedRooms[updatedTag].map(r => r); // shallow clone
|
||||||
|
@ -429,7 +429,7 @@ export class Algorithm extends EventEmitter {
|
||||||
const sticky = this._stickyRoom;
|
const sticky = this._stickyRoom;
|
||||||
if (!updatedTag || updatedTag === sticky.tag) {
|
if (!updatedTag || updatedTag === sticky.tag) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(
|
console.log(
|
||||||
`Inserting sticky room ${sticky.room.roomId} at position ${sticky.position} in ${sticky.tag}`,
|
`Inserting sticky room ${sticky.room.roomId} at position ${sticky.position} in ${sticky.tag}`,
|
||||||
);
|
);
|
||||||
|
@ -660,7 +660,7 @@ export class Algorithm extends EventEmitter {
|
||||||
*/
|
*/
|
||||||
public async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise<boolean> {
|
public async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise<boolean> {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Handle room update for ${room.roomId} called with cause ${cause}`);
|
console.log(`Handle room update for ${room.roomId} called with cause ${cause}`);
|
||||||
}
|
}
|
||||||
if (!this.algorithms) throw new Error("Not ready: no algorithms to determine tags from");
|
if (!this.algorithms) throw new Error("Not ready: no algorithms to determine tags from");
|
||||||
|
@ -720,7 +720,7 @@ export class Algorithm extends EventEmitter {
|
||||||
if (diff.removed.length > 0 || diff.added.length > 0) {
|
if (diff.removed.length > 0 || diff.added.length > 0) {
|
||||||
for (const rmTag of diff.removed) {
|
for (const rmTag of diff.removed) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Removing ${room.roomId} from ${rmTag}`);
|
console.log(`Removing ${room.roomId} from ${rmTag}`);
|
||||||
}
|
}
|
||||||
const algorithm: OrderingAlgorithm = this.algorithms[rmTag];
|
const algorithm: OrderingAlgorithm = this.algorithms[rmTag];
|
||||||
|
@ -732,7 +732,7 @@ export class Algorithm extends EventEmitter {
|
||||||
}
|
}
|
||||||
for (const addTag of diff.added) {
|
for (const addTag of diff.added) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Adding ${room.roomId} to ${addTag}`);
|
console.log(`Adding ${room.roomId} to ${addTag}`);
|
||||||
}
|
}
|
||||||
const algorithm: OrderingAlgorithm = this.algorithms[addTag];
|
const algorithm: OrderingAlgorithm = this.algorithms[addTag];
|
||||||
|
@ -745,14 +745,14 @@ export class Algorithm extends EventEmitter {
|
||||||
this.roomIdsToTags[room.roomId] = newTags;
|
this.roomIdsToTags[room.roomId] = newTags;
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Changing update cause for ${room.roomId} to Timeline to sort rooms`);
|
console.log(`Changing update cause for ${room.roomId} to Timeline to sort rooms`);
|
||||||
}
|
}
|
||||||
cause = RoomUpdateCause.Timeline;
|
cause = RoomUpdateCause.Timeline;
|
||||||
didTagChange = true;
|
didTagChange = true;
|
||||||
} else {
|
} else {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`Received no-op update for ${room.roomId} - changing to Timeline update`);
|
console.log(`Received no-op update for ${room.roomId} - changing to Timeline update`);
|
||||||
}
|
}
|
||||||
cause = RoomUpdateCause.Timeline;
|
cause = RoomUpdateCause.Timeline;
|
||||||
|
@ -781,7 +781,7 @@ export class Algorithm extends EventEmitter {
|
||||||
if (cause !== RoomUpdateCause.NewRoom && cause !== RoomUpdateCause.RoomRemoved) {
|
if (cause !== RoomUpdateCause.NewRoom && cause !== RoomUpdateCause.RoomRemoved) {
|
||||||
if (this.stickyRoom === room) {
|
if (this.stickyRoom === room) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.warn(`[RoomListDebug] Received ${cause} update for sticky room ${room.roomId} - ignoring`);
|
console.warn(`[RoomListDebug] Received ${cause} update for sticky room ${room.roomId} - ignoring`);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -791,14 +791,14 @@ export class Algorithm extends EventEmitter {
|
||||||
if (!this.roomIdsToTags[room.roomId]) {
|
if (!this.roomIdsToTags[room.roomId]) {
|
||||||
if (CAUSES_REQUIRING_ROOM.includes(cause)) {
|
if (CAUSES_REQUIRING_ROOM.includes(cause)) {
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.warn(`Skipping tag update for ${room.roomId} because we don't know about the room`);
|
console.warn(`Skipping tag update for ${room.roomId} because we don't know about the room`);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Updating tags for room ${room.roomId} (${room.name})`);
|
console.log(`[RoomListDebug] Updating tags for room ${room.roomId} (${room.name})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -812,13 +812,13 @@ export class Algorithm extends EventEmitter {
|
||||||
this.roomIdsToTags[room.roomId] = roomTags;
|
this.roomIdsToTags[room.roomId] = roomTags;
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Updated tags for ${room.roomId}:`, roomTags);
|
console.log(`[RoomListDebug] Updated tags for ${room.roomId}:`, roomTags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Reached algorithmic handling for ${room.roomId} and cause ${cause}`);
|
console.log(`[RoomListDebug] Reached algorithmic handling for ${room.roomId} and cause ${cause}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -843,7 +843,7 @@ export class Algorithm extends EventEmitter {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
if (SettingsStore.getValue("advancedRoomListLogging")) {
|
||||||
// TODO: Remove debug: https://github.com/vector-im/riot-web/issues/14602
|
// TODO: Remove debug: https://github.com/vector-im/element-web/issues/14602
|
||||||
console.log(`[RoomListDebug] Finished handling ${room.roomId} with cause ${cause} (changed=${changed})`);
|
console.log(`[RoomListDebug] Finished handling ${room.roomId} with cause ${cause} (changed=${changed})`);
|
||||||
}
|
}
|
||||||
return changed;
|
return changed;
|
||||||
|
|
|
@ -270,7 +270,7 @@ export class ImportanceAlgorithm extends OrderingAlgorithm {
|
||||||
`!! Room list index corruption: ${lastCat} (i:${indices[lastCat]}) is greater ` +
|
`!! Room list index corruption: ${lastCat} (i:${indices[lastCat]}) is greater ` +
|
||||||
`than ${thisCat} (i:${indices[thisCat]}) - category indices are likely desynced from reality`);
|
`than ${thisCat} (i:${indices[thisCat]}) - category indices are likely desynced from reality`);
|
||||||
|
|
||||||
// TODO: Regenerate index when this happens: https://github.com/vector-im/riot-web/issues/14234
|
// TODO: Regenerate index when this happens: https://github.com/vector-im/element-web/issues/14234
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ export class NaturalAlgorithm extends OrderingAlgorithm {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Optimize this to avoid useless operations: https://github.com/vector-im/riot-web/issues/14457
|
// TODO: Optimize this to avoid useless operations: https://github.com/vector-im/element-web/issues/14457
|
||||||
// For example, we can skip updates to alphabetic (sometimes) and manually ordered tags
|
// For example, we can skip updates to alphabetic (sometimes) and manually ordered tags
|
||||||
this.cachedOrderedRooms = await sortRoomsWithAlgorithm(
|
this.cachedOrderedRooms = await sortRoomsWithAlgorithm(
|
||||||
this.cachedOrderedRooms,
|
this.cachedOrderedRooms,
|
||||||
|
|
|
@ -33,13 +33,13 @@ export class RecentAlgorithm implements IAlgorithm {
|
||||||
// of the rooms to each other.
|
// of the rooms to each other.
|
||||||
|
|
||||||
// TODO: We could probably improve the sorting algorithm here by finding changes.
|
// TODO: We could probably improve the sorting algorithm here by finding changes.
|
||||||
// See https://github.com/vector-im/riot-web/issues/14459
|
// See https://github.com/vector-im/element-web/issues/14459
|
||||||
// For example, if we spent a little bit of time to determine which elements have
|
// For example, if we spent a little bit of time to determine which elements have
|
||||||
// actually changed (probably needs to be done higher up?) then we could do an
|
// actually changed (probably needs to be done higher up?) then we could do an
|
||||||
// insertion sort or similar on the limited set of changes.
|
// insertion sort or similar on the limited set of changes.
|
||||||
|
|
||||||
// TODO: Don't assume we're using the same client as the peg
|
// TODO: Don't assume we're using the same client as the peg
|
||||||
// See https://github.com/vector-im/riot-web/issues/14458
|
// See https://github.com/vector-im/element-web/issues/14458
|
||||||
let myUserId = '';
|
let myUserId = '';
|
||||||
if (MatrixClientPeg.get()) {
|
if (MatrixClientPeg.get()) {
|
||||||
myUserId = MatrixClientPeg.get().getUserId();
|
myUserId = MatrixClientPeg.get().getUserId();
|
||||||
|
|
|
@ -202,7 +202,7 @@ export async function setTheme(theme) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const switchTheme = function() {
|
const switchTheme = function() {
|
||||||
// we re-enable our theme here just in case we raced with another
|
// we re-enable our theme here just in case we raced with another
|
||||||
// theme set request as per https://github.com/vector-im/riot-web/issues/5601.
|
// theme set request as per https://github.com/vector-im/element-web/issues/5601.
|
||||||
// We could alternatively lock or similar to stop the race, but
|
// We could alternatively lock or similar to stop the race, but
|
||||||
// this is probably good enough for now.
|
// this is probably good enough for now.
|
||||||
styleElements[stylesheetName].disabled = false;
|
styleElements[stylesheetName].disabled = false;
|
||||||
|
|
|
@ -29,7 +29,7 @@ const TOAST_KEY = "update";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check a version string is compatible with the Changelog
|
* Check a version string is compatible with the Changelog
|
||||||
* dialog ([riot-version]-react-[react-sdk-version]-js-[js-sdk-version])
|
* dialog ([element-version]-react-[react-sdk-version]-js-[js-sdk-version])
|
||||||
*/
|
*/
|
||||||
function checkVersion(ver) {
|
function checkVersion(ver) {
|
||||||
const parts = ver.split('-');
|
const parts = ver.split('-');
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
<head>
|
<head>
|
||||||
<!--
|
<!--
|
||||||
Hello! If you're reading this, perhaps you're wondering what this
|
Hello! If you're reading this, perhaps you're wondering what this
|
||||||
file is doing and why your Riot is using it.
|
file is doing and why your Element is using it.
|
||||||
In short, this allows Riot to isolate potentially unsafe encrypted
|
In short, this allows Element to isolate potentially unsafe encrypted
|
||||||
attachments into their own origin, away from your Riot.
|
attachments into their own origin, away from your Element.
|
||||||
Stay curious!
|
Stay curious!
|
||||||
-->
|
-->
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -80,7 +80,7 @@ export default class AutoDiscoveryUtils {
|
||||||
{
|
{
|
||||||
a: (sub) => {
|
a: (sub) => {
|
||||||
return <a
|
return <a
|
||||||
href="https://github.com/vector-im/riot-web/blob/master/docs/config.md"
|
href="https://github.com/vector-im/element-web/blob/master/docs/config.md"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer noopener"
|
rel="noreferrer noopener"
|
||||||
>{sub}</a>;
|
>{sub}</a>;
|
||||||
|
@ -203,7 +203,7 @@ export default class AutoDiscoveryUtils {
|
||||||
// Note: In the cases where we rely on the default IS from the config (namely
|
// Note: In the cases where we rely on the default IS from the config (namely
|
||||||
// lack of identity server provided by the discovery method), we intentionally do not
|
// lack of identity server provided by the discovery method), we intentionally do not
|
||||||
// validate it. This has already been validated and this helps some off-the-grid usage
|
// validate it. This has already been validated and this helps some off-the-grid usage
|
||||||
// of Riot.
|
// of Element.
|
||||||
let preferredIdentityUrl = defaultConfig && defaultConfig['isUrl'];
|
let preferredIdentityUrl = defaultConfig && defaultConfig['isUrl'];
|
||||||
if (isResult && isResult.state === AutoDiscovery.SUCCESS) {
|
if (isResult && isResult.state === AutoDiscovery.SUCCESS) {
|
||||||
preferredIdentityUrl = isResult["base_url"];
|
preferredIdentityUrl = isResult["base_url"];
|
||||||
|
|
|
@ -28,7 +28,7 @@ import {MatrixClientPeg} from '../MatrixClientPeg';
|
||||||
// called createObjectURL(), and so if the content contains any scripting then it
|
// called createObjectURL(), and so if the content contains any scripting then it
|
||||||
// will pose a XSS vulnerability when the browser renders it. This is particularly
|
// will pose a XSS vulnerability when the browser renders it. This is particularly
|
||||||
// bad if the user right-clicks the URI and pastes it into a new window or tab,
|
// bad if the user right-clicks the URI and pastes it into a new window or tab,
|
||||||
// as the blob will then execute with access to Riot's full JS environment(!)
|
// as the blob will then execute with access to Element's full JS environment(!)
|
||||||
//
|
//
|
||||||
// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647
|
// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647
|
||||||
// for details.
|
// for details.
|
||||||
|
|
|
@ -69,7 +69,7 @@ export default class WidgetUtils {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
return room.currentState.maySendStateEvent('im.vector.modular.widgets', me);
|
return room.currentState.maySendStateEvent('im.vector.modular.widgets', me);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ export default class WidgetUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
const room = MatrixClientPeg.get().getRoom(roomId);
|
const room = MatrixClientPeg.get().getRoom(roomId);
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
const startingWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
const startingWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
||||||
if (eventsInIntendedState(startingWidgetEvents)) {
|
if (eventsInIntendedState(startingWidgetEvents)) {
|
||||||
resolve();
|
resolve();
|
||||||
|
@ -195,7 +195,7 @@ export default class WidgetUtils {
|
||||||
function onRoomStateEvents(ev) {
|
function onRoomStateEvents(ev) {
|
||||||
if (ev.getRoomId() !== roomId) return;
|
if (ev.getRoomId() !== roomId) return;
|
||||||
|
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
const currentWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
const currentWidgetEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
||||||
|
|
||||||
if (eventsInIntendedState(currentWidgetEvents)) {
|
if (eventsInIntendedState(currentWidgetEvents)) {
|
||||||
|
@ -263,8 +263,8 @@ export default class WidgetUtils {
|
||||||
|
|
||||||
if (addingWidget) {
|
if (addingWidget) {
|
||||||
content = {
|
content = {
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
// For now we'll send the legacy event type for compatibility with older apps/riots
|
// For now we'll send the legacy event type for compatibility with older apps/elements
|
||||||
type: widgetType.legacy,
|
type: widgetType.legacy,
|
||||||
url: widgetUrl,
|
url: widgetUrl,
|
||||||
name: widgetName,
|
name: widgetName,
|
||||||
|
@ -277,7 +277,7 @@ export default class WidgetUtils {
|
||||||
WidgetEchoStore.setRoomWidgetEcho(roomId, widgetId, content);
|
WidgetEchoStore.setRoomWidgetEcho(roomId, widgetId, content);
|
||||||
|
|
||||||
const client = MatrixClientPeg.get();
|
const client = MatrixClientPeg.get();
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
return client.sendStateEvent(roomId, "im.vector.modular.widgets", content, widgetId).then(() => {
|
return client.sendStateEvent(roomId, "im.vector.modular.widgets", content, widgetId).then(() => {
|
||||||
return WidgetUtils.waitForRoomWidget(widgetId, roomId, addingWidget);
|
return WidgetUtils.waitForRoomWidget(widgetId, roomId, addingWidget);
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
|
@ -291,7 +291,7 @@ export default class WidgetUtils {
|
||||||
* @return {[object]} Array containing current / active room widgets
|
* @return {[object]} Array containing current / active room widgets
|
||||||
*/
|
*/
|
||||||
static getRoomWidgets(room: Room) {
|
static getRoomWidgets(room: Room) {
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
const appsStateEvents = room.currentState.getStateEvents('im.vector.modular.widgets');
|
||||||
if (!appsStateEvents) {
|
if (!appsStateEvents) {
|
||||||
return [];
|
return [];
|
||||||
|
@ -466,7 +466,7 @@ export default class WidgetUtils {
|
||||||
// safe to send.
|
// safe to send.
|
||||||
// We'll end up using a local render URL when we see a Jitsi widget anyways, so this is
|
// We'll end up using a local render URL when we see a Jitsi widget anyways, so this is
|
||||||
// really just for backwards compatibility and to appease the spec.
|
// really just for backwards compatibility and to appease the spec.
|
||||||
baseUrl = "https://riot.im/app/";
|
baseUrl = "https://app.element.io/";
|
||||||
}
|
}
|
||||||
const url = new URL("jitsi.html#" + queryString, baseUrl); // this strips hash fragment from baseUrl
|
const url = new URL("jitsi.html#" + queryString, baseUrl); // this strips hash fragment from baseUrl
|
||||||
return url.href;
|
return url.href;
|
||||||
|
|
|
@ -63,7 +63,7 @@ export function getEffectiveMembership(membership: string): EffectiveMembership
|
||||||
if (membership === 'invite') {
|
if (membership === 'invite') {
|
||||||
return EffectiveMembership.Invite;
|
return EffectiveMembership.Invite;
|
||||||
} else if (membership === 'join') {
|
} else if (membership === 'join') {
|
||||||
// TODO: Include knocks? Update docs as needed in the enum. https://github.com/vector-im/riot-web/issues/14237
|
// TODO: Include knocks? Update docs as needed in the enum. https://github.com/vector-im/element-web/issues/14237
|
||||||
return EffectiveMembership.Join;
|
return EffectiveMembership.Join;
|
||||||
} else {
|
} else {
|
||||||
// Probably a leave, kick, or ban
|
// Probably a leave, kick, or ban
|
||||||
|
|
|
@ -139,7 +139,7 @@ export function pillifyLinks(nodes, mxEvent, pills) {
|
||||||
* It's critical to call this after pillifyLinks, otherwise
|
* It's critical to call this after pillifyLinks, otherwise
|
||||||
* Pills will leak, leaking entire DOM trees via the event
|
* Pills will leak, leaking entire DOM trees via the event
|
||||||
* emitter on BaseAvatar as per
|
* emitter on BaseAvatar as per
|
||||||
* https://github.com/vector-im/riot-web/issues/12417
|
* https://github.com/vector-im/element-web/issues/12417
|
||||||
*
|
*
|
||||||
* @param {Node[]} pills - array of pill containers whose React
|
* @param {Node[]} pills - array of pill containers whose React
|
||||||
* components should be unmounted.
|
* components should be unmounted.
|
||||||
|
|
|
@ -65,7 +65,7 @@ export interface FromWidgetRequest extends WidgetRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles Riot <--> Widget interactions for embedded/standalone widgets.
|
* Handles Element <--> Widget interactions for embedded/standalone widgets.
|
||||||
*
|
*
|
||||||
* Emitted events:
|
* Emitted events:
|
||||||
* - terminate(wait): client requested the widget to terminate.
|
* - terminate(wait): client requested the widget to terminate.
|
||||||
|
|
|
@ -177,7 +177,7 @@ describe.skip('RoomSettings', () => {
|
||||||
'm.room.history_visibility': 50,
|
'm.room.history_visibility': 50,
|
||||||
'm.room.power_levels': 50,
|
'm.room.power_levels': 50,
|
||||||
'm.room.topic': 50,
|
'm.room.topic': 50,
|
||||||
// TODO: Enable support for m.widget event type (https://github.com/vector-im/riot-web/issues/13111)
|
// TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
|
||||||
'im.vector.modular.widgets': 50,
|
'im.vector.modular.widgets': 50,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -204,7 +204,7 @@ describe('editor/deserialize', function() {
|
||||||
expect(parts[3]).toStrictEqual({type: "newline", text: "\n"});
|
expect(parts[3]).toStrictEqual({type: "newline", text: "\n"});
|
||||||
expect(parts[4]).toStrictEqual({type: "plain", text: "```"});
|
expect(parts[4]).toStrictEqual({type: "plain", text: "```"});
|
||||||
});
|
});
|
||||||
// failing likely because of https://github.com/vector-im/riot-web/issues/10316
|
// failing likely because of https://github.com/vector-im/element-web/issues/10316
|
||||||
xit('code block with no trailing text and no newlines', function() {
|
xit('code block with no trailing text and no newlines', function() {
|
||||||
const html = "<pre><code>0xDEADBEEF</code></pre>";
|
const html = "<pre><code>0xDEADBEEF</code></pre>";
|
||||||
const parts = normalize(parseEvent(htmlMessage(html), createPartCreator()));
|
const parts = normalize(parseEvent(htmlMessage(html), createPartCreator()));
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
# run with PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true sh install.sh if chrome is already installed
|
# run with PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true sh install.sh if chrome is already installed
|
||||||
set -e
|
set -e
|
||||||
./synapse/install.sh
|
./synapse/install.sh
|
||||||
# local testing doesn't need a Riot fetched from master,
|
# local testing doesn't need a Element fetched from master,
|
||||||
# so not installing that by default
|
# so not installing that by default
|
||||||
yarn install
|
yarn install
|
||||||
|
|
Loading…
Reference in a new issue