Skip to content

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

@leomp12

Description

@leomp12

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. 🤔

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions