Skip to content

Conversation

@dbkr
Copy link
Member

@dbkr dbkr commented Jul 9, 2025

That simple view models can extend in a subclass-to-get-functionality way to reduce boilerplate

Checklist

  • Tests written for new code (and old code if feasible).
  • New or updated public/exported symbols have accurate TSDoc documentation.
  • Linter and other CI checks pass.
  • I have licensed the changes to Element by completing the Contributor License Agreement (CLA)

dbkr and others added 30 commits June 26, 2025 11:36
Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.
Because we used it anyway, we just cheated by getting it from the context
cherry pick edc5e87
from florianduros/storybook
There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.
Not necessary now we're using vite
Base automatically changed from dbkr/textualevent_sharedcomponent to develop July 14, 2025 13:28
private removeSubscription = (): void => {
this.eventTileProps.mxEvent.off(MatrixEventEvent.SentinelUpdated, this.onEventSentinelUpdated);
protected addDownstreamSubscription = (): void => {
this.eventTileProps.mxEvent.on(MatrixEventEvent.SentinelUpdated, this.subs.emit);
Copy link
Member

@t3chguy t3chguy Jul 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

emit called in this way will have no this reference as it is not an arrow-function or bound

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point: I've made emit an arrow function and added a test to asset it actually works.

so it can be passed directly as a callback
@dbkr dbkr added this pull request to the merge queue Jul 17, 2025
Merged via the queue into develop with commit 3b0c04c Jul 17, 2025
36 of 38 checks passed
@dbkr dbkr deleted the dbkr/subscriptionviewmodel branch July 17, 2025 12:48
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Sep 6, 2025
Changes in [1.11.110](https://github.com/element-hq/element-web/releases/tag/v1.11.110) (2025-08-27)
====================================================================================================

* Hide recovery key when re-entering it while creating or changing it ([#30499](element-hq/element-web#30499)). Contributed by @andybalaam.
* Add `?no_universal_links=true` to OIDC url so EX doesn't try to handle it ([#29439](element-hq/element-web#29439)). Contributed by @t3chguy.
* Show a blue lock for unencrypted rooms and hide the grey shield for encrypted rooms ([#30440](element-hq/element-web#30440)). Contributed by @langleyd.
* Add support for Module API 1.4 ([#30185](element-hq/element-web#30185)). Contributed by @t3chguy.
* MVVM - Introduce some helpers for snapshot management ([#30398](element-hq/element-web#30398)). Contributed by @MidhunSureshR.

* A11y: move focus to right panel when opened ([#30553](element-hq/element-web#30553)). Contributed by @florianduros.
* Fix e2e warning icon should be white ([#30539](element-hq/element-web#30539)). Contributed by @florianduros.
* Remove NoOneHere disabled reason. ([#30524](element-hq/element-web#30524)). Contributed by @toger5.
* Fix downloading files with authenticated media API ([#30520](element-hq/element-web#30520)). Contributed by @t3chguy.
* Fix call permissions check confusion around element call ([#30521](element-hq/element-web#30521)). Contributed by @t3chguy.
* Fix line wrap around emoji verification ([#30523](element-hq/element-web#30523)). Contributed by @t3chguy.
* Don't highlight redacted events ([#30519](element-hq/element-web#30519)). Contributed by @t3chguy.
* Fix matrix.to links not being handled in the app ([#30522](element-hq/element-web#30522)). Contributed by @t3chguy.
* Fix issue of new room list taking up the full width ([#30459](element-hq/element-web#30459)). Contributed by @langleyd.
* Fix widget persistence in React development mode ([#30509](element-hq/element-web#30509)). Contributed by @robintown.
* Fix widget initialization in React development mode ([#30463](element-hq/element-web#30463)). Contributed by @robintown.

Changes in [1.11.109](https://github.com/element-hq/element-web/releases/tag/v1.11.109) (2025-08-11)
====================================================================================================
This release supports the upcoming v12 ("hydra") Matrix room version and is necessary to view and participate in these rooms.

* [Backport staging] Allow /upgraderoom command without developer mode enabled ([#30529](element-hq/element-web#30529)). Contributed by @RiotRobot.
* [Backport staging] Support for creator/owner power level ([#30526](element-hq/element-web#30526)). Contributed by @RiotRobot.
* New room list: change icon and label of menu item for to start a DM ([#30470](element-hq/element-web#30470)). Contributed by @florianduros.
* Implement the member list with virtuoso ([#29869](element-hq/element-web#29869)). Contributed by @langleyd.
* Add labs option for history sharing on invite ([#30313](element-hq/element-web#30313)). Contributed by @richvdh.
* Bump wysiwyg to 2.39.0 adding support for pasting rich text content in the Rich Text Edtior ([#30421](element-hq/element-web#30421)). Contributed by @langleyd.
* Support `EventShieldReason.MISMATCHED_SENDER` ([#30403](element-hq/element-web#30403)). Contributed by @richvdh.
* Change unencrypted and public pills to blue ([#30399](element-hq/element-web#30399)). Contributed by @florianduros.
* Change color of public room icon ([#30390](element-hq/element-web#30390)). Contributed by @florianduros.
* Script for updating storybook screenshots ([#30340](element-hq/element-web#30340)). Contributed by @dbkr.
* Add toggle to hide empty state in devtools ([#30352](element-hq/element-web#30352)). Contributed by @toger5.

* [Backport staging] Use userId to filter users in non-federated rooms when showing the InviteDialog ([#30537](element-hq/element-web#30537)). Contributed by @RiotRobot.
* [Backport staging] Catch error when encountering invalid m.room.pinned\_events event ([#30536](element-hq/element-web#30536)). Contributed by @RiotRobot.
* Update for compatibility with v12 rooms ([#30452](element-hq/element-web#30452)). Contributed by @dbkr.
* New room list: fix tooltip on presence ([#30474](element-hq/element-web#30474)). Contributed by @florianduros.
* New room list: add tooltip for presence and room status ([#30472](element-hq/element-web#30472)). Contributed by @florianduros.
* Fix: Clicking on an item in the member list causes it to scroll to the top rather than show the profile view ([#30455](element-hq/element-web#30455)). Contributed by @langleyd.
* Put the 'decrypting' tooltip back ([#30446](element-hq/element-web#30446)). Contributed by @dbkr.
* Use server name explicitly for via. ([#30362](element-hq/element-web#30362)). Contributed by @Half-Shot.
* fix: replace hardcoded string in poll history dialog ([#30402](element-hq/element-web#30402)). Contributed by @florianduros.
* fix: replace hardcoded string on qr code back button ([#30401](element-hq/element-web#30401)). Contributed by @florianduros.
* Fix color of icon button with outline ([#30361](element-hq/element-web#30361)). Contributed by @florianduros.

Changes in [1.11.108](https://github.com/element-hq/element-web/releases/tag/v1.11.108) (2025-07-30)
====================================================================================================

* [Backport staging] Fix downloaded attachments not being decrypted ([#30434](element-hq/element-web#30434)). Contributed by @RiotRobot.

Changes in [1.11.107](https://github.com/element-hq/element-web/releases/tag/v1.11.107) (2025-07-29)
====================================================================================================

* Message preview should show tooltip with the full message on hover ([#30265](element-hq/element-web#30265)). Contributed by @MidhunSureshR.
* Support rendering notification badges on platforms that do their own icon overlays ([#30315](element-hq/element-web#30315)). Contributed by @Half-Shot.
* Add SubscriptionViewModel base class ([#30297](element-hq/element-web#30297)). Contributed by @dbkr.
* Enhancement: Save image on CTRL+S ([#30330](element-hq/element-web#30330)). Contributed by @ioalexander.
* Add quote functionality to MessageContextMenu (#29893) ([#30323](element-hq/element-web#30323)). Contributed by @AlirezaMrtz.
* Initial structure for shared component views ([#30216](element-hq/element-web#30216)). Contributed by @dbkr.

* [Backport staging] Fix e2e shield being invisible in white mode for encrypted room ([#30411](element-hq/element-web#30411)). Contributed by @RiotRobot.
* Force ED titlebar color for new room list ([#30332](element-hq/element-web#30332)). Contributed by @florianduros.
* Add a background color to left panel for macos titlebar in element desktop ([#30328](element-hq/element-web#30328)). Contributed by @florianduros.
* Fix: Prevent page refresh on Enter key in right panel member search ([#30312](element-hq/element-web#30312)). Contributed by @AlirezaMrtz.
Dileep9999 pushed a commit to hemanth-nag/element-web that referenced this pull request Oct 8, 2025
* Very first pass at shared component views

Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.

* Remove old TextualEvent

* Pass showHiddenEvents

Because we used it anyway, we just cheated by getting it from the context

* Factor out common view model stuff

* Move ViewModel interface into the shared components

* Add tiny wrapper hook

* Move showHiddenEvents into props fully

* Fill in stories / test

* chore: setup storybook

cherry pick edc5e87
from florianduros/storybook

* Add TextualEvent component to storybook

* Add mock view model & snapshot

* Remove old style stories entry

* Change import

* Change import

* Prettier

* Add paxckage patch to @types/mdx

for React 19 compat

* Pass getSnapshot as getServerSnapshot too

* Maybe make sonar regognise tests as tests

* Typo

* Use storybook reacvt-vite

There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.

* Change here too

* Workaround for incomatible types in rollup

rollup/rollup#5199

* Remove webpack styling addon

Not necessary now we're using vite

* Hopefully do screenshot testing...

* need newer node

* quote issues

* Make it an npm script

* colons

* use right port

* Install playwright browsers

* Try without the if

* Oh right, we need the headless shell

* Pass flag to store received screenshots

and upload diffs too

* Update snapshot from received

* Include platform in snapshot / received dir

because font rendering differs between platforms

* Suffix snapshots with platform instead

like we do for playwright

* Remove unnecessary env vars

and better name

* Add some comments

* Prettier

* Fix yarn.lock

* Memoise vm creation

Co-authored-by: Florian Duros <[email protected]>

* Add implements

Co-authored-by: Florian Duros <[email protected]>

* Fix listener interface

* Add implements

Co-authored-by: Florian Duros <[email protected]>

* Fix types

* Fix more types

* Add a superclass that simple view models can extend

to reduce boilerplate

* Revert useMemo

as this isn't a hook

* Unused import

* Actually commit the file the branch is named after

* Add missing playwright step

* Add return type annotation

* Change to add / remove subscription callback

* Change to 'add' rather than 'subs.subscribe'

* Add cache specifier for only shell playwright browsers

* Add copyright headers

* Better comment wording

* Make amit an arrow function

so it can be passed directly as a callback

* Add a test

---------

Co-authored-by: Florian Duros <[email protected]>
Co-authored-by: Florian Duros <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants