@@ -32,7 +32,7 @@ export default function Chat() {
32
32
"messages"
33
33
) ;
34
34
onSnapshot (
35
- query ( messageRef , orderBy ( "timestamp" , "desc " ) ) ,
35
+ query ( messageRef , orderBy ( "timestamp" , "asc " ) ) ,
36
36
( snapshot ) => {
37
37
setMessages (
38
38
snapshot . docs . map ( ( doc ) => {
@@ -45,27 +45,34 @@ export default function Chat() {
45
45
}
46
46
} , [ newMessageFromStore && activeChannelId ] ) ;
47
47
48
- // AUTO SCROLL
48
+ // AUTO SCROLL
49
49
50
50
const messagesEndRef = useRef ( null ) ;
51
51
52
+ const scrollToBottom = ( ) => {
53
+ messagesEndRef . current ?. scrollIntoView ( { behavior : "smooth" } ) ;
54
+ } ;
55
+
56
+ useEffect ( ( ) => {
57
+ scrollToBottom ( ) ;
58
+ } , [ messages ] ) ;
52
59
53
60
return (
54
61
< div className = "lg:w-4/5 w-full max-h-screen min-h-screen flex flex-col justify-between" >
55
62
< div className = "flex flex-col justify-between h-full w-full" >
56
63
< ChatHeader > </ ChatHeader >
57
- < div className = "overflow-scroll basis-[75%] max-lg:basis-[78%] no-scrollbar" >
58
- { messages &&
59
- messages . map ( ( messageInfo ) => {
60
- return (
61
- < Message
62
- key = { messageInfo . timestamp }
63
- messageInfo = { messageInfo }
64
- > </ Message >
65
- ) ;
66
- } ) }
67
- </ div >
68
- < div className = "" > </ div >
64
+ < div className = "overflow-scroll basis-[75%] max-lg:basis-[78%] no-scrollbar" >
65
+ { messages &&
66
+ messages . map ( ( messageInfo ) => {
67
+ return (
68
+ < Message
69
+ key = { messageInfo . timestamp }
70
+ messageInfo = { messageInfo }
71
+ > </ Message >
72
+ ) ;
73
+ } ) }
74
+ < div ref = { messagesEndRef } > < /div >
75
+ </ div >
69
76
< ChatInput handleMessageUpdate = { onMessageUpdate } > </ ChatInput >
70
77
</ div >
71
78
</ div >
0 commit comments