From 85237ea62af40837bb5835f161155f79eda1382e Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Mon, 6 Dec 2021 10:37:38 +0900 Subject: [PATCH 1/5] Move message status and created-at components into the body of message content component --- .../App/stories/index.stories.js | 3 + .../__tests__/MessageContent.spec.js | 14 +--- .../__snapshots__/MessageContent.spec.js.snap | 10 +-- src/ui/MessageContent/index.scss | 79 ++++++++++++------- src/ui/MessageContent/index.tsx | 39 ++++----- 5 files changed, 82 insertions(+), 63 deletions(-) diff --git a/src/smart-components/App/stories/index.stories.js b/src/smart-components/App/stories/index.stories.js index 483dcce6d..0af0e787a 100644 --- a/src/smart-components/App/stories/index.stories.js +++ b/src/smart-components/App/stories/index.stories.js @@ -220,6 +220,7 @@ export const user2 = () => fitPageSize( showSearchIcon allowProfileEdit profileUrl={addProfile} + config={{ logLevel: 'all' }} replyType="QUOTE_REPLY" useMessageGrouping={false} imageCompression={{ @@ -238,6 +239,7 @@ export const user3 = () => fitPageSize( showSearchIcon allowProfileEdit profileUrl={addProfile} + config={{ logLevel: 'all' }} replyType="QUOTE_REPLY" /> ); @@ -251,6 +253,7 @@ export const user4 = () => fitPageSize( allowProfileEdit useMessageGrouping={false} profileUrl={addProfile} + config={{ logLevel: 'all' }} replyType="QUOTE_REPLY" /> ); diff --git a/src/ui/MessageContent/__tests__/MessageContent.spec.js b/src/ui/MessageContent/__tests__/MessageContent.spec.js index 4b0e8ef30..273c6e12b 100644 --- a/src/ui/MessageContent/__tests__/MessageContent.spec.js +++ b/src/ui/MessageContent/__tests__/MessageContent.spec.js @@ -72,7 +72,7 @@ describe('MessageContent', () => { component.find('.sendbird-message-content__left__avatar').hostNodes().exists() ).toBe(true); expect( - component.find('.sendbird-message-content__left__created-at').hostNodes().exists() + component.find('.sendbird-message-content__middle__body-container__created-at.left').hostNodes().exists() ).toBe(false); expect( component.find('.sendbird-message-content-menu.outgoing').hostNodes().exists() @@ -87,7 +87,7 @@ describe('MessageContent', () => { component.find('.sendbird-message-content__right.chain-top').hostNodes().exists() ).toBe(false); expect( - component.find('.sendbird-message-content__right__created-at').hostNodes().exists() + component.find('.sendbird-message-content__middle__body-container__created-at.right').hostNodes().exists() ).toBe(true); expect( component.find('.sendbird-message-content-menu.incoming').hostNodes().exists() @@ -198,10 +198,7 @@ describe('MessageContent', () => { outgoingMessage.find('.sendbird-message-content__left__avatar').hostNodes().exists() ).toBe(false); expect( - outgoingMessage.find('.sendbird-message-content__left__created-at').hostNodes().exists() - ).toBe(false); - expect( - outgoingMessage.find('.sendbird-message-content__right__created-at').hostNodes().exists() + outgoingMessage.find('.sendbird-message-content__middle__body-container__created-at').hostNodes().exists() ).toBe(false); const incomingMessage = mount( { incomingMessage.find('.sendbird-message-content__left__avatar').hostNodes().exists() ).toBe(false); expect( - incomingMessage.find('.sendbird-message-content__left__created-at').hostNodes().exists() - ).toBe(false); - expect( - incomingMessage.find('.sendbird-message-content__right__created-at').hostNodes().exists() + incomingMessage.find('.sendbird-message-content__middle__body-container__created-at').hostNodes().exists() ).toBe(false); }); diff --git a/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap b/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap index 8af93db64..0e39c2f39 100644 --- a/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap +++ b/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap @@ -89,16 +89,16 @@ exports[`MessageContent should do a snapshot test of the MessageContent DOM 1`] First second third + + mock-date +
- - mock-date -
diff --git a/src/ui/MessageContent/index.scss b/src/ui/MessageContent/index.scss index d43af7890..e15befbe6 100644 --- a/src/ui/MessageContent/index.scss +++ b/src/ui/MessageContent/index.scss @@ -36,11 +36,28 @@ flex-direction: column; max-width: 400px; align-items: flex-start; + + .sendbird-message-content__middle__body-container { + .sendbird-message-content__middle__body-container__created-at { + position: absolute; + bottom: 6px; + right: -84px; + white-space: nowrap; + display: flex; + flex-direction: row; + min-width: 80px; + &.supposed-hover { + display: none; + } + } + } + .sendbird-message-content__middle__sender-name { position: relative; margin-left: 12px; margin-bottom: 4px; } + .sendbird-message-content__middle__quote-message { position: relative; width: 100%; @@ -64,16 +81,6 @@ } } - .sendbird-message-content__right__created-at { - position: absolute; - bottom: 2px; - white-space: nowrap; - display: inline-flex; - &.supposed-hover { - display: none; - } - } - .sendbird-message-content-menu { position: relative; flex-direction: row; @@ -87,9 +94,6 @@ &:hover { .sendbird-message-content__right { - .sendbird-message-content__right__created-at { - display: none; - } .sendbird-message-content-menu { display: inline-flex; } @@ -112,20 +116,6 @@ } } - .sendbird-message-content__left__created-at { - position: absolute; - bottom: 2px; - right: 4px; - white-space: nowrap; - display: flex; - box-sizing: content-box; - min-width: 16px; - min-height: 16px; - &.supposed-hover { - display: none; - } - } - .sendbird-message-content-menu { position: absolute; top: 2px; @@ -144,6 +134,7 @@ flex-direction: column; max-width: 400px; align-items: flex-end; + .sendbird-message-content__middle__quote-message { position: relative; width: 100%; @@ -153,7 +144,27 @@ } .sendbird-message-content__middle__body-container { + position: relative; width: fit-content; + + .sendbird-message-content__middle__body-container__created-at { + position: absolute; + bottom: 2px; + left: -84px; + white-space: nowrap; + display: flex; + justify-content: flex-end; + box-sizing: content-box; + min-width: 80px; + min-height: 16px; + &.supposed-hover { + display: none; + } + .sendbird-message-content__middle__body-container__created-at__component-container { + position: relative; + display: inline-flex; + } + } } } @@ -163,19 +174,27 @@ &:hover { .sendbird-message-content__left { - .sendbird-message-content__left__created-at { - display: none; - } .sendbird-message-content-menu { display: inline-flex; } } + .sendbird-message-content__middle { + .sendbird-message-content__middle__body-container { + .sendbird-message-content__middle__body-container__created-at, + .sendbird-message-content__middle__body-container__right-created-at { + display: none; + } + } + } } } .sendbird-message-content__middle__body-container { position: relative; width: fit-content; + display: flex; + flex-direction: row; + .sendbird-message-content__middle__message-item-body { width: 100%; box-sizing: border-box; diff --git a/src/ui/MessageContent/index.tsx b/src/ui/MessageContent/index.tsx index 5b81168cd..8bea1f590 100644 --- a/src/ui/MessageContent/index.tsx +++ b/src/ui/MessageContent/index.tsx @@ -132,15 +132,6 @@ export default function MessageContent({ )} /> )} - {(isByMe && !chainBottom) && ( -
- -
- )} {/* outgoing menu */} {isByMe && (
@@ -200,6 +191,18 @@ export default function MessageContent({ ) : null} {/* container: message item body + emoji reactions */}
+ {/* message status component */} + {(isByMe && !chainBottom) && ( +
+
+ +
+
+ )} {/* message item body components */} {isTextMessage(message as UserMessage) && (
)} + {(!isByMe && !chainBottom) && ( + + )}
{/* right */}
- {(!isByMe && !chainBottom) && ( - - )} {/* incoming menu */} {!isByMe && (
From d8f5e6da475296f6b754ebeac73b3c77416a7ac9 Mon Sep 17 00:00:00 2001 From: HoonBaek Date: Mon, 6 Dec 2021 21:25:45 +0900 Subject: [PATCH 2/5] Contain message text with paragraph tag and set their word-break properties to the break-word --- .../__snapshots__/MessageContent.spec.js.snap | 12 +-- src/ui/MessageInput/index.jsx | 7 +- .../OGMessageItemBody.spec.js.snap | 10 ++- src/ui/OGMessageItemBody/index.scss | 6 +- src/ui/OGMessageItemBody/index.tsx | 75 +++++++++---------- .../__tests__/TextMessageItemBody.spec.js | 6 -- .../TextMessageItemBody.spec.js.snap | 22 +++--- src/ui/TextMessageItemBody/index.scss | 11 ++- src/ui/TextMessageItemBody/index.tsx | 60 +++++++-------- 9 files changed, 102 insertions(+), 107 deletions(-) diff --git a/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap b/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap index 0e39c2f39..220db1a05 100644 --- a/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap +++ b/src/ui/MessageContent/__tests__/__snapshots__/MessageContent.spec.js.snap @@ -80,15 +80,15 @@ exports[`MessageContent should do a snapshot test of the MessageContent DOM 1`]
-
- First second third - -
+

+ diff --git a/src/ui/MessageInput/index.jsx b/src/ui/MessageInput/index.jsx index a6dc6ecf5..2a7ac9c92 100644 --- a/src/ui/MessageInput/index.jsx +++ b/src/ui/MessageInput/index.jsx @@ -79,7 +79,9 @@ const MessageInput = React.forwardRef((props, ref) => { }, [inputValue]); // clear input value when channel changes useEffect(() => { - setInputValue(''); + if (!isEdit) { + setInputValue(''); + } }, [channelUrl]); const sendMessage = () => { @@ -137,7 +139,8 @@ const MessageInput = React.forwardRef((props, ref) => { setIsShiftPressed(false); } }} - /> + > + {/* placeholder */} {!inputValue && (