UNPKG

pwi-kdsmobile-hooks

Version:

Biblioteca de React Hooks para acompanhamento em tempo real de pedidos e exibição sequencial de senhas, ideal para sistemas de atendimento, painéis e aplicações que precisam consumir eventos do backend de forma simples e tipada.

149 lines (118 loc) 3.35 kB
# pwi-kdsmobile-hooks Biblioteca de React Hooks para acompanhamento em tempo real de pedidos e exibição sequencial de senhas, ideal para sistemas de atendimento, painéis e aplicações que precisam consumir eventos do backend de forma simples e tipada. [![npm version](https://img.shields.io/npm/v/pwi-kdsmobile-hooks.svg)](https://www.npmjs.com/package/pwi-kdsmobile-hooks) --- ## ✨ Principais Recursos - Consumo de eventos de pedidos via SSE ou WebSocket - Serialização de exibição de senhas (ex: modais animados) - Tipos TypeScript completos para integração segura --- ## 🚀 Instalação ```bash npm install pwi-kdsmobile-hooks # ou pnpm add pwi-kdsmobile-hooks ``` ### Requisitos - React >= 19.0.0 - TypeScript recomendado --- ## 📦 Hooks Disponíveis ### `usePedidoEventos` Hook para consumir eventos de atualização de pedidos via SSE ou WebSocket. **Assinatura:** ```ts const pedidoEventos = usePedidoEventos({ eventSourceUrl: string, token: string, onSenhasParaExibir: (senhas: Senha[]) => void, onError: (err: PlataError) => void, }) ``` **Retorno:** - `iniciar(tipo: 'sse' | 'ws')`: inicia o consumo dos eventos - `userHash`: identificador do usuário (string) - `senhas`: array de senhas atuais **Exemplo:** ```tsx const pedidoEventos = usePedidoEventos({ eventSourceUrl: 'https://api.exemplo.com', token: 'TOKEN_DO_PEDIDO', onSenhasParaExibir: (senhas) => { /* exibir senhas */ }, onError: (err) => { /* tratar erro */ }, }) useEffect(() => { pedidoEventos.iniciar('sse') }, []) ``` --- ### `useFilaExibicaoSenha` Hook para serializar a exibição de senhas (ex: modais animados). **Assinatura:** ```ts const { senhaExibicao, adicionarSenhas, fimExibicao } = useFilaExibicaoSenha() ``` - `senhaExibicao`: senha atualmente em exibição (ou null) - `adicionarSenhas(senhas: Senha[])`: adiciona novas senhas à fila - `fimExibicao()`: sinaliza que a exibição da senha terminou **Exemplo:** ```tsx const { senhaExibicao, adicionarSenhas, fimExibicao } = useFilaExibicaoSenha() useEffect(() => { if (senhaExibicao) { // Exibir modal/alerta // Ao fechar: fimExibicao() } }, [senhaExibicao]) ``` --- ## 📝 Tipos Exportados - **`Senha`**: representa uma senha de pedido ```ts interface Senha { loja?: string senha: string status: 'preparando' | 'pronto' } ``` - **`PlataError`**: erro padrão da API ```ts interface PlataError { errorID: string msg: string } ``` - **`PlataResult<T>`**: resultado de API (T ou erro) ```ts type PlataResult<T> = T | PlataError ``` - **`ServerEvent`**: evento recebido do servidor ```ts interface ServerEvent { request: string senhas?: Senha[] userHash?: string erro?: PlataError } ``` --- ## 💡 Exemplo de Integração Completa ```tsx import { usePedidoEventos, useFilaExibicaoSenha } from 'pwi-kdsmobile-hooks' const { senhaExibicao, adicionarSenhas, fimExibicao } = useFilaExibicaoSenha() const pedidoEventos = usePedidoEventos({ eventSourceUrl: 'https://api.exemplo.com', token: 'TOKEN_DO_PEDIDO', onSenhasParaExibir: adicionarSenhas, onError: (err) => alert(err.msg), }) useEffect(() => { pedidoEventos.iniciar('sse') }, []) useEffect(() => { if (senhaExibicao) { // Exibir modal/alerta // Ao fechar: fimExibicao() } }, [senhaExibicao]) ```