* refactor: convert RoomViewStore from flux Store to standard EventEmitter
Parts of a series of experimental changes to improve the design of stores.
* Use a gen5 store for RoomViewStore for now due to lock handling
* Revert "Use a gen5 store for RoomViewStore for now due to lock handling"
This reverts commit 1076af071d997d87b8ae0b0dcddfd1ae428665af.
* Add untilEmission and tweak untilDispatch; use it in RoomViewStore
* Add more RVS tests; remove custom room ID listener code and use EventEmitter
* Better comments
* Null guard `dis` as tests mock out `defaultDispatcher`
* Additional tests
* Add an element_call_url config option
* Add a labs flag for Element Call video rooms
* Add Element Call as another video rooms backend
* Consolidate event power level defaults
* Remember to clean up participantsExpirationTimer
* Fix a code smell
* Test the clean method
* Fix some strict mode errors
* Test that clean still works when there are no state events
* Test auto-approval of Element Call widget capabilities
* Deduplicate some code to placate SonarCloud
* Fix more strict mode errors
* Test that calls disconnect when leaving the room
* Test the get methods of JitsiCall and ElementCall more
* Test Call.ts even more
* Test creation of Element video rooms
* Test that createRoom works for non-video-rooms
* Test Call's get method rather than the methods of derived classes
* Ensure that the clean method is able to preserve devices
* Remove duplicate clean method
* Fix lints
* Fix some strict mode errors in RoomPreviewCard
* Test RoomPreviewCard changes
* Quick and dirty hotfix for the community testing session
* Revert "Quick and dirty hotfix for the community testing session"
This reverts commit 37056514fbc040aaf1bff2539da770a1c8ba72a2.
* Fix the event schema for org.matrix.msc3401.call.member devices
* Remove org.matrix.call_duplicate_session from Element Call capabilities
It's no longer used by Element Call when running as a widget.
* Replace element_call_url with a map
* Make PiPs work for virtual widgets
* Auto-approve room timeline capability
Because Element Call uses this now
* Create a reusable isVideoRoom util
* Add Voice Broadcast labs setting and composer button
* Implement strict typing
* Extend MessageComposer-test
* Extend tests
* Revert some strict type fixex
* Convert FEATURES to enum; change case
* Use fake timers in MessageComposer-test
* bugfix: fix in-reply-to previews not disappearing when swapping rooms
This was caused by the fix for another issue:
- https://github.com/vector-im/element-web/issues/21462
Both bugs are now fixed with cypress regression tests.
* Linting
* Ensure the reply-to reappears when you click back
* Add jest test for replyTo in RVS
* Linting
* add sign out of current device section in device details
* lint
* add sign out cta for other sessions
* test other device sign out
* add pending sign out loader
* tidy
* fix strict error
* use gap instead of nbsp
* use more specific assertions in tests, tweak formatting
* tweak test
* trigger verification of other devices
* add sign out of current device section in device details
* fix classname
* lint
* strict type fix
* fix test
* improve mocked VerifReq
* Add labs flag for sliding sync; add sliding_sync_proxy_url to config.json
* Disable the labs toggle if sliding_sync_proxy_url is not set
* Do validation checks on the sliding sync proxy URL before enabling it in Labs
* Enable sliding sync and add SlidingSyncManager
* Get room subscriptions working
* Hijack renderSublists in sliding sync mode
* Add support for sorting alphabetically/recency and room name filters
* Filter out tombstoned rooms; start adding show more logic
list ranges update but the UI doesn't
* update the UI when the list is updated
* bugfix: make sure the list sorts numerically
* Get invites transitioning correctly
* Force enable sliding sync and labs for now
* Linting
* Disable spotlight search
* Initial cypress plugins for Sliding Sync Proxy
* Use --rm when running Synapse in Docker for Cypress tests
* Update src/MatrixClientPeg.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/settings/controllers/SlidingSyncController.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Travis Ralston <travisr@matrix.org>
* WIP add room searching to spotlight search
* Only read sliding sync results when there is a result, else use the local cache
* Use feature_sliding_sync not slidingSync
* Some review comments
* More review comments
* Use RoomViewStore to set room subscriptions
* Comment why any
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix cypress docker abstraction
* Iterate sliding sync proxy support
* Stash mostly functional test
* Update sliding sync proxy image
* i18n
* Add support for spaces; use list ID -> index mappings
- Mappings are more reusable and easier to understand than
racing for index positions.
- Register for all spaces immediately on startup.
* When the active space is updated, update the list registration
* Set spaces filter in the correct place
* Skeleton placeholder whilst loading the space
* Filter out spaces from the room list
* Use the new txn_id promises
* Ensure we actually resolve list registrations
* Fixmatrix-org/sliding-sync#30: don't show tombstoned search results
* Remove unused imports
* Add SYNCV3_SECRET to proxy to ensure it starts up; correct aliases for SS test
* Add another basic sliding sync e2e test
* Unbreak netlify
* Add more logging for debugging duplicate rooms
* If sliding sync is enabled, always use the rooms result even if it's empty
* Drop-in copy of RoomListStore for sliding sync
* Remove conditionals from RoomListStore - we have SlidingRoomListStore now
* WIP SlidingRoomListStore
* Add most sliding sync logic to SlidingRoomListStore
Still lots of logic in RoomSublist. Broken things:
- Join count is wrong completely.
- No skeleton placeholder when switching spaces.
* Migrate joined count to SS RLS
* Reinstate the skeleton UI when the list is loading
* linting
* Add support for sticky rooms based on the currently active room
* Add a bunch of passing SS E2E tests; some WIP
* Unbreak build from git merge
* Suppress unread indicators in sliding sync mode
* Add regression test for https://github.com/matrix-org/sliding-sync/issues/28
* Add invite test flows; show the invite list
The refactor to SS RLS removed the invite list entirely.
* Remove show more click as it wasn't the bug
* Linting and i18n
* only enable SS by default on netlify
* Jest fixes; merge conflict fixes; remove debug logging; use right sort enum values
* Actually fix jest tests
* Add support for favourites and low priority
* Bump sliding sync version
* Update sliding sync labs to be user configurable
* delint
* To disable SS or change proxy URL the user has to log out
* Review comments
* Linting
* Apply suggestions from code review
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/stores/room-list/SlidingRoomListStore.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Review comments
* Add issue link for TODO markers
* Linting
* Apply suggestions from code review
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* More review comments
* More review comments
* stricter types
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
* scroll to filtered list from security recommendations
* test sessionmanager scroll to
* stable snapshot
* fix strict errors
* prtidy
* dont show security rec section when only curent session is unverified
* scroll to filtered list from security recommendations
* test sessionmanager scroll to
* stable snapshot
* fix strict errors
* prtidy
* use smooth scrolling
* Improve accessibility and testability of Tooltip
Adding a role to Tooltip was motivated by React Testing Library's
reliance on accessibility-related attributes to locate elements.
* Make the ReadyWatchingStore constructor safer
The ReadyWatchingStore constructor previously had a chance to
immediately call onReady, which was dangerous because it was potentially
calling the derived class's onReady at a point when the derived class
hadn't even finished construction yet. In normal usage, I guess this
never was a problem, but it was causing some of the tests I was writing
to crash. This is solved by separating out the onReady call into a start
method.
* Rename 1:1 call components to 'LegacyCall'
to reflect the fact that they're slated for removal, and to not clash
with the new Call code.
* Refactor VideoChannelStore into Call and CallStore
Call is an abstract class that currently only has a Jitsi
implementation, but this will make it easy to later add an Element Call
implementation.
* Remove WidgetReady, ClientReady, and ForceHangupCall hacks
These are no longer used by the new Jitsi call implementation, and can
be removed.
* yarn i18n
* Delete call map entries instead of inserting nulls
* Allow multiple active calls and consolidate call listeners
* Fix a race condition when creating a video room
* Un-hardcode the media device fallback labels
* Apply misc code review fixes
* yarn i18n
* Disconnect from calls more politely on logout
* Fix some strict mode errors
* Fix another updateRoom race condition
Should fix https://github.com/vector-im/element-web/issues/23014
With only a 5ms buffer previously it was possible for Jest to get overwhelmed with the 1500 tests it needs to run. We raise this to 20ms to give extra time to settle.
Even with the high sleep times this won't be the longest running test, so should be fine.
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix useSmoothAnimation enablement not working properly by getting rid of it
Passing duration=0 is more logical and less superfluous
* Refactor UploadBar to handle state more correctly
* Change ProgressBar to new useSmoothAnimation signature and default animated to true for consistency
* Add type guard
* Make types stricter
* Write tests for the ProgressBar component
* Make the new test conform to tsc --strict
* Update UploadBar.tsx
* Update UploadBar.tsx
* Update UploadBar.tsx
* Switch tooltips to use React Portals
* Remove redundant React key to simplify reconciliation
* Fix cleanup and it.each test
* Update snapshots due to style order difference
* add expandable device details to session list
* test device expansion in filtered list
* test expanded device id management from sessionmanager tab
* i18n
* update snapshot
* update snapshots
* use css instead of br
* add device filtering
* improve dropdown styling
* test device filtering
* update type imports
* fix types
* security card margin
* more specific type for onFilterOptionChange
* split current device section into component
* add dropdown button for currentsession device details
* test currentdevicesection
* remove unnecc beforeEach
* update type imports
* i18n and lint
* add security card and style
* deprecate warning and verified svgs that use hard coded color
* style icons, test
* i18n
* stylelint
* redo lost lint fixes
* fix svg ref
* actually fix svg
* fix stupid copy pasting
* use rgba for e2e light variations
* add security card and style
* deprecate warning and verified svgs that use hard coded color
* style icons, test
* i18n
* stylelint
* fix svg ref
* actually fix svg
* fix stupid copy pasting
* use rgba for e2e light variations
* use device security card in current session section
* lint
* update snapshot test after dev merge
* add session manager tab to user settings
* fussy import ordering
* i18n
* basic sorted list outline
* rename to filtered device list
* exclude current device session from other sessions list
* test other sessions section
* extract deletedevices logic into util fn
* unit test deleteDevices
* test devicespanel device deletion
* remove debug logs
* i18n
* assert more on deleteMultipleDevices calls
* add session manager tab to user settings
* fussy import ordering
* i18n
* extract device fetching logic into hook
* use new extended device type in device tile, add verified metadata
* add current session section, test
* tidy
* update types for DeviceWithVerification
* Move pin drop out of labs (PSG-664)
Signed-off-by: Johannes Marbach <johannesm@element.io>
* Regenerate strings
Signed-off-by: Johannes Marbach <johannesm@element.io>
* redesign device tile info
* test DeviceTile except for broken date mocking
* mock dates the nice way, test lastactivity in device tile
* tweak spacing style
* update comment style in rethemendex
* i18n
* Remove Add Space button in RoomListHeader when user cannot createSpaces
* Reuse the same booleans as SpaceContextMenu
* Code review fixes
* Fix test for standard case
* Refactor tests and add more
* Test the PlusMenu, where the bug originally was
* Add tests for plus menu
* Refactor tests
* add type in functions and use DMRoomMap#setShared
* use of wrapInMatrixClientContext
* Trigger CI
* Ignore enzyme deprecation in RoomListHeader-test.tsx
Co-authored-by: Estelle Comment <estelle.comment@gmail.com>
Co-authored-by: mcalinghee <mcalinghee.dev@gmail.com>
Co-authored-by: Michael Weimann <michaelw@matrix.org>
* Spike AXE A11Y testing in Cypress
* Fix NewRoomIntro breaking html/aria list rules
* Fix HeaderButtons breaking aria role semantics rules
* missing type
* Switch left panel from aside to nav and include space panel
* Give the page a main heading of the room name when viewing a room
* Use header landmark on RoomHeader
* Improve aria attributes on composer when autocomplete is closed
* Fix aria-owns on RoomHeader
* Give Spinner an aria role
* Give server picker help button an aria label
* Improve auth aria attributes and semantics
* Improve heading semantics in use case selection screen
* Fix autocomplete attribute to be valid
* Fix heading semantics on login page
* Improve Cypress axe testing
* Add axe tests
* Stop synapse after the timeline tests
* Await spinners to fade before percy snapshotting timeline tests
* Improve naming of plugin
* Update snapshots
* Fix accidental heading change
* Fix double synapse stoppage
* Fix Cypress timeline avatar assertions to be DPI agnostic
* Fix aria attributes on date separators
* delint
* Update snapshots
* Revert style change
* Skip redundant call
* Port remaining Puppeteer tests over to Cypress
* Remove puppeteer support files
* Fix lifecycle matrixclientpeg setup race condition
* Alternative solution to the lifecycle problem
* Dismiss the notifications toast
* unit test eventTriggersUnreadCount
* Update test/Unread-test.ts
Co-authored-by: Michael Weimann <michaelw@matrix.org>
Co-authored-by: Michael Weimann <michaelw@matrix.org>
* extract preventDefaultWrapper into utils
* add click handling to beacon list item
* add click handling to dialog sidebar
* focus in on beacons when clicked in list
* stylelint
* fussy import ordering
* test beacon focusing in beaocnviewdialog
* live location without map POC
* styles
* force map tiles to show no map for test build
* check latestlocationstate exists
* just use loading style map fallback when cant display map
* style map error for tile view
* set pointer cursor when map error is clickable
* test mbeaconbody with map display error, lint
* lint more good
* remove changes for first attempt tile
* make maperror test id more accurate
* fussy import ordering
* PR tweaks
* add role=presentation to backdrop panle image
* replace img icons with svg components in InviteDialog
* replace img icon with svg component
* img icons to svg icons in MImageBody
* remove log
* img icon to svg in SecurityRoomSettingsTab
* use shared error message for media message tiles
* remove nbsp
* dont snapshot test entire rtl render response
* use aria-describedby for uploadconfirm preview
* use aria-labelledby instead
* Add option to display tooltip on link hover
This makes it possible for platforms like Electron apps, which lack
a built-in URL preview in the status bar, to enable tooltip previews
of links.
Relates to: vector-im/element-web#6532
Signed-off-by: Johannes Marbach <johannesm@element.io>
* Gracefully handle missing platform
* Use public access modifier
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Use exact inequality
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Document getAbsoluteUrl
* Appease the linter
* Clarify performance impact in comment
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Use URL instead of anchor element hack
* Wrap anchor in tooltip target and only allow focus on anchor
* Use optional chaining
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Use double quotes for consistency
* Accumulate and unmount tooltips and extract tooltipify.tsx
* Fix indentation
* Blur tooltip target on click
* Remove space
* Mention platform flag in comment
* Add (simplistic) tests
* Fix lint errors
* Fix lint errors ... for real
* Replace snapshot tests with structural assertions
* Add missing semicolon
* Add tooltips in link previews
* Fix copyright
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Early implementation of module API surface + functions for ILAG module
* Wire up dialog functions and ILAG-needed surface
* Ensure component renders for modules get overridden
* Respond to changes from module API interface
* Use a real module-api dependency
* Update for new Dialogs interface
* Add support for getConfigValue from module API
* Update the remainder of the module API interface
* Docs & cleanup
* Add some unit tests around module stuff
Needs end-to-end tests still.
* Appease early linters
* Break import cycles by not directly depending on Lifecycle
* Appease the linter
* Fix bad merge
* move getForwardableBeacon to beacon utils
* move event transform type up
* add helper to get shareable-as-locaion events
* use getShareableLocationEvent in MessageContextMenu
* test opening in maplink
* fix bad copy pasted tests
* Fix calls on homeservers without the unstable thirdparty endpoints
Calling that endpoint throws an error and aborts the entire call. We do
check if an empty list or null is returned by that endpoint everywhere,
so returning an empty list simulates the thirdparty stuff just not being
found.
Checking for "this.supportsSipNativeVirtual" doesn't necessarily work,
since that might not be set yet and as such breaks calls that rely on
this functionality working.
fixes https://github.com/vector-im/element-web/issues/21680
Signed-off-by: Nicolas Werner <nicolas.werner@hotmail.de>
* Address review comments
* Make log message a warning
Signed-off-by: Nicolas Werner <nicolas.werner@hotmail.de>
* Reduce video rooms log spam
If you forget to call preventDefault in widget action handlers,
matrix-widget-api logs a bunch of errors complaining that the action is
unsupported/unhandled, even if it isn't.
* Fix tests
* redact beacon locations on redaction
* redact beacon locations on beacon info redaction
* fussy import ordering
* use real fake redaction in beaconbody test
* Revert "Prevent new composer from overflowing from non-breakable text (#8829)"
This reverts commit 57dff8131c.
* Revert "Fix scroll jump issue with the composer (#8791)"
This reverts commit 5167521ea4.
* Revert "Fix scroll jump issue with the composer (#8788)"
This reverts commit f568a76dc6.
* Revert "Revert link color change in composer (#8784)"
This reverts commit aedbeb2995.
* Revert "Improve composer visiblity (#8578)"
This reverts commit f14374a51c.
* Show chat panel when opening a video room with unread messages
* Remove unnecessary calls to private methods in tests
* Make room ID mandatory when toggling the right panel
* Restore the isViewingRoom check
* Test RightPanelStore
* Make the constructor private again
* Add even more tests
* Fix onReady
* handle beacon location events in ForwardDialog
* add transformer for forwarded events in MessageContextMenu
* remove canForward
* update snapshots for beacon model change
* add comments
* fix bad copy pasted test
* add test for beacon locations
* Implement searching for public rooms and users in new search experience
* Implement loading indicator for spotlight results
* Moved spotlight dialog into own subfolder
* Extract search result avatar into separate component
* Build generic new dropdown menu component
* Build new network menu based on new network dropdown component
* Switch roomdirectory to use new network dropdown
* Replace old networkdropdown with new networkdropdown
* Added component for public room result details
* Extract hooks and subcomponents from SpotlightDialog
* Create new hook to get profile info based for an mxid
* Add hook to automatically re-request search results
* Add hook to prevent out-of-order search results
* Extract member sort algorithm from InviteDialog
* Keep sorting for non-room results stable
* Sort people suggestions using sort algorithm from InviteDialog
* Add copy/copied tooltip for invite link option in spotlight
* Clamp length of topic for public room results
* Add unit test for useDebouncedSearch
* Add unit test for useProfileInfo
* Create cypress test cases for spotlight dialog
* Add test for useLatestResult to prevent out-of-order results
* Crude way of layering the waveform and seek bar
Not intended for production.
* Use a layout prop instead of something less descriptive
* Fix alignment properly, and play with styles
* Convert back to a ball
* Use `transparent` which makes NVDA happy enough
* Allow keyboards in the seek bar
* Try to make the clock behave more correctly with screen readers
MIDNIGHT
* Remove legacy export
* Remove redundant attr
* Appease the linter
* Remove all mentions of Piwik
* Kill off all consumer of the old Piwik Analytics module
* Simplify ModalManager interface
* i18n
* Attempt to fix old e2e tests
* Remove unused component
* Iterate PR
* Convert sticker end-to-end tests to Cypress
Reference materials:
* https://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/
* https://github.com/cypress-io/cypress/issues/136
* https://docs.cypress.io/api/commands/origin#Other-limitations
Ideally we'd be able to use `cy.origin()` to jump into the iframe, but it's explicitly not supported. Instead we disable web security as instructed by cypress because it's our only reasonable option here. Thankfully, disabling web security doesn't appear to remove the crypto libraries from the browser so we can still function in that respect.
Rationale for why we can't just serve the sticker picker off the app domain is included in the code.
* Appease the linter
* More linter appeasement
* Place room tiles with grid
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Set padding inside of name stack
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Remove overflow:hidden (to be cancelled)
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Replace text-align with margin
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Style invite failure dialog with display:grid
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Merge style rules of room tiles and tiles on invitation failure dialog
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Normalize avatar size for multiInviterError
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Set text overflow with ellipsis
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Use spacing variables
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Set narrow gap to nameStack
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Rename mx_InviteDialog_inviterErrorTile_error
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Create mx_InviteDialog_tile
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Set padding to room tiles only
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Remove space between name / userID and time (there is gap by default)
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Remove the margin from the last child
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Add support for MD / HTML in room topics
Setting MD / HTML supported:
- /topic command
- Room settings overlay
- Space settings overlay
Display of MD / HTML supported:
- /topic command
- Room header
- Space home
Based on extensible events as defined in [MSC1767]
Fixes: vector-im/element-web#5180
Signed-off-by: Johannes Marbach <johannesm@element.io>
[MSC1767]: matrix-org/matrix-spec-proposals#1767
* Fix build error
* Add comment to explain origin of styles
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Empty commit to retrigger build
* Fix import grouping
* Fix useTopic test
* Add tests for HtmlUtils
* Add slash command test
* Add further serialize test
* Fix ternary formatting
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Add blank line
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Properly mock SettingsStore access
* Remove trailing space
* Assert on HTML content and add test for plain text in HTML parameter
* Appease the linter
* Fix JSDoc comment
* Fix toEqual call formatting
* Repurpose test for literal HTML case
* Empty commit to fix CI
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Use updates stable relations from js-sdk
* Relations is now accessible on the Room instead
* Reuse more existing code and ditch confusing `isThreadRelation`
* Fix last usage of removed `isThreadRelation`
* Update tests to match removal of isThreadRelation
* Tweak method naming to closer match spec
* Fix missing method name change
* navigate to live location tile from left panel live warning
Signed-off-by: Kerry Archibald <kerrya@element.io>
* navigate to beacon tile from room live share warning
Signed-off-by: Kerry Archibald <kerrya@element.io>
* add cursor
Signed-off-by: Kerry Archibald <kerrya@element.io>
* Improve widet buttons behaviour and layout
Relates to vector-im/element-web#20506
See PSC-79
Signed-off-by: Michael Weimann <michaelw@matrix.org>
* Add AppTile tests
* test most basic paths in messageactionbar
Signed-off-by: Kerry Archibald <kerrya@element.io>
* tidy
Signed-off-by: Kerry Archibald <kerrya@element.io>
* use rtl for MessageActionBar test
Signed-off-by: Kerry Archibald <kerrya@element.io>
* make beacon_info events semi actionable
Signed-off-by: Kerry Archibald <kerrya@element.io>
* remove log
Signed-off-by: Kerry Archibald <kerrya@element.io>
* test thread exception for beacon
Signed-off-by: Kerry Archibald <kerrya@element.io>
* eat click events in beacon status to stop jumping from reply tile
Signed-off-by: Kerry Archibald <kerrya@element.io>
* set max width on beaconbody for render in thread panel