Atualizar informações do minicart

Olá pessoal,

Fiz dois componentes customizados no Minicart para inserir alguns marketingData (cupom e vendedor) através de mutation.

Até ai blz, funciona direitinho, o problema que quando adiciono o cupom de desconto o minicart não atualiza mostrando as novas informações de desconto, os novos preços etc.

Só aparece as novas infos caso atualize a página.

Como chamo essa atualização? Tenho que usar algum contexto ou hook ?

O console.log mostra o orderForm bonitinho, já com o cupom aplicado, só não atualiza as infos do minicart

	function handleApplyCoupon(event) {
		event.preventDefault()

		if (coupon) {
			handleMutation({
				variables: {
					orderFormId: orderForm.id,
					text: coupon
				}
			})
				.then((response) => {
                    console.log(response)
                    const newOrderForm = response.data.insertCoupon
					setOrderForm(newOrderForm)
					console.log(newOrderForm)
				})
				.catch((err) => console.error(err))
		}
	}
1 Like

@gabrielichikawa você já tentou olhar aqui?

Tmj!

Abs

Consegui usando a API e tratando o response. caso alguém enfrente o mesmo problema.

Não da para usar o setOrderForm(response) direto, pois ele buga a imagem do produto, poderia fazer a tratativa do response alterando o parâmetro da imagem mas preferi fazer dessa forma.

function handleApplyCoupon(event) {
		event.preventDefault()

		if (coupon) {
			const options = {
				method: 'POST',
				headers: {
					'Content-Type': 'application/json',
					Accept: 'application/json'
				},
				body: JSON.stringify({ ...marketingData, coupon: coupon })
			}

			fetch(`/api/checkout/pub/orderForm/${orderForm.id}/attachments/marketingData`, options)
				.then((response) => response.json())
				.then((response) => {
					const itemsSellingPrice = response.items.map((item) => {
						return { sellingPrice: item.sellingPrice }
					})
					const items = orderForm.items.map((item, index) => {
						return { ...item, ...itemsSellingPrice[index] }
					})

					const newOrderForm = {
						...orderForm,
						marketingData: response.marketingData,
						totalizers: response.totalizers,
						items
					}

					setOrderForm(newOrderForm)
				})
				.then(() => {
					if (orderFormCoupon == null) {
						setCouponIsInvalid(true)
					}
				})
				.catch((err) => console.error(err))
		}

		setCoupon('')
	}
2 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.