Hook useGetGroupsChats

O hook useGetGroupsChats é responsável por buscar e gerenciar a lista de grupos de chat do usuário. Ele utiliza a biblioteca react-query para realizar a consulta de dados de forma assíncrona e eficiente, proporcionando um estado reativo para a interface do usuário.

Função e Utilização

  • useQuery: hook do react-query utilizado para realizar a consulta de dados.

Estado e Hooks Utilizados

  • data: dados retornados pela consulta, contendo a lista de grupos de chat.
  • isLoading: booleano indicando se a consulta está em andamento.
  • error: booleano indicando se ocorreu um erro durante a consulta.
  • queryKey: chave única para identificar a consulta na cache do react-query.
  • queryFn: função de consulta que realiza a requisição para obter os dados dos grupos de chat.

Funções Utilizadas

  • apiFunction.getUserGroups: função API para buscar a lista de grupos de chat do usuário.

Descrição dos Retornos

  • status : Status da operação de consulta, podendo ser 'groupsLoading' ou 'error'.
  • message : Mensagem descritiva sobre o status atual da operação.
  • groupsList : Lista de grupos de chat retornada pela consulta, ou undefined se não houver dados.
  • groupsLoading indicando se a lista de grupos de chat está carregando (true enquanto os dados estão sendo carregados).
  • groupsError : Booleano indicando se houve um erro na consulta (true se ocorreu um erro).

Estrutura do Código

    import { apiFunction } from '@/api/api'
    import { GroupResponse } from '@/model/GroupModel'
    import { useQuery } from '@tanstack/react-query'

    export const useGetGroupsChats = () => {
    const {
        data,
        isLoading: groupsLoading,
        error: groupsError,
    } = useQuery<GroupResponse[]>({
        queryKey: ['groups'],
        queryFn: apiFunction.getUserGroups,
    })

    if (groupsLoading)
        return { status: 'groupsLoading', message: 'Carregando...' }
    if (groupsError)
        return {
        status: 'error',
        message: 'Ocorreu um erro ao buscar os grupos da sua lista',
        }

    const groupsList = data

    return { groupsList, groupsLoading, groupsError }
    }

Exemplo de Uso