Valor do carrinho desatualizado após changeprice

Realizei uma requisição através do backend para alterar o preço de um item no carrinho. Ao atualizar a página manualmente, através de um F5 o preço é aplicado no minicart.

Entretanto, esperava que o minicart atualizasse automaticamente esse valor ao atualizar o valor pelo backend.

Testei destas duas formas, porém, não recebi o valor atualizado no minicart sem atualizar manualmente a página.

const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json', Accept: 'application/json'},
  body: JSON.stringify({orderItems: [{quantity: 1, seller: '1', id: '196', index: 0, price: 199}]})
};
fetch('/api/checkout/pub/orderForm/82ee36a97cab4db481aa4b68219d9ccb/items?allowedOutdatedData=paymentData', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

AddToCart

let raw = JSON.stringify({ "price": 199 });
let requestOptions = { method: 'PUT', body: raw };
fetch("/api/checkout/pub/orderForm/82ee36a97cab4db481aa4b68219d9ccb/items/0/price", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

ChangePrice

Tentamos atualizar via setManualPrice do OrderItems, fornecendo o price e o itemIndex mas novamente não foi possível atualizar o valor no minicart. Apesar de várias tentativas de fornecer as props o resultado era sempre undefined, sem refletir no minicart.

1 Like

estou passando exatamente pelo mesmo! conseguiu alguma solução, @jacksonvfo ?

Em um momento eu removi a node_modules e o yarn.lock, bem como as dependencias de app no package.json com um vtex setup -i no cli. Com isso, no proximo setup, o hook setManualPrice do OrderItems passou a funcionar normalmente, atualizando o carrinho ao completar a requisição dele.

Provavelmente alguma dependência quebrou o worker que atualiza isso

como vc está chamando a função setManualPrice?

estou usando dessa forma

const { setManualPrice } = useOrderItems();
setManualPrice({ itemIndex: 0, price: 100 });

e estou tomando este erro:

GraphQL error: Variable "$manualPriceInput" got invalid value { price: { itemIndex: 0, price: 10000 } }; Field itemIndex of required type Int! was not provided.
GraphQL error: Variable "$manualPriceInput" got invalid value { itemIndex: 0, price: 10000 } at "manualPriceInput.price"; Expected type Float. Float cannot represent non numeric value: { itemIndex: 0, price: 10000 }

Uso passando os valores diretamente, sem estarem em um objeto.

orderItems.setManualPrice(
  Number(itemPrice),
  index,
)

depois de postar, testei outras formas de passar os parâmetros e cheguei a essa aí também, e finalmente funcionou! mas obrigado pela força, @jacksonvfo