mirror of
https://github.com/abhinavxd/libredesk.git
synced 2026-09-22 18:43:33 +00:00
Clear typing indicators after 5 sec
This commit is contained in:
@@ -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 = {}) {
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user