Clear typing indicators after 5 sec

This commit is contained in:
Abhinav Raut
2026-04-05 00:54:29 +05:30
parent 20ff4a157a
commit 88bb199da2
2 changed files with 30 additions and 2 deletions
@@ -87,6 +87,8 @@ export const useConversationStore = defineStore('conversation', () => {
priority_first: 'conversation.sort.priorityFirst'
}
let typingTimeout = null
const conversations = reactive({
data: [],
listType: null,
@@ -798,7 +800,20 @@ export const useConversationStore = defineStore('conversation', () => {
// Only update typing status for the current conversation
if (conversation.data?.uuid !== conversation_uuid) return
if (typingTimeout) {
clearTimeout(typingTimeout)
typingTimeout = null
}
conversation.isTyping = is_typing
// Auto-clear after 5s if no new typing event arrives.
if (is_typing) {
typingTimeout = setTimeout(() => {
conversation.isTyping = false
typingTimeout = null
}, 5000)
}
}
function sendTyping (isTyping, otherAttributes = {}) {
+15 -2
View File
@@ -8,6 +8,7 @@ import { useUserStore } from './user.js'
export const useChatStore = defineStore('chat', () => {
const userStore = useUserStore()
// State
let typingTimeout = null
const isTyping = ref(false)
const currentConversation = ref({})
const conversations = ref(null)
@@ -167,10 +168,22 @@ export const useChatStore = defineStore('chat', () => {
const setTypingStatus = (conversationUUID, status) => {
if (!conversationUUID) return
if (currentConversation.value?.uuid !== conversationUUID) {
return
if (currentConversation.value?.uuid !== conversationUUID) return
if (typingTimeout) {
clearTimeout(typingTimeout)
typingTimeout = null
}
isTyping.value = status
// Auto-clear after 5s if no new typing event arrives.
if (status) {
typingTimeout = setTimeout(() => {
isTyping.value = false
typingTimeout = null
}, 5000)
}
}
const setCurrentConversation = (conversation) => {