* Fix a crash when removing persistent widgets
When a persistent widget is removed, multiple calls to updateShowWidgetInPip happen in succession as each of the widget stores emit updates. But by depending on this.state.persistentWidgetId at the time of the call rather than passing an update function to setState, this had the effect that the removal of the widget could be reverted in the component's state, and so it could end up passing the ID of a removed widget to WidgetPip.
* Re-public updateShowWidgetInPip so we don't change the interface
---------
Co-authored-by: Robin Townsend <robin@robin.town>
* Switch to linkify-react instead of our faulty implementation
Fixes a series of soft crashes where errors include "The node to be removed is not a child of this node."
* Improve types
* Fix types
* Update snapshots
* Add test
* Fix test
* should open new 1:1 chat room after leaving the old one
Signed-off-by: Ahmad Kadri <ahmad.kadri@nordeck.net>
* change the copyright
* update the test
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
---------
Signed-off-by: Ahmad Kadri <ahmad.kadri@nordeck.net>
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
Co-authored-by: Oliver Sand <oliver.sand@nordeck.net>
Co-authored-by: Dominik Henneke <dominik.henneke@nordeck.net>
* Fix viewing source of redacted events
Clicking 'View Source' in the context menu of a redacted event causes an error,
and the user gets no visible result.
This fixes <ViewSource /> to indicate that the source is unavailable when a
message has been redacted. The original source remains available.
<SyntaxHighlight /> requires a non-null string for its `content` prop, and, in
the case of redacted events, <ViewSource /> was passing `undefined`. This is
ultimately because redacting an event causes `MatrixEvent.clearEvent` to be
`undefined`, which <ViewSource /> wasn't checking.
Fixes https://github.com/vector-im/element-web/issues/24165
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Use correct highlight.js call
Previous call signature was deprecated.
See https://github.com/highlightjs/highlight.js/issues/2277
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Fix issue where thread dropdown would not correctly
* Write additional test for both issues
- Thread dropdown should be shown if there is any thread, even if not participated
- Thread list correctly updates after every change of the dropdown immediately
* Remove unnecessary PipContainer component
* Redesign the picture-in-picture window
* Add a hover effect to the controls
* Clarify that WidgetPip has call-specific behavior
* Fix blank timeline when thread root is UTD
* add test for pre join uisi checks and thread roots
* ts strict fix
* Update to timeline panel test
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fixes to TimelinePanel-test
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Improve decryption error UI by consolidating error messages and providing instructions when possible
* Fix TS strict errors
* Rename .scss to .pcss
* Avoid accessing clipboard, Cypress doesn't like it
* Display DecryptionFailureBar alongside other AuxPanel bars
* Add comments
* Add small margin off-screen for visible decryption failures
* Fix some more TS strict errors
* Add unit tests for DecryptionFailureBar
* Add button to resend key requests manually
* Remove references to matrix-js-sdk crypto internals
* Add hysteresis to visible decryption failures
* Add comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Don't create empty div if we're not showing resend requests button
* cancel updateSessions on unmount
* Update unit tests
* Fix lint and implicit any
* Simplify visible event bounds checking
* Adjust cypress test descriptions
* Add percy snapshots
* Update src/components/structures/TimelinePanel.tsx
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Add comments on TimelinePanel IState
* comment
* Add names to percy snapshots
* Show Resend Key Requests button when there are sessions that haven't already been requested via this bar
* We no longer request keys from senders
* update i18n
* update expected text in cypress test
* don't download keys ourselves, update device info in response to updates from client
* fix ts strict errors
* visibledecryptionfailures undefined handling
* Fix implicitAny errors
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
When the user logs in, we need to know if we should prompt them to verify from
an existing device, which means figuring out if the user has set up
cross-signing keys.
Currently we do this by explicitly downloading the user's keys and then trying
to fetch the cross-signing key. This is trickier to implement with the
rust-sdk, so instead let's use the newly-added `userHasCrossSigningKeys` in the
js-sdk.
* super WIP POC for merging virtual room events into main timeline
* remove some debugs
* c
* add some todos
* remove hardcoded fake virtual user
* insert overlay events into main timeline without resorting main tl events
* remove more debugs
* add extra tick to roomview tests
* RoomView test case for virtual room
* test case for merged timeline
* make overlay event filter generic
* remove TODOs from LegacyCallEventGrouper
* tidy comments
* remove some newlines
* test timelinepanel room timeline event handling
* use newState.roomId
* fix strict errors in RoomView
* fix strict errors in TimelinePanel
* add type
* pr tweaks
* strict errors
* more strict fix
* strict error whackamole
* update ROomView tests to use rtl
* Show day counts in call durations
Previously call durations over a day long would be truncated, for example displaying as '2h 0m 0s' instead of '1d 2h 0m 0s'.
* Fix strict mode errors
* Fix strings
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Minor code quality updates for ScrollPanel
and removal of unused function `scrollRelative` in MessagePanel (discovered when changing the scrollRelative types in ScrollPanel).
Changes:
* Clean up logging a bit, make it clearer
* Remove dead code
* Add extra types for tsc --strict compliance (not complete)
* Fix IDE warnings around spelling and missing awaits/promise return values
* Modernize usage of logging
* Fix more tsc --strict errors while we're here
* It's a good thing we have a linter
* Fix even more strict errors