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

[RFC] Instâncias e emissão de eventos #28

Open
leomp12 opened this issue Nov 14, 2019 · 0 comments
Open

[RFC] Instâncias e emissão de eventos #28

leomp12 opened this issue Nov 14, 2019 · 0 comments

Comments

@leomp12
Copy link
Member

leomp12 commented Nov 14, 2019

Proposta

Emitir eventos após cada requisição, retornando o objeto response:

  1. Os eventos de sucesso (resolved) serão emitidos para cada combinação método (cada API) e resource (${api}.${resource});
  2. O nome do evento será equivalente ao método HTTP (lowercase);
  3. Eventos de erro (reject) serão emitidos diretamente no método com o nome error;

Exemplos de uso:

ecomClient.store.products.on('get', ({ data }) => {
  console.log(data.sku) // "S123"
})
ecomClient.store.on('error', response => {
  console.log(response.status) // 400
})

Motivação

  • Facilitar manipulação de dados assíncronos em múltiplos componentes/widgets no storefront;

    • Ex.: um produto carrega, um widget escuta e trata o evento e um adiciona as estrelinhas de review, substituiria o tratamento atual via IntersectionObserver, acredito que seria mais fácil de implementar e mais flexível (todo o body do produto recebido como objeto).
  • Centralizar manipulação de erros e data (um state global ?) no admin;

  • Centralizar com facilidade o debug de requisições com erro server side (Node.js);

O que as instâncias têm a ver com isto?

Segurança: a intenção seria adicionar a possibilidade de criar intâncias de forma parecida com o axios para executar requisições autenticadas, neste caso os eventos são emitidos dentro da própria instância, que deverá ser um objeto privado, fora do escopo global.

Não emitir eventos na instância padrão caso a requisição seja autenticada ?

Outra opção

Uma implementação parecida, com a mesma solução mas talvez mais possibilidades pode ser utilizar RxJS e fornecer observadores em vez de métodos retornando promises. 🤔

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

No branches or pull requests

1 participant