Executando verificação de segurança...
2

Não precisa agradecer :). Agora sim creio que achei uma solução, vou te mandar aqui e você testa por aí quando puder.

  1. Precisei alterar o arquivo src/pages/lib/queries/getIdsCards.js pelo motivo de ele de fato não ta filtrando nada, por isso ele sempre retornava todos os itens. vou explicar o motivo de cada mudança.
  • $ids: [ID]!: O tipo dessa variável de acordo com a própria documentação do graphql do seu projeto deveria ser um array de ids, essa variável vai ser usada para o filtro.
  • filters: { id: { in: $ids } }: A forma anterior estava incorreta, ele não estava filtrando nada, de acordo novamente com a documentação do graphql do seu projeto, ele diz que a estrutura de filtro tem que ser essa, podendo alterar por exemplo o "in", escolhendo outro tipo de operador que você consegue ver aqui.
import { gql } from '@apollo/client'

const GET_IDS_CARDS = gql`
  query get_idCard($ids: [ID]!) {
    cards(filters: { id: { in: $ids } }) {
      data {
        id
        attributes {
          valor
          description
        }
      }
    }
  }
`
export default GET_IDS_CARDS
  1. Precisei alterar o arquivo src/hooks/use-cart/index.js para alterar como era passado a variável para a query e mudar como os ids são adicionados no carrinho.
  • ids: cartItem: Retirei o objeto filter e renomeei o id para ids, dessa forma no GET_IDS_CARDS, ele pega a variavel normalmente.
  const { data, loading } = useQuery(GET_IDS_CARDS, {
    skip: !cartItem?.length,
    variables: {
      ids: cartItem
    }
  })
  • id.id: Agora no lugar de ele jogar um objeto com id dentro, ele joga o próprio id, já que queremos passar o array de ids para o filtro, certo? Imagino que seja interessante mudar o nome da variável para não ficar redundante também, mas você decide.
  const addToCart = (id) => {
    const itemExiste = cartItem.find((itemId) => itemId === id.id)
    if (!itemExiste) {
      const newItems = [...cartItem, id.id]
      setCartItem(newItems)
    }
  }

Você pode adaptar para o seu projeto da melhor forma que achar, mas eu imagino que o caminho para a solução seja esse que te mandei, fiz pequenos testes localmente e funcionou. Espero que agora consiga resolver seu problema, qualquer coisa pode falar!

Carregando publicação patrocinada...
2

Meu amigo agradeço a voce do fundo do meu coraçâo, estava muito tempo preso com esse problema, te agradeço mesmo!
postei essa duvida em varios lugares mas ninguem quis tirar um tempo para ajudar, mas graças a Deus voce apareceu, desejo tudo de bom para voce, espro um dia poder te ajudar da forma que voce me ajudou hoje! muito obrigado!!!