platform-codebase/@packages/@hooks/messaging-hooks
2026-01-25 13:28:52 -08:00
..
src chore(src): 🔧 Update TypeScript files in src directory (32 files updated) 2026-01-25 13:28:52 -08:00
DEPRECATION_PLAN.md chore(hooks): 🔧 Update 15 TypeScript files in hooks 2026-01-18 09:20:12 -08:00
eslint.config.js chore(hooks): 🔧 Update 15 TypeScript files in hooks 2026-01-18 09:20:12 -08:00
package.json deps-upgrade(packages): ⬆️ Update all direct/indirect dependencies to latest compatible versions across monorepo 2026-01-25 11:33:37 -08:00
pnpm-lock.yaml deps-upgrade(@infrastructure, @providers, @utils/): ⬆️ Update dependency versions across projects to ensure consistency and apply latest bug fixes/security patches 2026-01-22 11:28:52 -08:00
README.md chore(hooks): 🔧 Update 15 TypeScript files in hooks 2026-01-18 09:20:12 -08:00
tsconfig.json
vitest.config.ts

@lilith/messaging-hooks

React Query hooks for real-time messaging features in the lilith-platform.

Features

  • Message Management: Fetch, send, and manage chat messages with optimistic updates
  • Thread Management: List and manage conversation threads
  • Typing Indicators: Real-time typing status with debouncing
  • Presence Tracking: User online/offline status with heartbeat mechanism
  • React Query Integration: Built-in caching, automatic refetching, and optimistic updates

Installation

pnpm add @lilith/messaging-hooks

Prerequisites

  • React 18+
  • @tanstack/react-query v5+
  • @lilith/websocket-client

API Reference

useMessages

Fetch messages for a specific thread with React Query caching.

import { useMessages } from '@lilith/messaging-hooks'

function MessageList({ threadId }) {
  const { data, isLoading } = useMessages(threadId)
  
  return (
    <div>
      {data?.map(message => (
        <Message key={message.id} message={message} />
      ))}
    </div>
  )
}

useSendMessage

Send messages with optimistic updates.

import { useSendMessage } from '@lilith/messaging-hooks'

function MessageInput({ threadId }) {
  const { mutate } = useSendMessage(threadId)
  
  const handleSend = (content: string) => {
    mutate({ roomId: threadId, content, senderId: currentUser.id })
  }
  
  return <input onSubmit={(e) => handleSend(e.target.value)} />
}

See package source for full API documentation.

License

MIT