* Add user status on user profile icon
Currently unstyled & no tests
* Style the user status icon
* Update snapshot
for avatar wrapper
* More snapshot updates
* add if braces
* Split out user status functions
to avoid circular dep which has the weird effect of just breaking
jest's mocking.
* type imports
* Update imports
* Update snapshot
* Tests
* baseline image
* Just snapshot the component itself
* User status in user menu
first pass, unstyled
* fix export
* superstylin'
* snapshots
* Add story & test
* Snapshots
and re-use the repeated rules
* Tests
* Fix jest lcov projectRoot config
* Change tooltip text to just 'clear'
* Add comment & fix console warn
* Remove all options screenshot
as it's not really particularly useful as a preset story
* remove stale screenshot
* fix imports
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Use vitest for some EW unit tests
* Ensure library builds are done before unit tests
* Stabilise jest tests
* Move more tests over
* Make sonar happier
* Update types/node for happy-dom compat again
* Decrease max-workers to stabilise jest tests
* Split jest over 3 runners to alleviate memory woes
* Switch jest to runInBand
* Attempt to deflake jest tests
* tweak coverage
* tweak coverage
* Add user status on user profile icon
Currently unstyled & no tests
* Style the user status icon
* Update snapshot
for avatar wrapper
* More snapshot updates
* add if braces
* Split out user status functions
to avoid circular dep which has the weird effect of just breaking
jest's mocking.
* type imports
* Update imports
* Update snapshot
* Tests
* baseline image
* Just snapshot the component itself
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* PoC Sign in with QR on new EW using generated QR for MSC4108 v2024
* Revert package.json changes
* Prettier
* Fix i18n
* Tidy up
* Remove unused state variable
* Iterate tests
* Partial revert
* Iterate
* Wire up qr_login route
* Iterate UI
* Fix React dev mode double rendering issue
* Fix react key warning
* Hide flow header on login
* Re-roll qr code on channel expiry
* Switch to AbortSignal
* Improve auto-retry QR UX
* Ensure we only show sign in with QR button if enabled
* XXX: enable labs flag on Netlify builds
* Tweak QR code sizing
* Move qr login flow into a dialog to match designs
* Fix null deviceId
* Remove duplicate log
* Iterate
* Fix tests
* Fix types
* Fix tests
* Fix tests
* Make Netlify more useful
* Make Netlify more useful v2
* Update copy
* Refactor QR link flow to use new SDK methods
Requires https://github.com/matrix-org/matrix-js-sdk/pull/5283
For element-hq/wat-internal#188
Split out from https://github.com/element-hq/element-web/pull/33184
* Link to js-sdk branch
* Update tests
* Simplify
* Revert js-sdk linking
* Iterate
* Iterate
* Refactor to handle most of the TODOs
* Remove unused code
* Remove unused code
* Use js-sdk isSignInWithQRAvailable API to simplify code
* Restore app-test.ts
* Improve coverage
* Improve coverage
* Remove unused prop/state
* Iterate
* Fix tests
* Iterate
* Tests
* Handle TODOs
* Docs
* Remove redundant call to crossSignDevice()
* Workaround to remove training slash on the serverName before auto-discovery
* Revert "Workaround to remove training slash on the serverName before auto-discovery"
This reverts commit 0335a8fdd1b8e8d949ab7fca17c76f8fab335b58.
* setLoggedIn not to be used with OIDC flows as it clears storage
as per docs on setLoggedIn we should use restoreSessionFromStorage
* Don't show the security_code_prompt unconditionally(i.e. for the web logging in mobile flow)
* Update LoginWithQRFlow-test.tsx.snap
* Update MatrixChat-test from setLoggedInSpy to restoreSessionSpy
* Add todo for server switch
* Add todo about handling base URL or server name
* Handle server name or base URL being returned
* Format
* Fix loading state height
* Handle the homeserver URL differing during QR code login
* Comments
* Comments
* Register OIDC client ID after homeserver swap
* Make QrLoginDialog async to minimise the impact on bundle size
* Handle unsupported HS earlier in the flow
* Iterate
* Delint
* Fix test
* Discard changes to apps/web/element.io/develop/config.json
---------
Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
Co-authored-by: David Langley <langley.dave@gmail.com>
* fix: use configured brand name in JSON and PlainText chat export filenames
The JSON and PlainText chat export functions were using the hardcoded
default 'matrix' as the brand name in filenames, while the HTML/ZIP
export correctly used the configured brand (e.g., 'Element').
This made the filenames inconsistent:
- ZIP: Element - Room - Chat Export - timestamp.zip
- JSON: matrix - Room - Chat Export - timestamp.json
Now both JSON and PlainText exports pass SdkConfig.get().brand to
makeFileNameNoExtension(), matching the behavior of the base Exporter
class used by HTML exports.
Fixes#32853
Signed-off-by: RoySerbi <roy676564@gmail.com>
* refactor: read brand from SdkConfig inside makeFileNameNoExtension
Address review feedback from @t3chguy: the brand parameter on
makeFileNameNoExtension was effectively dead (all three call sites passed
SdkConfig.get().brand and the 'matrix' default was unreachable).
- Exporter.makeFileNameNoExtension now reads SdkConfig.get().brand directly
- All call sites (Exporter, JSONExport, PlainTextExport) simplified to no-arg
- Drop now-unused SdkConfig imports in JSONExport and PlainTextExport
Tests are unchanged: they already mock SdkConfig to return 'Element', so the
existing 'Element-branded destination file name' snapshots remain valid.
---------
Signed-off-by: RoySerbi <roy676564@gmail.com>
* chore: add dnd kit deps
* chore: patch dnd kit to fix ts error
* feat(sc): add drag-and-drop to room list item and wrapper
* feat(sc): make the room list header a droppable element
* feat(sc): add dnd to room list view
* feat(tags): can tag room as CHAT
* feat(vm): implement `changeRoomSection`
* feat(sc): disable dragging in flat list
* fix: disable keyboard navigation when dragging element
* test(sc): update snapshots
* test(sc): add dnd test
* test(e2e): add e2e tests for room drag and drop
* test(vm): add tests for changeRoomSection
* fix: remove focus visible when dropping with the mouse
* test(playwright): update existing screenshots
* chore(sc): move numbers out of main build
The Ew RecorderWorklet imports shared component bundle. However if the
bundle uses some deps using document/window which, the worklet will not
work.
The solution is to put the used functions into a separate bundle.
* doc(sc): add subpath import into README
* doc: typo barrel/bundle
* test: improve test expect
* refactor: add utils to section tag
* fix: incorrect check in tagRoom
* fix: add doc about dndkit tunning
* Ignore specific directories
Otherwise newly generated screenshots will be ignored.
* Create a CallStartedTileView
This view will render a tile that shows when an EC call was started in
the timeline.
* Add storybook tests
* Add vite tests
* Export the view from shared-components package
* Add a viewmodel for driving the view
* Support rendering the tile in the tile factory
* Fix tile rendering
* Add comment to explain css height
* Use semantic token for gap
* Update snapshot
* Use min-height over height
This will scale the element if the user sets a custom font size.
* Don't show timestamp for call started tile
Timestamp is already shown as a part of the tile content.
* Fix broken tile on bubble layout
The tile should be full-width and not shown within a bubble.
* Fix tests
* Update storybook title
* Add shared event presentation context
* Add app-web event presentation mapper
* Wire event presentation provider into app timelines
* Add Storybook controls for event layout and density
* Wire compact density through app/web event presentation provider
* Use event presentation density for URL previews
* Move TileErrorView layout to event presentation context
* Minor fix and updated snapshot
* Updated snapshots for url preview group
* Prettier fix
* Restore removed story to fix missing playwright test
* Updates after review comments
* Fix prettier issue
* Layer Compound and shared component CSS
* Layer app theme CSS
* Remove !important flags from ActionBarView
* Remove unnecessary !important statements from shared components
* Avoid dead code errors for *.pcss just because layer is specified after @import url
* Remove unnecessary !important styling
* Override Banner defaults in RoomStatusBarView
* Updated snaps
* Updated snaps
* Fix styling of media body in app/web
* Fix styling for Compound anchors
* Fix styling issues in app/web
* More styling fixes
* Fix a problem extracting css for HTMLExport
* Revert changes
* Fix for theme styling
* Add test to improve coverage
* Prettier
* Fix styling issues
* Add data-kind attribute to avoid global styling override
* Update screenshot that now is correct
* Revert data-kind attribute
* Handle LinkPreview styling in .pcss
* Fix flaky test: Avoid racing the lazy-loaded ManageEventIndexDialog
* Take care of review comments
* Updated snaps
* Updated snaps again after merge
* Remove !important from RoomStatusBar
* feat(sc): add new toast type for room list
* feat(sc): add section entries in room list item menu
* feat(rls): expose util functions
* feat: allows to tag room with custom sections
* feat(vm): add new Chat moved toast to room list vm
* feat(vm): add section selection to room list item vm
* feat(e2e): add tests for adding room in a custom section
* test(e2e): update existing screenshots
* chore: fix lint after merge
* chore: remove outline in test
* make sure to disconnect from possibly active calls for a room when leaving the room
* log error on log call
* Update apps/web/src/utils/leave-behaviour.ts
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix wrong logger import
* hang up calls properly on empty rooms for both legacy and element calls (listen for room event and leave call if only one member left). add tests for both legacy and element calls.
* format Call-test.ts
* revert async on function def
* revert Call.ts and Call-test.ts. Wrap legacy call hangup in try
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Refactor MessageActionBar into MVVM ActionBarView
* Adding tooltips for menu items and correct i18n strings
* Layout changes
* Renaming some properties
* Rename property
* Create a first version of the view model and refactor media visibility logic
* Refactor view to take options and rections menu as optional properties
* Cleaner interface between view and view model
* Refactor view properties and replace Menu and MenuItem
* Bugfixes and switching to ActionBarView instead of MessageActionBar in element-web
* Avoid creating view models and render toolbar until it is actually shown
* Added unit and playwright tests and documented the view
* Added view model unit tests and updated snapshots of dependant tests
* Remove unused components and unnecessary css
* Remove unused language tags
* Fix for handling join-rules correctly
* Prettier
* Add handling of stale view model in async calls
* Prettier
* Split the element-web css into two different. One for legacy components and one for the ActionBarView
* Missing variables used for linting
* Fix for showing ActionBarView when using keyboard for navigation
* Handle visibility on context menu closing
* ThreadPanel uses the ActionBarView so restore css rule
* Fix for visibility of the ActionBarView in Thread panel
* Fix for ActionBarVuew visibility when closing right-click context menu and not still hovering
* Add roving index to function as a toolbar
* Adjust the RoomView test to send hover to the EventTile instead of the message text
* Fix SonarCloud issues
* Fix for SonarCloud issue
* Merge fix
* Rename mx_LegacyActionBar to mx_ThreadActionBar
* Added documentation and simplified join rules
* Generalize the ActionBarView and move logic to view model
* Add the four new buttons to the ActionBarView
* Update view model and tests to use the updated ActionBarView
* Refactor element-web to use ActionBarView
* Clean up styling in element-web
* Clean up and updating snaps and screenshots
* Added unit-tests for better coverage
* Moving ActionBarView to the correct folder in shared components
* Update snaps in element-web
* Better documentation in stories
* Merge fixes
* Updates after review comments
* Review comment fixes
* Added documentation to view models and updated snaps
* Hide button had the wrong label
* Replace createRef with useRef
* Refactor MFileBody using MVVM and move to shared component
* Simplyfing rendering properties
* Create a first version of view model for the component
* Simplifying component properties and make it possible to override module css using data-* attributes
* Create a MBodyFactory in element-web and use it to render MFileBodyView from MessageEvent
* Use <MediaBody instead of <button to support legacy rendering
* Updated styling and comments
* Refactoring className from snapshot to component property
* Rename MFileBody* to FileBody*
* Rename MFileBody* to FileBody*
* Refactoring render branches to allow for displaying nothing
* Fix styling issues
* Fix lint errors
* Fix for css selectors in playwright tests
* Remove the MFileBody component and change all callers to use MBodyFactory:FileBodyView
* Remove unused strings in element-web
* Revert to render text in story iframes
* Fix for prettier error
* Fix playwright test css selectors
* Apply legacy styling in element-web
* Add legacy styling for mx_MFileBody
* Restore file
* Change from <div to <button
* Calculate span width ad update screenshots
* Remove width calculation and update snapshots
* Fix for letter-spacing and better content in story
* Updated playwright screenshots
* Updated snapshots
* Fixing Sonar errors/warnings
* Removed extra parentheses
* Changes after review
* Change border-radius to px and updated snapshots
* Fix typo in description
* And another typo fix
* Changes after review
* Port over linkifyJS to shared-components.
* Drop rubbish
* update lock
* quickfix test
* drop group id
* Modernize tests
* Remove stories that aren't in use.
* Complete working version
* Add copyright
* tidy up
* update lock
* Update snaps
* update snap
* undo change
* remove unused
* More test updates
* fix typo
* fix margin on preview
* move margin block
* snapupdate
* prettier
* cleanup a test mistake
* Fixup sonar issues
* Don't expose linkifyjs to applications, just provide helper functions.
* Add story for documentation.
* remove $
* Use a const
* typo
* cleanup var name
* remove console line
* Changes checkpoint
* Convert to context
* Revert unrelated change.
* more cleanup
* Add a test to cover ignoring incoming data elements
* Make tests happy
* Update tests for LinkedText
* Underlines!
* fix lock
* remove unused linkify packages
* import move
* Remove mod to remove underline
* undo
* fix snap
* another snapshot fix
* Tidy up based on review.
* fix story
* Pass in args
* chore: remove unused `ManualAlgorithm`
In the old room list ui, we can"t manually sort the rooms or the
sections. Neither in a menu or by drag and drop
* fix: add `undefined` to `tagRoom` signature since the code allows it
* test: add tests to `RoomListActions`
* chore: remuve unuseful comment
* refactor: remove unused ``newIndex
* doc: remove typing in tsdoc
* Refactor className? to component property in EncryptionEventView
* Refactor extraClassNames to default react className as component property for DecryptionFailureBodyView
* Refactor className to component property for MessageTimestampView
* Refactor className and children to component properties for ReactionsRowButton
* Refactor className to component property for DisambiguatedProfile
* Refactor className to a component property in DateSeparatorView
* Fix for lint errors and EncryptionEventView unsupported icon color
* EncryptionEventView fix for icon color css specificity/order
* refactor: extract `getTagsForRoom` from old rls
`getTagsForRoom` doesn't rely on the rls state. We can extract it safely
to an external function.
The function is not moved into the rls v3 because the rls is for the
room list and not for other ui elements.
* refactor: remove dead code
* test: add more tests for `getTagsForRoom`
* refactor: `getTagsForRoom` in old rls
* doc: add missing tsdoc for `room`
* refactor: move `DefaultTagID` and `TagID` to rls v3
Move the enum and type in rls v3 and update imports
* refactor: move `getChangedOverrideRoomMutePushRules` from rls to rls v3
* refactor: replace `VisiblityProvider` by `isRoomVisible` and move it to rls v3
* perf(room list): clear room list item vm only when changing space
Clearing all the item vms at every room list change is causing massive
re-render of all the room list items. References to the vms are already
removed when out of view (see RoomListViewMode.updateVisibleRooms) and
handled by GC.
* perf(room list): avoid to re-render filters at every room list update
RoomListView re-renders on update but the filters (children) don't need
to.
Add a memo to avoid excessive-rerenders.
* chore: add `keepIfSame` to do diff on vm objects
* perf(room list): avoid to create new filter ids and keys when the room list is updated
The filterKeys are passed in the virtuoso context so it should reduce
internal computing
The filter ids array has always the same value, there is no point to
create a new instance.
* test(room list): remove no longer relevant test
* test(room list): add new test to ensure that room list item vms are preserved
* Refactor DateSeparator using MVVM and move to shared-components
* Add a few more stories, tests and screenshots
* Use the shared component and viewmodel in element-web
* Renaming custom content property an updating snapshots
* Fix lint errors and update snapshot after merge
* Change lifecycle handling for DateSeparatoreViewModel in components where manual handling is preferrable over wrapper component.
* Move context menu from viewmodel to shared components - step 1
* Create a jump to date picker component in shared components
* Add tests for coverage and fix layout issues and roving indexes
* Make element-web use the new component
* Simplify context menu and adjusting tests
* The HTMLExport now render shared components and need a I18nContext.Provider
* Updating unit tests for context menu
* Changed to {translate: _t} to let scripts pick up translations
* Fix lint issue and updating screenshots after merge
* Update snaps for element web components
* Renaming MVVM view components with suffix View.
* Fixing problem with input date calendar icon and system dark theme
* Changed the rendering of the menu and added a separate button component
* Handle input control with useRef in onKeyDown
* Updating DateSeparator snapshots on unit tests
* Updating layout after compound Menu got a className property
* Move files to new subfolder after merge
* Updated snapshot after merge
* Updating lock file
* Updates to styling from PR review
* Updates to focus/blur functionality
* Fixed tabbing and export documentation to stories
* Updated snapshots
---------
Co-authored-by: Zack <zazi21@student.bth.se>
mkdir apps/web/scripts
mv scripts/{cleanup.sh,ci_package.sh,copy-res.ts,deploy.py,package.sh} apps/web/scripts
And a couple of gitignore tweaks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>