Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 515x 515x 515x 515x 9x 9x 9x 515x 515x 515x 515x | import { useState } from 'react'
import type { MessageRouter } from './useMessageRouter'
export function useConversationState(router: MessageRouter) {
const [conversations, setConversations] = useState<{ id: string; title: string; updatedAt: number }[]>([])
const [activeConversationId, setActiveConversationId] = useState<string | null>(null)
const [conversationSearchResults, setConversationSearchResults] = useState<
{ id: string; title: string; updatedAt: number; snippet: string }[] | null
>(null)
router.register('conversationList', (msg) => {
setConversations(msg.conversations as typeof conversations)
setActiveConversationId(msg.activeId as string | null)
setConversationSearchResults(null)
})
router.register('conversationSearchResults', (msg) => {
setConversationSearchResults((msg.results as typeof conversationSearchResults) ?? [])
})
router.register('conversationLoaded', (msg) => {
setActiveConversationId((msg.conversation as { id: string }).id)
})
router.register('conversationSwitched', (msg) => {
setActiveConversationId((msg.conversation as { id: string | null }).id)
})
return {
conversations,
setConversations,
activeConversationId,
conversationSearchResults,
setConversationSearchResults,
}
}
|