diff --git a/ts/components/session/conversation/SessionMessagesList.tsx b/ts/components/session/conversation/SessionMessagesList.tsx index 0a1e79a4e..41a4ba600 100644 --- a/ts/components/session/conversation/SessionMessagesList.tsx +++ b/ts/components/session/conversation/SessionMessagesList.tsx @@ -23,6 +23,8 @@ export const SessionMessagesList = (props: { scrollToQuoteMessage: (options: QuoteClickOptions) => Promise; onPageUpPressed: () => void; onPageDownPressed: () => void; + onHomePressed: () => void; + onEndPressed: () => void; }) => { const messagesProps = useSelector(getSortedMessagesTypesOfSelectedConversation); @@ -34,6 +36,14 @@ export const SessionMessagesList = (props: { props.onPageDownPressed(); }); + useKey('Home', () => { + props.onHomePressed(); + }); + + useKey('End', () => { + props.onEndPressed(); + }); + return ( <> {messagesProps.map(messageProps => { diff --git a/ts/components/session/conversation/SessionMessagesListContainer.tsx b/ts/components/session/conversation/SessionMessagesListContainer.tsx index fc12d0a97..642d156b2 100644 --- a/ts/components/session/conversation/SessionMessagesListContainer.tsx +++ b/ts/components/session/conversation/SessionMessagesListContainer.tsx @@ -151,6 +151,8 @@ class SessionMessagesListContainerInner extends React.Component { scrollToQuoteMessage={this.scrollToQuoteMessage} onPageDownPressed={this.scrollPgDown} onPageUpPressed={this.scrollPgUp} + onHomePressed={this.scrollTop} + onEndPressed={this.scrollEnd} /> @@ -267,6 +269,24 @@ class SessionMessagesListContainerInner extends React.Component { }); } + private scrollTop() { + const messageContainer = this.props.messageContainerRef.current; + if (!messageContainer) { + return; + } + + messageContainer.scrollTo(0, -messageContainer.scrollHeight); + } + + private scrollEnd() { + const messageContainer = this.props.messageContainerRef.current; + if (!messageContainer) { + return; + } + + messageContainer.scrollTo(0, 0); + } + private async scrollToQuoteMessage(options: QuoteClickOptions) { const { quoteAuthor, quoteId, referencedMessageNotFound } = options;