* Rewrite doesRoomOrThreadHaveUnreadMessages to use the receipt rewrite from js-sdk
* Remove unit tests that rely on receipt timestamps
Previously, if we found a receipt for an unknown event, we would use the
receipt timestamp and declare all events before that time to be read.
Now, we ignore such "dangling" receipts until we find the event they
refer to.
This new behaviour is more correct, but does lead to more messages being
considered unread.
This commit deletes tests that checked for the old behaviour.
* Check for a missing thread in determineUnreadState
* Fix incorrect way to find room timeline
* More realistic test setup to support new receipt code
* Update snapshot to expect a room to be unread when there are no receipts
* Formatting fixes
* Update snapshot to show menu and notif button
* Disable some flaky tests
* Disable some flaky tests
* Fix test to make a threaded receipt for an event that is actually in the thread
---------
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Add menu for legacy and element call in 1:1 rooms
This allows to also initiate element call calls in 1:1 rooms
Signed-off-by: Timo K <toger5@hotmail.de>
* fix tests
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Update RoomSummaryCard navigation links
* Fix tests
* remove unneeded test
* "@vector-im/compound-web": "0.8.0"
* Fix: search button no transition on hover
* Fix: disabled invite option is not reflected in UI
* test canInviteTo
* update snapshots for CW 0.8.1
* unit test inviteToRoom
* unit test tagRoom
* add member link to roomsummarycard when using legacy room header
* use onChange instead of onClick for ToggleMenuItem favourite room
* update selectors in cypress tests
* always show people menu item
* add hover style to close button
* add padding around room name
* prettier
---------
Co-authored-by: Kerry Archibald <kerrya@element.io>
* Update room summary card header
* test coverage for public room label
* test coverage for public room label (#11841)
* fix encrypted badge selector in cypress/crypto.spec
---------
Co-authored-by: Kerry <kerrya@element.io>
* Fix string ref issue
* Implement unreachable state
* Fix eslint failure
* Fix i18n
* Fix i18n again
* Write cypress test
* Write jest test
* Write more jest tests
* Update method name
* Use unstable prefix
* Always use prefix
This is never to going to be in the spec so always use the io.element
prefix
* Update tests
* Remove redundant code from cypress test
* Use unstable prefix
* Refactor code
* Remove supressOnHover prop
* Remove sub-text label
* Join lines
* Remove blank line
* Add jsdoc
* initial
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanup1
Signed-off-by: Timo K <toger5@hotmail.de>
* bring back call timer
Signed-off-by: Timo K <toger5@hotmail.de>
* more cleanup and test removals
Signed-off-by: Timo K <toger5@hotmail.de>
* remove event
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanups and minor fixes
Signed-off-by: Timo K <toger5@hotmail.de>
* add matrixRTC to stubClient
Signed-off-by: Timo K <toger5@hotmail.de>
* update tests (some got removed)
The removal is a consequence of EW now doing less call logic.
More logic is done by the js sdk (MatrixRTCSession)
And therefore in EC itself.
Signed-off-by: Timo K <toger5@hotmail.de>
* cleanups
Signed-off-by: Timo K <toger5@hotmail.de>
* mock the session
Signed-off-by: Timo K <toger5@hotmail.de>
* lint
Signed-off-by: Timo K <toger5@hotmail.de>
* remove GroupCallDuration
Signed-off-by: Timo K <toger5@hotmail.de>
* review and fixing tests
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Update copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add icon to late event timestamp
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use Compound tooltips on MessageTimestamp to improve UX of date time discovery
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Show io.element.late_event in MessageTimestamp when known
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid needing new Compound changes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move groupers into their own directory
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Refactor date separator code to be more generic
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Render timeline separator for late event groups
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix date used in copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move groupers into their own directory
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update copy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add comments
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add comments
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* test persistCredentials without a pickle key
* test setLoggedIn with pickle key
* lint
* type error
* extract token persisting code into function, persist refresh token
* store has_refresh_token too
* pass refreshToken from oidcAuthGrant into credentials
* rest restore session with pickle key
* retreive stored refresh token and add to credentials
* extract token decryption into function
* remove TODO
* very messy poc
* utils to persist clientId and issuer after oidc authentication
* add dep oidc-client-ts
* persist issuer and clientId after successful oidc auth
* add OidcClientStore
* comments and tidy
* expose getters for stored refresh and access tokens in Lifecycle
* revoke tokens with oidc provider
* test logout action in MatrixChat
* comments
* prettier
* test OidcClientStore.revokeTokens
* put pickle key destruction back
* comment pedantry
* working refresh without persistence
* extract token persistence functions to utils
* add sugar
* implement TokenRefresher class with persistence
* tidying
* persist idTokenClaims
* persist idTokenClaims
* tests
* remove unused cde
* create token refresher during doSetLoggedIn
* tidying
* also tidying
* OidcClientStore.initClient use stored issuer when client well known unavailable
* test Lifecycle.logout
* update Lifecycle test replaceUsingCreds calls
* fix test
* add sdkContext to UserSettingsDialog
* use sdkContext and oidcClientStore in session manager
* use sdkContext and OidcClientStore in generalusersettingstab
* tidy
* test tokenrefresher creation in login flow
* test token refresher
* Update src/utils/oidc/TokenRefresher.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* use literal value for m.authentication
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* improve comments
* fix test mock, comment
* typo
* add sdkContext to SoftLogout, pass oidcClientStore to logout
* fullstops
* comments
* fussy comment formatting
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Use Compound tooltips on MessageTimestamp to improve UX of date time discovery
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Show io.element.late_event in MessageTimestamp when known
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid needing new Compound changes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update compound-web
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update identifiers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add default desktop_builds and mobile_builds into SdkConfig.DEFAULTS
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid rendering app download buttons if config sets to `null`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Disable app download onboarding task if config has no apps to download
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests and update types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix: Details element wide clickable area
* LogoutDialog-test.tsx snapshot updated
* Fixed open state clickable area for dropdowns
* Advanced changed to advanced
---------
Co-authored-by: Manan Sadana <manan.sadana@cnhteam.onmicrosoft.com>
Co-authored-by: Florian Duros <florianduros@element.io>
* Mock `CryptoApi.getUserVerificationStatus` instead of `checkUserTrust`
* Use `CryptoApi.getUserVerificationStatus` instead of `checkUserTrust` in `UserInfo.DeviceItem`
* Use `CryptoApi.getUserVerificationStatus` instead of `checkUserTrust` in `UserInfo.DevicesSection`
* Use `CryptoApi.getUserVerificationStatus` instead of `checkUserTrust` in `UserInfo.BasicUserInfo`
* Pass `isUserVerified` props to `BasicUserInfo` children
* Removed remaining calls to `checkUserTrust` in `UserInfo-test.tsx`
* Review changes
* Update comments
* Display spinner only when crypto is initialized
* Fix duplicate `cryptoEnabled`
* Remove misleading comment in `DevicesSection`
* Fix: Clicking on pile opens members list
* onClick used on Accessible Component
* Updated snapshots for testing
* Snapshots updated after merging
---------
Co-authored-by: Manan Sadana <manan.sadana@cnhteam.onmicrosoft.com>
* Don't look for 'Updating space' message in joinrulesettings test
as it may disappear too quickly for us to see.
Fixes https://github.com/vector-im/element-web/issues/25625
* Provide mock function to avoid warning in JoinRuleSettings test
* Use `MatrixClient.CryptoApi.getUserVerificationStatus` instead of `MatrixClient.checkUserTrust` in `MemberTile.tsx`
* Add tests to `MemberTile.tsx`
* Use `mocked` instead of `spyOn`
* SecureBackupPanel: replace `isKeyBackupTrusted`
`MatrixClient.isKeyBackupTrusted` -> `CryptoApi.isKeyBackupTrusted`
* SecureBackupPanel: replace `getKeyBackupEnabled`
`MatrixClient.getKeyBackupEnabled` -> `CryptoApi.getActiveSessionBackupVersion`
* SecureBackupPanel: replace `deleteKeyBackupVersion`
`MatrixClient.deleteKeyBackupVersion` -> `CryptoApi.deleteKeyBackupVersion`
* Do not show session count if we have no info
We shouldn't say "zero sessions to back up" if we don't know.
* SecureBackupPanel: distinguish between server and active backup
* SecureBackupPanel: stop calling `checkKeyBackup`
`checkKeyBackup` will start key backups if they aren't already running. In my
not-so-humble opinion, the mere act of opening a settings panel shouldn't change anything.
* fix SecurityUserSettingsTab test
* Escape placeholder before injecting it into the style
In particular this adds escaping for backslashes which was previously missing.
* Update snapshots
* Add tests
* Use new crypto-api for cross user verification
* update verification flow with new APIs
* Replace some calls to `checkUserTrust`
A start on https://github.com/vector-im/crypto-internal/issues/147
* Enable cypress tests
* update tests
* Delegate decisions on event shields to the js-sdk
* rerender after editing events
This is required because a transition from "valid event" to "unencrypted event"
no longer triggers a state change, so the component does not render
itself. Previously, this would be a transition from `verified:
E2EState.Normal` to `verified: null`.
* Update tests
* prettier
* Test coverage
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Implement denied request mask and logic
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
* refactor / fix deny requests isues
* fix tests create denied message test
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
* add another test for the primary action for denied request
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
* fix linter issues
Signed-off-by: nurjinn jafar <nurjin.jafar@nordeck.net>
* regenerate translation
Signed-off-by: nurjinn jafar <nurjin.jafar@nordeck.net>
* fix translation and minor refactoring
Signed-off-by: nurjinn jafar <nurjin.jafar@nordeck.net>
* segment into 4
* Remove parallel from Cypress command to avoid talking to Cypress Cloud
* Re-add --parallel flag for Percy
* Prevent event propagation when clicking icon buttons (#11515)
* Prevent event propagation when clicking icon buttons
* Inhibit view user on click behaviour for room header face pile
* Update snapshot
* Add a 'm.relates_to' to edits in receipt tests and disable failing tests (#11501)
* Add a 'm.relates_to' to edits in receipt tests
* Disable a test that fails with real edits
* Wait for the room to be read after we mark it as read
* Skip tests that are failing because of inconsistencies between local and CI behaviour
* Allow creating public knock rooms (#11481)
* Allow creating public knock rooms
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
* Apply PR feedback
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
* Apply PR feedback
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
---------
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
* Collect `console.debug` logs during cypress tests (#11478)
In order for the logs collected by cypress to actually be useful, we really
need `cons:debug`.
* Migrate more strings to translation keys (#11522)
* Only show Search button in RoomSummaryCard if new room UI enabled (#11524)
* Only show Search button in RoomSummaryCard if new room UI enabled
* Update snapshot
* Update vector-im (#11526)
* Update vector-im
* Update snapshots of Compound Avatars
* Update snapshots of Compound Avatars
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Migrate more strings to translation keys (#11530)
* Fix regression around FacePile with overflow (#11527)
* Work around compound-web AvatarStack not applying overlap to non-Avatars
* Fix FacePile overflow tile not being layed out correctly
* Use RoomStateEvent.Update for knocks (#11516)
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
* Cypress tests for event shields (#11525)
* Factor downloadKey out to `utils.ts`
* Add a new `describe` block for event shields
* create a beforeEach block
* Cypress tests for event shields
* Document how to match the CI config for Cypress (#11531)
* Document how to match the CI config for Cypress
* Clarify language about needing Chrome
* Move Cypress info into the Cypress-specific docs
* Migrate more strings to translation keys (#11532)
---------
Signed-off-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
Signed-off-by: nurjinn jafar <nurjin.jafar@nordeck.net>
Signed-off-by: Charly Nguyen <charly.nguyen@nordeck.net>
Co-authored-by: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com>
Co-authored-by: Kerry Archibald <kerrya@element.io>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
Co-authored-by: Johannes Marbach <johannesm@element.io>
Co-authored-by: Germain <germains@element.io>
Co-authored-by: Charly Nguyen <1422657+charlynguyen@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Add support for rendering custom emojis in reactions
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Include custom reaction short names in tooltips
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Use custom reaction shortcode for accessibility
This uses the shortcode in the following places:
* The aria-label of the reaction buttons
* The alt text for the reaction image
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Remove explicit instantiation of `customReactionName` variable and add types
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Put custom reaction images behind a labs flag
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Use UnstableValue for finding the shortcode
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Move calculation of whether to render custom reaction images up to ReactionRow
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Make alt text more friendly when custom reaction doesn't have shortcode
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Add test for ReactionsRowButton
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Apply suggestions from code review
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
* Don't use Optional
Signed-off-by: Sumner Evans <sumner@beeper.com>
* Fix ReactionsRowButton test
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Signed-off-by: Sumner Evans <sumner@beeper.com>
---------
Signed-off-by: Sumner Evans <sumner@beeper.com>
Co-authored-by: Tulir Asokan <tulir@maunium.net>
Co-authored-by: Šimon Brandner <simon.bra.ag@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix performance issues with useRoomMembers
With the current implementation it would create a new function, with leading: true, rendering the whole throttling useless
* Add public room indicator
* Format room members count better
* Add public room test
* Add search to room summary card
* Update settings UI
* Update snapshot
* Remove default title attribute
There is a little-known feature where, if you have verified a user (eg, via the
emoji game), then when you mouse-over a message that they sent, it gets a green
highlight.
We also show a brown bar sometimes, and according to the CSS there may be a
yellow bar too?
Very few people seem to know this exists, and even if you do know it exists
nobody seems to understand what exactly the various colours are supposed to be.
So, rather than porting this magic mystery feature to Rust Crypto, let's rip it
out.
* Add E2E status in room header
* Clearer logic for dmRoomList
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Add test for E2E shield
* Remove dead code
---------
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Add face pile to rooms
* Migrate FacePile to use Compound
* Fix CI
* Use FacePile component in room header
* Add facepile tests
* Make dead code CI happy
* Lint
* Fix tests
* Fix CSS selectors
* Update room face pile snapshot
* Use useMemo instead of useState and useEffect
* Remove unused imports
* Update snapshot
* Update snapshot
* Use consistent colouring of username with avatar
* Upgrade Compound to fix Firefox issue
* Use the approapriate color shade for usernames
* Use the approapriate color shade for usernames
* Upgrade Compound
* Fix tests
* Move avatar to new compound implementation
* Make space avatars square
* Remove reference to the avatar initial CSS class
* remove references to mx_BaseAvatar_image
* Fixe test suites
* Fix accessbility violations
* Add ConfirmUserActionDialog test
* Fix tests
* Add FacePile test
* Fix items clipping in members list
* Fix user info avatar sizing
* Fix tests
* Add Voice and Video call in room header
* Add thread icon in room header
* Add room notification icon to room header
* Fix linting
* Add tests for buttons in room header
* Add JSDoc
* micro optimisations
* Fix call disabled when hanging up
* Fix disabled state change on members count update
* Exclude functional members from members count optionally
* i18n
* Use Intl for names of languages
* Tweak Intl language style from "American English" -> "US English"
* Update tests
* Fix tests
* Consolidate languageHandler-test files
* Improve coverage
* Consistent casing for languages in dropdown
* Update LanguageDropdown.tsx
* Delint & update snapshot
* Fix tests
* Improve coverage
`of` will fallback to the given code with fallback=code (default)
* util for account url
* test cases
* disable multi session selection on device list
* remove sign out all from context menus when oidc-aware
* comment
* remove unused param
* typo
* dont show account deactivation for externally managed accounts
* Update snapshots - field ID changed
---------
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* util for account url
* test cases
* disable multi session selection on device list
* remove sign out all from context menus when oidc-aware
* comment
* remove unused param
* redirect to auth provider when signing out
* open auth provider in new tab, refresh sessions on return
* correct comment
* fix bad copy paste
* try to make sonar happy
* Update for latest revision of MSCs
* Update SessionManagerTab-test.tsx
* Make InteractiveAuthCallback async and await it
---------
Co-authored-by: Hugh Nimmo-Smith <hughns@matrix.org>
Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* util for account url
* test cases
* disable multi session selection on device list
* remove sign out all from context menus when oidc-aware
* comment
* remove unused param
* typo