Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pegar orderForm antes de todos os métodos caso ainda não tenha o orderForm ID #19

Open
klzns opened this issue Jul 27, 2016 · 7 comments

Comments

@klzns
Copy link
Contributor

klzns commented Jul 27, 2016

Adicionar a todos os métodos do vtex.js uma verificação se o orderFormId já existe no contexto, se sim, o método é chamado normalmente. Caso não tenha, o vtex.js deve fazer um getOrderForm e quando completo, chamar o método chamado originalmente.

Isso pretende facilitar o uso para que o getOrderForm não seja chamado sem necessidade.

@klzns
Copy link
Contributor Author

klzns commented Jul 27, 2016

Se alguem se sentir a vontade de contribuir com isso, posso ajudar dando as direções.

@cvscarlos
Copy link

@BrenoC seria deixar em cache todos os dados do orderForm para que as próximas chamadas do getOrderForm não gerassem uma nova requisição? Se for isso, isso não pode ser um problema quando for uma situação em que realmente precise dos dados novos?

@klzns
Copy link
Contributor Author

klzns commented Jul 28, 2016

Os métodos do vtex.js que alteram o carrinho precisam do ID do orderForm. Por isso que pedimos que se faça uma chamada ao getOrderForm antes de chamar algum método.

Mas isso está confuso na documentação, parece que isso é pra ser feito sempre, o que não é verdade.

Precisamos apenas de uma única chamada ao getOrderForm por página apenas para pegarmos e guardamos o ID do carrinho. Uma vez que essa chamada foi feita, não precisamos mais ficar chamando getOrderForm.

Com isso, podemos matar também esse cache do getOrderForm, para que ele seja sempre uma chamada a API pedindo os dados atualizados do carrinho.

@cvscarlos
Copy link

@BrenoC ok, acho que entendi.
Basicamente é fazer com que esse código:

var itemIndex = 0; var attachmentName = 'personalizacao'; var content = { "numero": "10" };

vtexjs.checkout.getOrderForm().then(function(){ return vtexjs.checkout.addItemAttachment(itemIndex, attachmentName, content); }).done(function(orderForm){ // Anexo incluído ao item! console.log(orderForm); });

Tenha o mesmo custo computacional que esse (ou seja, não fazer uma request do orderForm):

var itemIndex = 0; var attachmentName = 'personalizacao'; var content = { "numero": "10" };

vtexjs.checkout.addItemAttachment(itemIndex, attachmentName, content);

@klzns
Copy link
Contributor Author

klzns commented Jul 29, 2016

@caljp13 exato!

O vtex.js vai cuidar internamente de pegar o orderFormId caso ele ainda nao tenha.

O código ficara algo assim:

function addItemAttachment(itemIndex, attachmentName, content) {
  var promise = Promise.resolve();
  // se nao tenho o orderFormId ainda, pego ele agora
  if (!this.orderFormId) {
    promise = this.getOrderForm();
  }
  return promise.then(function() {
    // aqui ja temos o orderFormId
    // aqui ficaria o codigo que temos hoje dentro da função addItemAttachment 
  });
}

@cvscarlos
Copy link

@BrenoC faz com CoffeeScript ?

@klzns
Copy link
Contributor Author

klzns commented Aug 2, 2016

@caljp13 por enquanto sim 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants