diff --git a/src/views/Chat.vue b/src/views/Chat.vue index e711a74..50fcbe5 100644 --- a/src/views/Chat.vue +++ b/src/views/Chat.vue @@ -15,6 +15,7 @@ import { onMounted, ref, type Ref } from "vue" const sessionStore = useSessionStore() const messages: Ref> = ref([]) +const messagesDiv: Ref = ref() const currentMessage = ref("") const lastUserMessageId = ref("") @@ -39,11 +40,13 @@ async function postMessage(): Promise { } function updateMessages(querSnap: QuerySnapshot): void { - messages.value = querSnap.docs.map((x) => x.data({ serverTimestamps: "estimate" })) + messages.value = querSnap.docs + .map((x) => x.data({ serverTimestamps: "estimate" })) + .sort((a, b) => { + return a.timestamp.toDate() - b.timestamp.toDate() + }) - messages.value = messages.value.sort((a, b) => { - return a.timestamp.toDate() - b.timestamp.toDate() - }) + scrollMessagesDiv() } async function onFormSubmit() { @@ -59,10 +62,16 @@ function getMessageClass(message: Message) { return message.author === sessionStore.nickname ? "author-message" : "message" } +function scrollMessagesDiv() { + if (!messagesDiv.value) return + messagesDiv.value.scrollTop = messagesDiv.value.scrollHeight +} + onMounted(() => { if (!sessionStore.groupId) return onSnapshot(messagesPath, updateMessages) + scrollMessagesDiv() }) @@ -74,7 +83,7 @@ onMounted(() => { share the link: {{ getShareUrl() }}

-
+