First step of matrix-wysiwyg integration#9374
Conversation
src/components/views/rooms/wysiwyg_composer/WysiwygComposer.tsx
Outdated
Show resolved
Hide resolved
germain-gg
left a comment
There was a problem hiding this comment.
Looks good to me, added some non-blocking comments 👍
Pretty excited about a revamp of the composer
| if (SettingsStore.getValue("scrollToBottomOnMessageSent")) { | ||
| dis.dispatch({ | ||
| action: "scroll_to_bottom", | ||
| timelineRenderingType: roomContext.timelineRenderingType, | ||
| }); | ||
| } |
There was a problem hiding this comment.
I'm not convinced this should live in here. This looks like a side effect that should be done when catching the message_sent action.
Also do not think this should block this pull request from landing.
There was a problem hiding this comment.
To be honest, I copied the behaviour of the SendMessageComposer here. My goal here is to integrate the base of the matrix-wysiwyg and not change the current sendMessage behaviour.
| } }); | ||
|
|
||
| const memoizedSendMessage = useCallback(() => { | ||
| sendMessage(content, { mxClient, roomContext, ...props }); |
There was a problem hiding this comment.
What do you think about making sendMessage a prop instead? That way we can keep the business logic separate and reusable, and this component easy to test.
I also find the renderProps binding of sendMessage a bit weird
There was a problem hiding this comment.
Since the parent already have the html content thanks to the onChange, the sendMessage is not needed here and the logic can be in the parent. I will add a component in the next PRs between the WysiwygComposer and the MessageComposer. I'll avoid to add extra logic in the MessageComposer because it's already big enough.
I'm also not convinced by the memoizedSendMessage in the children but I'm searching a way to nicely do the focus and clear. In the old composer a ref is used by I clearly don't like this solution.
| const wrapper = wrapAndRender({ room }); | ||
|
|
||
| SettingsStore.setValue("feature_wysiwyg_composer", null, SettingLevel.DEVICE, false); | ||
| expect(wrapper.find(WysiwygComposer)).toBeTruthy(); |
There was a problem hiding this comment.
Why is it still rendered after changing the setting to false?
There was a problem hiding this comment.
The change of settings doesn't trigger a rerender. Since SettingsStore is a singleton, I set the old value here
* Include a file-safe room name and ISO date in chat exports ([\matrix-org#9440](matrix-org#9440)). Fixes element-hq/element-web#21812 and element-hq/element-web#19724. * Room call banner ([\matrix-org#9378](matrix-org#9378)). Fixes element-hq/element-web#23453. Contributed by @toger5. * Device manager - spinners while devices are signing out ([\matrix-org#9433](matrix-org#9433)). Fixes element-hq/element-web#15865. * Device manager - silence call ringers when local notifications are silenced ([\matrix-org#9420](matrix-org#9420)). * Pass the current language to Element Call ([\matrix-org#9427](matrix-org#9427)). * Hide screen-sharing button in Element Call on desktop ([\matrix-org#9423](matrix-org#9423)). * Add reply support to WysiwygComposer ([\matrix-org#9422](matrix-org#9422)). Contributed by @florianduros. * Disconnect other connected devices (of the same user) when joining an Element call ([\matrix-org#9379](matrix-org#9379)). * Device manager - device tile main click target ([\matrix-org#9409](matrix-org#9409)). * Add formatting buttons to the rich text editor ([\matrix-org#9410](matrix-org#9410)). Contributed by @florianduros. * Device manager - current session context menu ([\matrix-org#9386](matrix-org#9386)). * Remove piwik config fallback for privacy policy URL ([\matrix-org#9390](matrix-org#9390)). * Add the first step to integrate the matrix wysiwyg composer ([\matrix-org#9374](matrix-org#9374)). Contributed by @florianduros. * Device manager - UA parsing tweaks ([\matrix-org#9382](matrix-org#9382)). * Device manager - remove client information events when disabling setting ([\matrix-org#9384](matrix-org#9384)). * Add Element Call participant limit ([\matrix-org#9358](matrix-org#9358)). * Add Element Call room settings ([\matrix-org#9347](matrix-org#9347)). * Device manager - render extended device information ([\matrix-org#9360](matrix-org#9360)). * New group call experience: Room header and PiP designs ([\matrix-org#9351](matrix-org#9351)). * Pass language to Jitsi Widget ([\matrix-org#9346](matrix-org#9346)). Contributed by @Fox32. * Add notifications and toasts for Element Call calls ([\matrix-org#9337](matrix-org#9337)). * Device manager - device type icon ([\matrix-org#9355](matrix-org#9355)). * Delete the remainder of groups ([\matrix-org#9357](matrix-org#9357)). Fixes element-hq/element-web#22770. * Device manager - display client information in device details ([\matrix-org#9315](matrix-org#9315)). * Send Content-Type: application/json header for integration manager /register API ([\matrix-org#9490](matrix-org#9490)). Fixes element-hq/element-web#23580. * Device manager - put client/browser device metadata in correct section ([\matrix-org#9447](matrix-org#9447)). * update the room unread notification counter when the server changes the value without any related read receipt ([\matrix-org#9438](matrix-org#9438)). * Don't show call banners in video rooms ([\matrix-org#9441](matrix-org#9441)). * Prevent useContextMenu isOpen from being true if the button ref goes away ([\matrix-org#9418](matrix-org#9418)). Fixes matrix-org/element-web-rageshakes#15637. * Automatically focus the WYSIWYG composer when you enter a room ([\matrix-org#9412](matrix-org#9412)). * Improve the tooltips on the call lobby join button ([\matrix-org#9428](matrix-org#9428)). * Pass the homeserver's base URL to Element Call ([\matrix-org#9429](matrix-org#9429)). Fixes element-hq/element-web#23301. * Better accommodate long room names in call toasts ([\matrix-org#9426](matrix-org#9426)). * Hide virtual widgets from the room info panel ([\matrix-org#9424](matrix-org#9424)). Fixes element-hq/element-web#23494. * Inhibit clicking on sender avatar in threads list ([\matrix-org#9417](matrix-org#9417)). Fixes element-hq/element-web#23482. * Correct the dir parameter of MSC3715 ([\matrix-org#9391](matrix-org#9391)). Contributed by @dhenneke. * Use a more correct subset of users in `/remakeolm` developer command ([\matrix-org#9402](matrix-org#9402)). * use correct default for notification silencing ([\matrix-org#9388](matrix-org#9388)). Fixes element-hq/element-web#23456. * Device manager - eagerly create `m.local_notification_settings` events ([\matrix-org#9353](matrix-org#9353)). * Close incoming Element call toast when viewing the call lobby ([\matrix-org#9375](matrix-org#9375)). * Always allow enabling sending read receipts ([\matrix-org#9367](matrix-org#9367)). Fixes element-hq/element-web#23433. * Fixes (element-hq/element-web/issues/22609) where the white theme is not applied when `white -> dark -> white` sequence is done. ([\matrix-org#9320](matrix-org#9320)). Contributed by @florianduros. * Fix applying programmatically set height for "top" room layout ([\matrix-org#9339](matrix-org#9339)). Contributed by @Fox32.
Checklist
Notes: Add the first step to integrate the matrix wysiwyg composer
matrix wysiwyg composer
WysiwygComposercan only send messages. in furthers PRs, the remaining features will be addedfeature_wysiwyg_composerlab flagSendMessageComposer, so a part of its code is duplicated.Here's what your changelog entry will look like:
✨ Features