* split SettingsSection out of SettingsTab, replace usage
* correct copyright
* use semantic headings in GeneralRoomSettingsTab
* use SettingsTab and SettingsSubsection in room settings
* fix VoipRoomSettingsTab
* use SettingsSection components in space settings
* settingssubsection text component
* use semantic headings in HelpUserSetttings tab
* use ExternalLink components for external links
* test
* strict
* lint
* semantic heading in labs settings
* semantic headings in keyboard settings tab
* semantic heading in preferencesusersettingstab
* tidying
* use new settings components in eventindexpanel
* findByTestId
* prettier
* semantic headings and style refresh for crypto settings
* e2e panel
* semantic headings and cleanup in Sidebar user settings
* semantic heading in voice user settings
* sonarcloud bug and test
* split SettingsSection out of SettingsTab, replace usage
* correct copyright
* use semantic headings in GeneralRoomSettingsTab
* use SettingsTab and SettingsSubsection in room settings
* fix VoipRoomSettingsTab
* use SettingsSection components in space settings
* settingssubsection text component
* use semantic headings in HelpUserSetttings tab
* use ExternalLink components for external links
* test
* strict
* lint
* semantic heading in labs settings
* semantic headings in keyboard settings tab
* semantic heading in preferencesusersettingstab
* tidying
* use new settings components in eventindexpanel
* findByTestId
* prettier
* semantic headings and style refresh for crypto settings
* e2e panel
* test cross signing panel
* strict
* more strict
* tweak
* test eventindexpanel
* strict fixes
* Take a Jest snapshot of a widget (AppTile)
* Fix the comment
* Update test/components/views/elements/AppTile-test.tsx
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add container
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix roving tab index getting confused after dragging space order
* Fix roving tab index for drag reordering
* delint
* Add test
* Make types happier
* Remove snapshot
* allow testids in settings sections
* use semantic headings in LabsUserSettingsTab
* put back margin var
* use SettingsTab wrapper
* use semantic headings for deactivate acc section
* use semantic heading in manage integratios
* i18n
* explicit cast to boolean
* Update src/components/views/settings/shared/SettingsSubsection.tsx
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* test manage integration settings
* test deactivate account section display
* remove debug
* fix cypress test
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* settingssubsection text component
* use semantic headings in HelpUserSetttings tab
* test
* strict
* lint
* semantic heading in labs settings
* semantic headings in keyboard settings tab
* semantic heading in preferencesusersettingstab
* tidying
* findByTestId
* prettier
* allow testids in settings sections
* use semantic headings in LabsUserSettingsTab
* use semantic headings in usersettingspreferences
* rethemendex
* put back margin var
* allow testids in settings sections
* use semantic headings in LabsUserSettingsTab
* use semantic headings in usersettingspreferences
* rethemendex
* put back margin var
* Replace: %s/mx_RightPanel_headerButton/mx_RoomHeader_button/g
* Conform the selectors to our naming policy: with flag (--)
- %s/mx_RoomHeader_button_highlight/mx_RoomHeader_button--highlight/g
- %s/mx_RoomHeader_button_unread/mx_RoomHeader_button--unread/g
* Update a Jest snapshot
* Move the declarations and Sass variables
- Move Sass variables to the place where they are used
* insert mentions as links styled as pills
* post merge fix and update test
* update comments, move typeguard out
* create a text node instead of setting innerText
* update test
* update test
* fix broken cypress test, remove .only
* make it able to deal with inserting in middle of blank lines
* update comment
* fix strict null error
* use typeguard
* avoid implicit truth check
* add hook tests
* add comment
* Update test/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners-test.tsx
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
---------
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* allow testids in settings sections
* use semantic headings in LabsUserSettingsTab
* put back margin var
* explicit cast to boolean
* Update src/components/views/settings/shared/SettingsSubsection.tsx
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* 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
* Add regression test for emoji picker order mangling after clearing filter
* Fix regression in emoji picker order mangling after clearing filter
* Iterate
* Update src/components/views/emojipicker/EmojiPicker.tsx
* change interface to discriminated union
* fix ts errors
* use definite assertion operator
* use | undefined, instead of assertion operator
* correct the button press arguments for dial button
* update props to have `Props` suffix
* add comment
* remove unnecessary default
* remove unnecessary comment
* make classname match filename
* setup test file
* export consts for testing
* add initial test
* add another DialPad test
* fix imports
* split SettingsSection out of SettingsTab, replace usage
* correct copyright
* use semantic headings in GeneralRoomSettingsTab
* use SettingsTab and SettingsSubsection in room settings
* fix VoipRoomSettingsTab
* use SettingsSection components in space settings
* settingssubsection text component
* use semantic headings in HelpUserSetttings tab
* use ExternalLink components for external links
* test
* strict
* lint
* split SettingsSection out of SettingsTab, replace usage
* correct copyright
* use semantic headings in GeneralRoomSettingsTab
* use SettingsTab and SettingsSubsection in room settings
* fix VoipRoomSettingsTab
* use SettingsSection components in space settings
* split SettingsSection out of SettingsTab, replace usage
* correct copyright
* use semantic headings in GeneralRoomSettingsTab
* use SettingsTab and SettingsSubsection in room settings
* fix VoipRoomSettingsTab
* add the handlers for when autocomplete is open plus rough / handling
* hack in using the wysiwyg autocomplete
* switch to using onSelect for the behaviour
* expand comment
* add a handle command function to replace text
* add event firing step
* fix TS errors for RefObject
* extract common functionality to new util
* use util for plain text mode
* use util for rich text mode
* remove unused imports
* make util able to handle either type of keyboard event
* fix TS error for mxClient
* lift all new code into main component prior to extracting to custom hook
* shift logic into custom hook
* rename ref to editorRef for clarity
* remove comment
* try to add cypress test for behaviour
* remove unused imports
* fix various lint/TS errors for CI
* update cypress test
* add test for pressing escape to close autocomplete
* expand cypress tests
* add typing while autocomplete open test
* refactor to single piece of state and update comments
* update comment
* extract functions for testing
* add first tests
* improve tests
* remove console log
* call useSuggestion hook from different location
* update useSuggestion hook tests
* improve cypress tests
* remove unused import
* fix selector in cypress test
* add another set of util tests
* remove .only
* remove .only
* remove import
* improve cypress tests
* remove .only
* add comment
* improve comments
* tidy up tests
* consolidate all cypress tests to one
* add early return
* fix typo, add documentation
* add early return, tidy up comments
* change function expression to function declaration
* add documentation
* fix broken test
* add check to cypress tests
* update types
* update comment
* update comments
* shift ref declaration inside the hook
* remove unused import
* update cypress test and add comments
* update usePlainTextListener comments
* apply suggested changes to useSuggestion
* update tests
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* hack to fix console noise from unfaked timers and clearAllModals
* remove old debug logging in AsyncWrapper
* pass room to room settings tabs
* add errorboundary for roomsettingsdialog
* apply strictnullchecks to tabs/room
* dedupe code to set toom in roomsettingdialog
* add unit tests
* test SecurityRoomSettingsTab
* remove snapshot
* strict fixes
* more tests
* 2% more test coverage
* remove roomName from RoomSettingsDialogs state
* Use `getUserDeviceInfo` instead of `downloadKeys` and `getStoredDevicesForUser`
* Use new `getUserDeviceInfo` api in `UserInfo.tsx` and `UserInfo-test.tsx`
* Fix missing fields
* Use `getUserDeviceInfo` instead of `downloadKeys`
* Move `ManualDeviceKeyVerificationDialog.tsx` from class to functional component and add tests
* Fix strict errors
* Update snapshot
* Add snapshot test to `UserInfo-test.tsx`
* Add test for <BasicUserInfo />
* Remove useless TODO comment
* Add test for ambiguous device
* Rework `<BasicUserInfo />` test
* RovingTabIndex handle looping around start/end
* Make TabbedView expose aria tabpanel/tablist/tab roles
* Fix right panel being wrongly specified as aria tabs
Not all right panels map to the top right header buttons so we cannot describe it as a tabpanel relation
* tsc strict
* Update snapshots
* Fix ARIA AXE violation
* Update tests
* Conform more of the codebase to `strictNullChecks`
* Iterate
* Iterate
* Iterate
* Iterate
* Conform more of the codebase to `strictNullChecks`
* Iterate
* Update record key
* Add missing aria-expanded attributes
* Improve autoComplete for phone numbers & email addresses
* Fix room summary card heading order
* Fix missing label on timeline search field
* Use appropriate semantic elements for dropdown listbox
* Use semantic list elements in keyboard settings tab
* Use semantic list elements in spotlight
* Fix types and i18n
* Improve types
* Update tests
* Add snapshot test
* Properly translate errors in AddThreepid.ts
Part of https://github.com/vector-im/element-web/issues/9597
* Use translated message
* Avoid returning undefined ever
* More usage
* Introduce UserFriendlyError
* Use UserFriendlyError
* Add more usage instead of normal error
* Use types and translatedMessage
* Fix lints
* Update i18n although it's wrong
* Use unknown for easier creation from try/catch
* Use types
* Use error types
* Use types
* Update i18n strings
* Remove generic re-label of HTTPError
See https://github.com/matrix-org/matrix-react-sdk/pull/10432#discussion_r1156468143
The HTTPError already has a good label and it isn't even translated if we re-label it here in this way generically
Probably best to just remove in favor of thinking about a translations in general from the `matrix-js-sdk`, see https://github.com/matrix-org/matrix-js-sdk/issues/1309
* Make error message extraction generic
* Update i18n strings
* Add tests for email addresses
* More consistent error logging to actually see error in logs
* Consistent error handling
* Any is okay because we have a fallback
* Check error type
* Use dedicated mockResolvedValue function
See https://github.com/matrix-org/matrix-react-sdk/pull/10432#discussion_r1163344034
* Simplify `isDeviceVerified` definitions
Currently, we have two similar but different definitions of `isDeviceVerified`,
and they both do a lot of wrangling that relies on js-sdk internals. We can
simplify it a lot by just calling `MatrixClientPeg.checkDeviceTrust`.
* fix tests
* more test fixes
* Improve typing in constructor of RoomPermalinkCreator
* Provide via servers if present when navigating to predecessor room from Advanced Room Settings
* Show an error tile when the predecessor room is not found
* Test for MatrixToPermalinkConstructor.forRoom
* Test for MatrixToPermalinkConstructor.forEvent
* Display a tile for predecessor event if it contains via servers
* Fix missing case where event id is provided as well as via servers
* Refactor RoomPredecessor tests
* Return lost filterConsole to its home
* Comments for IState in AdvancedRoomSettingsTab
* Explain why we might render a tile even without prevRoom
* Guess the old room's via servers if they are not provided
* Fix TypeScript errors
* Adjust regular expression (hopefully) to avoid potential catastrophic backtracking
* Another attempt at avoiding super-liner regex performance
* Tests for guessServerNameFromRoomId and better implementation
* Further attempt to prevent backtracking
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* add /me handling
* use typeguards to avoid fighting TS
* improve clarity and use of typeguards
* add createMessageContent tests
* remove completed TODO
* improve comments
* remove duplication and renaming of argument
* pass handleCommand prop down and use it in WysiwygAutocomplete
* allow a command to generate a query from buildQuery
* port command functionality into the sendMessage util
* tidy up comments
* remove use of shouldSend and update comments
* remove console log
* make logic more explicit and amend comment
* uncomment replyToEvent block
* update util test
* remove commented out test
* use local text over import from current composer
* expand tests
* expand tests
* handle the FocusAComposer action for the wysiwyg composer
* remove TODO comment
* remove TODO
* test for action dispatch
* fix failing tests
* tidy up tests
* fix TS error and improve typing
* fix TS error
* amend return types for sendMessage, editMessage
* fix null content TS error
* fix another null content TS error
* use as to correct final TS error
* remove undefined argument
* try to fix TS errors for editMessage function usage
* tidy up
* add TODO
* improve comments
* update comment
* Show room create button in RoomSublist if "UIComponent.roomCreation" is enabled
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
* Revert "Show room create button in RoomSublist if "UIComponent.roomCreation" is enabled"
This reverts commit a332a0b02a6c3253ea7ac606211c41a09c409de5.
* Use UIComponent.ExploreRooms to display menu item "Explore public rooms" ("Explore rooms" in case of space room) in context menu of "Rooms" section of RoomList component. The context menu will be available if one of UIComponent.ExploreRooms or UIComponent.CreateRooms is enabled.
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
* "Explore rooms" of space room should not be controlled by UIComponent.ExploreRooms.
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
---------
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
Co-authored-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
* Use grid layout instead
- BEM naming style
- Increase block gap from 4px to 8px
- Use flexbox inside 'header' grid-area to let the buttons wrapped
- Use variables
- Remove 4px gap when one of the buttons is not rendered
- Change 'body' to 'message'
- Set 'align-self: start' to the icon and spinner
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Unset height of spinner
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Break lines at newline characters with white-space: pre-line
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Edit tests to check decryption failure bars on narrow timeline
- checkTimelineNarrow() looks for buttons by default
- Test indicator as well
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Remove a line
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Edit the test to have it check mx_EventTile_last only inside mx_RoomView_body
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Fix double underscores
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Fix double underscores - pcss
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Iterate - buttons at the bottom
- Set common spacing to buttons with variables
- Remove line breaks, yarn run i18n
- Set data-testid for headlines and buttons in case the tested strings would be displayed elsewhere simultaneously
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Check waiting headline as well
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Increase spacing between the message and the buttons
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* lint
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Increase block gap between wrapped buttons for clickability
Apply 8px between wrapped buttons
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Revert bottom margin of buttons which are not expected to be wrapped
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Check visibility instead of existence
This commit removes data-testid from headlines and data-testid-button and checks whether the elements are really visible, not overflowing the viewport.
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Remove redundant gap between 'mx_DecryptionFailureBar_start' and the bottom edge
This commit adds '.mx_DecryptionFailureBar--withEnd' class name to have it applied to the bar only if it has button(s). This way the bar is rendered with a flexbox and the row-gap declaration is respected only if there is a 'mx_DecryptionFailureBar--withEnd' element. The element currently includes the button(s) only.
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* lint - prettier
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* Have Percy take a snapshot of the bar loading spinner before checkTimelineNarrow()
The loading spinner is likely to disappear while checking the bar on the narrow timeline.
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
---------
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
Co-authored-by: Kerry <kerrya@element.io>
* bumps the RTE dependency to introduce user/room mention handling
* adds autocomplete behaviour to allow users to insert user and room mentions as links
* sets up tests for the autocomplete behaviour
Implements the intentional mentions feature of MSC3952 (behind
a labs flag).
If enabled, this will send an org.matrix.msc3952.mentions property
on events that will contain the user IDs and/or whether the room is
being mentioned. These mentions also gets propagated via some
custom behaviour for replies and edits.
* Apply `strictNullChecks` to `src/components/views/room_settings/*`
* Restore tsconfig.json
* Conform more code to `strictNullChecks`
* Iterate
* Update matrix-widget-api
* Conform more code to `strictNullChecks`
* add poll history tab to room settings
* test poll history in room settings
* remove posthog tracking for poll his
* remove labs flag for poll history
* i18n
* add poll history tab to room settings
* test poll history in room settings
* remove posthog tracking for poll his
* use consistent label for polls history
* basic sync setup
* formatting
* get loudest value for synced rules
* more types
* test synced rules in notifications settings
* type fixes
* noimplicitany fixes
* remove debug
* tidying
* extract updatePushRuleActions fn to utils
* extract update synced rules
* just synchronise in one place?
* monitor account data changes AND trigger changes sync in notifications form
* lint
* setup LoggedInView test with enough mocks
* test rule syncing in LoggedInView
* strict fixes
* more comments
* one more comment
* add error variant for caption component
* tests for new error message
* tweak styles
* noImplicitAny
* revert out of date prettier changes to unrelated files
* limit inline message to radios only, tests
* strict fix
* Tests for RoomNotificationStateStore emitting events
* Support dynamic room predecessors in RoomNotificationStateStore
* Remove unused arguments from emit call.
UPDATE_STATUS_INDICATOR is used in:
* SpacePanel
* MatrixChat
* RoomHeaderButtons
but these arguments are not used in any of those places. Remove them so
when I refactor I don't have to make up values for them.
* Fix broken test (wrong expected args to emit)
UPDATE_STATUS_INDICATOR is used in:
* SpacePanel
* MatrixChat
* RoomHeaderButtons
but these arguments are not used in any of those places. Remove them so
when I refactor I don't have to make up values for them.
* Update the RoomNotificationStore whenever the predecessor labs flag changes
* Fix type errors
* Fix other tests that trigger our new watcher
* basic sync setup
* formatting
* get loudest value for synced rules
* more types
* test synced rules in notifications settings
* type fixes
* noimplicitany fixes
* remove debug
* tidying
* load more pages of polls
* load more and no results messages
* style no results message
* remove debug
* strict fixes
* comments
* i18n pluralisations
* pluralisation the right way
* basic navigation to focused poll
* add tooltip
* drill permalinkCreator down to poll history
* render poll tile and link to timeline
* tidy and lint
* unit test poll detail
* add view poll link to ended pollliste item
* strict fix
* pr improvements
* pass room as prop
* permalinkcreator ts assertion
* 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
When previewing a room, we normally do not have a Room object. Currently, when the RoomPreviewBar is instantiated without a room, it doesn't raise the PreviewRoomNotLoggedIn and JoinFromRoomPreview module lifecycle events, meaning that modules are unable to intercept previews of non-peekable rooms.
To fix this, make sure that we pass the room ID into RoomPreviewBar irrespective of whether we have a Room object, and use it to raise the module lifecycle events.
Signed-off-by: Mikhail Aheichyk <mikhail.aheichyk@nordeck.net>
* Make localization keys on HelpUserSettingsTab compatible with agglutinative and/or SOV type languages
* Make localization keys on room notifications debug dialog on devtools compatible with agglutinative and/or SOV type languages
* Make keys compatible with inflection
* Clarify context for Weblate translators
---------
Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
* add SpotlightSearch.showNsfwPublicRooms setting
* use setting in publicroomsearch
* add nsfw keyword filter and setting for room directory
* unit tests
* remove assertions
* use timeline pagination
* fetch last 30 days of poll history
* add comments, tidy
* more comments
* finish comment
* wait for responses to resolve before displaying in list
* dont use state for list
* return unsubscribe
* strict fixes
* unnecessary event type in filter
* add catch
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* render a poll body that errors for poll end events
* add fetching logic to pollend tile
* extract poll testing utilities
* test mpollend
* strict fix
* more strict fix
* strict fix for forwardref
* add filter component
* update poll test utils
* add unstyled filter tab group
* filtertabgroup snapshot
* lint
* update test util setupRoomWithPollEvents to allow testing multiple polls in one room
* style filter tabs
* test error message for past polls
* sort polls list by latest
* extract poll option display components from pollbody
* add ended poll list item component
* use named export for polllistitem
* test POllListItemEnded
* comments
* strict fixes
* extract poll option display components
* strict fixes
* strict
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* render a poll body that errors for poll end events
* add fetching logic to pollend tile
* extract poll testing utilities
* test mpollend
* strict fix
* more strict fix
* strict fix for forwardref
* add filter component
* update poll test utils
* add unstyled filter tab group
* filtertabgroup snapshot
* lint
* update test util setupRoomWithPollEvents to allow testing multiple polls in one room
* style filter tabs
* test error message for past polls
* sort polls list by latest
* extract poll option display components
* strict fixes
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* render a poll body that errors for poll end events
* add fetching logic to pollend tile
* extract poll testing utilities
* test mpollend
* strict fix
* more strict fix
* strict fix for forwardref
* add filter component
* update poll test utils
* add unstyled filter tab group
* filtertabgroup snapshot
* lint
* update test util setupRoomWithPollEvents to allow testing multiple polls in one room
* style filter tabs
* test error message for past polls
* sort polls list by latest
* move FilterTabGroup into generic components
* comments
* Update src/components/views/dialogs/polls/types.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* render a poll body that errors for poll end events
* add fetching logic to pollend tile
* extract poll testing utilities
* test mpollend
* strict fix
* more strict fix
* strict fix for forwardref
* update poll test utils
* implicit anys
* tidy and add jsdoc
* 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
* add settings while under development
* very basic tests for roomsummarycard
* empty poll history dialog and option in room summary
* pollS history in settings
* render an ugly list of polls in current timeline
* readonly poll history list items
* fix scroll window
* use short year code in date format, tidy
* no results message + tests
* strict fix
* mock intldatetimeformat for stable date formatting
* extract date format fn into date-utils
* jsdoc
* wip
* remove dupe
* use poll model relations in all cases
* update mpollbody tests to use poll instance
* update poll fetching login in pinned messages card
* add pinned polls to room polls state
* add spinner while relations are still loading
* handle no poll in end poll dialog
* strict errors
* strict fix
* more strict fix
* Revert "Apply more general fix for base avatar regressions (#10045)"
This reverts commit 371a3c0d36.
* Revert "Fix layout and visual regressions around default avatars (#10031)"
This reverts commit 0d1fce37b2.
* Revert "Member avatars without canvas (#9990)"
This reverts commit a8aa4de4b4.
* Update snapshots
* add settings while under development
* very basic tests for roomsummarycard
* empty poll history dialog and option in room summary
* pollS history in settings
* use more user-centric selectors in roomsummarycard test
* Add tests for unread notification facilities
Add some tests to guarantee some consistency in `useUnreadNotifications` and
`RoomNotificationState`.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Add RoomNotifs#determineUnreadState
Intended as a singular replacement for the divergent implementations before.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Unify room unread state determination
Have both the class-based facility and the hook use the new unified logic in
`RoomNotifs#determineUnreadState`.
Addresses https://github.com/vector-im/element-web/issues/24229
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
---------
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Strict typechecking fixes for Base/Member/Avatar
Update the core avatar files to pass `--strict --noImplicitAny` typechecks.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Add tests for Base/Member/Avatar
More thoroughly test the core avatar files. Not necessarily the most thorough,
but an improvement.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Extract TextAvatar from BaseAvatar
Extracted the fallback/textual avatar into its own component.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Use standard HTML for non-image avatars
Firefox users with `resistFingerprinting` enabled were seeing random noise
for rooms and users without avatars. There's no real reason to use data
URLs to present flat colors.
This converts non-image avatars to inline blocks with background colors.
See https://github.com/vector-im/element-web/issues/23936
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
* Have pills use solid backgrounds rather than colored images
Similar to room and member avatars, pills now use colored pseudo-elements
rather than background images.
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
---------
Signed-off-by: Clark Fischer <clark.fischer@gmail.com>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Support token authenticated registration
https://spec.matrix.org/v1.2/client-server-api/#token-authenticated-registration
Signed-off-by: Callum Brown <callum@calcuode.com>
* Backwards compatibility with unstable auth type
Some server installs are not updated to use the stable version
of the registration token authentication type, so also handle
the unstable version defined in MSC3231.
Signed-off-by: Callum Brown <callum@calcuode.com>
* Make LOGIN_TYPE public and readonly
Co-authored-by: Travis Ralston <travpc@gmail.com>
* Remove line related to skinning
Signed-off-by: Callum Brown <callum@calcuode.com>
* Change empty string to null
Signed-off-by: Callum Brown <callum@calcuode.com>
* Use "public"s for new code style
Signed-off-by: Callum Brown <callum@calcuode.com>
* Change input to AccessibleButton
Signed-off-by: Callum Brown <callum@calcuode.com>
* Add more detail regarding source of token
Signed-off-by: Callum Brown <callum@calcuode.com>
* Fix lint error
The text and button type will be the same every time
for registration tokens, unlike (possibly) for SSO.
Signed-off-by: Callum Brown <callum@calcuode.com>
* Change null back to ""
Due to the following warning when attempting to test:
> Warning: `value` prop on `input` should not be null.
> Consider using an empty string to clear the component or
> `undefined` for uncontrolled components.
Signed-off-by: Callum Brown <callum@calcuode.com>
* Disable submit button when no token entered
Signed-off-by: Callum Brown <callum@calcuode.com>
* Add test for registration tokens
Adapted from test/components/views/dialogs/InteractiveAuthDialog-test.tsx
Signed-off-by: Callum Brown <callum@calcuode.com>
* Fix linting errors
Signed-off-by: Callum Brown <callum@calcuode.com>
* Fix test for registration tokens
Signed-off-by: Callum Brown <callum@calcuode.com>
Signed-off-by: Callum Brown <callum@calcuode.com>
Co-authored-by: Travis Ralston <travpc@gmail.com>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Applies small changes to code block display in timeline
* Makes the composer code block look like the timeline display, but without line numbers
* Adds a button to allow code blocks to be implemented
* Adds tests for the new button
* 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>
* Use js-sdk imports for poll event types instead of events-sdk
* Attempt to appease some tsc --strict errors
* Manually create poll response in cypress test
* adds buttons to toggle bulleted and numbered lists on and off
* adds icons for those buttons
* css changes to timeline display
* adds tests for the new buttons, refactors existing tests