Add a paramter to make it a dot rather than a badge rather than mangling
it to a dot with CSS in EventTile. Move it to a place in the DOM that reflects
where it's actually supposed to sit rather than repositioning it with CSS.
Tweak sizes to match what figma says (8px everywhere for dots rather than 6px in
some places as it was).
* Don't reference the notification levels by colour
We're about to change what colours they are so either we'd have to rename
a bunch of constants. We may as well make things not reference what colour
anything is in the actual UI. Hopefully these constants are clear enough.
* Rename NotificationColor -> NotificationLevel
* Red -> Highlight
* Grey -> Notification
* Bold -> Activity
* Anywhere else that calls it 'color' -> 'level'
Also fixes some weird mixes of US & UK English.
It turns out this is referenced in... quite a lot of places, so this is
quite a large PR. It can't really be much smaller, sorry.
* One test rename & some hiding due to ts-ignore
* More hiding behind ts-ignore
* Damn you, @ts-ignore...
* Fix test CSS values
* Missed some colour -> level
Co-authored-by: Florian Duros <florianduros@element.io>
* Change other instances of variables renamed in suggestion
* Update new test for renames
---------
Co-authored-by: Florian Duros <florianduros@element.io>
It appears the bug with these tests was just that the MessageBuilder
wasn't setting the thread relation on the reply messages as this didn't
happen trying to repro it manually, so fix the builder and re-enable
the tests.
The flip side of this is that it implies buggy clients that don't
set thread relations properly will cause stuck notifs in Element Web.
I've filed this as https://github.com/element-hq/element-web/issues/26787
* Fix playwright result reporting for js-sdk upstream tests
Make the reporter job check out the react sdk explictly so it gets
the right thing when used from other workflows like the js-sdk.
* Remove c+ped lines from above that would have broken it
* Fix the state shown for call in rooms
We split out a separate state for 'missed' separate to 'ended' which
caused confusion as the state got set to this when it shouldn't have,
so calls that wouldn't have been shown as missed were.
Remove the csutom call state and just have the missed state as a
variant of the ended state. Re-order the if clauses so they hit the
right ones. Also don't pass the callState variable into renderContent()
which is a class method and so has access to the same info anyway.
* Fix test
* i18n (reorder only)
* Fix test
* Fix types
* Add test for legacy call event tile
There was a race condition somewhere which would cause a soft crash
of the whole app because WidgetPip here gets the currently active
widget given a widget ID and room, but this can race and be null.
Co-authored-by: Janne Mareike Koschinski <janne@kuschku.de>
* Use the room avatar as a placeholder in calls
Rather than the image for the user we're in a call with. This makes
it work correctly with virtual rooms easily since we'll get the
avatar for the correct room.
* Prettier
* TS strict errors
* More TS strict fixes
* More strict TS
* Prettier
* Even more TS strict
* more stricter
* Fix embedded Element Call screen sharing
Makes it a request in each direction rather than a request and reply
since replies to requests time out and so can't wait for user interaction.
* Fix tests
* Fix device selection in pre-join screen for Element Call video rooms
As per https://github.com/vector-im/element-call/pull/609
* Update unit test
* Lint
* Hold a media stream while we enumerate device so we can do so reliably.
This means we can remove the device fallback labels.
* i18n
* Remove unnecessary useState
* Fix fetching video devices when video muted
* Actually fix preview stream code
* Fix unit test now fallback is no longer a thing
* Test changing devices
* Initial doc for cypress tests
* Too many documents
* Typo
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add example
* Typo
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Update the name of the workflow in the workflow_run trigger as
it was changed when adding cypress tests.
This will upload the preview build after running the cypress tests:
unsure if this is what we want or not. The preview build will be
slower to appear, but it does sort of make sense to only get a
preview buuild if the tests pass. If not, we might be able to do
this by doing a repository dispatch after the preview build.
* A first, maybe working cypress test
Plus cypress plugins to manage synapses in docker containers
* Fix yaml
* This file is important
* try & find where it's put the artifact
* Download artifact to a directory
* pics or it didn't happen
* Add conditional, otherwise no artifacts on failure...
* Try increasing timeout
also actually give the test a name
* Try in chrome
* Get docker logs to see why it's failing
also document the chrome setting
* Try changing mode on homeserver.yaml
* debug
* More debugging
* more file permissions debugging
* ARGH
* more debug
* sigh
* Eugh, that's not how arguments work
* Add the option to really allow open registration
and remove debug logging / comment fixes
* failure to yaml
* Upload docker logs as artifacts
and temporarily remove contional to test
* Put the conditional back
* Upgrade types in end to end tests
to be compatible with fs-extra types
* Try reducing timeout a bit
also make password more... sensible
* Hex is not octal
* Remove file mode
Seems to be unnecessary since the signing key is perfectly fine
* Give the log files extensions
* Rename workflow file now it also does tests
* Add cypress scripts
* copyright headers
* Use ? operator
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Use develop synapse image
* Tidy up any remaining synapses after each spec run
Also:
* Move the synapseStart / synapseStop functions out to the top level
so they can be reused
* Add a tsconfig file
* Give the containers names
* Don't upload video on test pass
We don't upload it anyway so tell cypress not to so it can not
bother encoding them
* Enable linting on cypress files
and fix existing lint errors
* Type check cypress files
and make it pass the type checks, specifically:
* Upgrade sinon fake timers to a version that has the right types
* Set module resolution
* Type check cypress files separately
* Rename workflow file again
Probably better to just call it an element web build
* Don't plus + characters in container name
* Fix yaml
* Stream logs to file
* Add note to end to end tester to sya what's been ported
* Put docker rm in finally block
Co-authored-by: Travis Ralston <travisr@matrix.org>
We didn't update whether URL previews should be enabled when encryption
was enabled in a room, so when you create a room (or enable encryption)
it starts off with URL previews using the setting for non-e2e rooms
untilyou switch rooms / refresh.
* Fix freeze/crash when 1:1 calling
Don't log call feed objects because they reference the client and
it causes the client to get logged too.
* Log purpose too
* Fix freeze/crash when 1:1 calling
Don't log call feed objects because they reference the client and
it causes the client to get logged too.
* Log purpose too
* Clean up asserted identity code
Add logging when we received asserted identity events but ignore them,
and just disable the whole code path if it's not enabled in the config.
* Actually, put the check back - better to check anyway
* Update to ? syntax
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Put back lost return
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix another freeze on room switch
This switches permalinks to use the batch state update event and
removes the incremental updates, as commented. We now spend, on my
profiling, about 450ms in setOutOfBandMembers itself and another
120ms in permalinks.
Fixes https://github.com/vector-im/element-web/issues/21127
* Just bind to the currentstate state updates
* Add slash command to switch to a room's virtual room
* Update to new interface
* Return null if no virtual user
* Throw newTranslateableError
* Types
* Disable tovirtual if virtual rooms not supported
The profiles point to some huge object being logged in VideoFeed's
playMedia() method, but this is the only log line added recently.
I can't see how this could possibly log anything huge, but not
sure what else to try, so let's try removing this as an experiment.
The bug it was added to diagnose seems to be fixed now anyway.
For https://github.com/vector-im/element-web/issues/21181
* Fix virtual / native room mapping on call transfers
By just sending them through the same code path as regular calls.
Also re-do the tests & add a test for transfer specifically.
* Optional arg
* Types
* Add an end-to-end test for stickers
* More logs on login
* Wait for spinners to go away
* Factor out spinner waiting as it seems useful
* Move stickers to the end
* More waiting
* When all else fails... add sleeps
* Waiting for the server picker to appear seems to work..?
* Typos
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
* remove commented code from registration usecase
Co-authored-by: J. Ryan Stinnett <jryans@gmail.com>
* Use the shared secret registration API directly
rather than invoking the synapse module to do it. It's probably
a bit simpler, if anything, and allows for synapse to be run in
a separate container (or rather, avoids the javascript having to have
a copy of synapse source & server config).
* Make registration secret required
Update commander (8 major versions!) to get requiredOption
* Wrong options object :/
And take it off hold if the dialog is cancelled.
Also changes the onFinished signature of invitedialog which claimed
to return an array of strings but never did, so now it just returns
a boolean.
* Use PR number directly in netlify github action
Looks like we can get the PR number for the workflow run that triggered
the workflow_run event, so there's no need for the massive faff we were
doing here.
* No need to create pr.json anymore
Strip RLO & LRO chars from display names when rendering text for
member events.
See https://github.com/matrix-org/matrix-js-sdk/pull/1992 - also
necessary here because we use the display name in the event content
rather than from the member object sanitised by the js-sdk.