-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Proposta
Emitir eventos após cada requisição, retornando o objeto response:
- Os eventos de sucesso (resolved) serão emitidos para cada combinação método (cada API) e resource (
${api}.${resource}); - O nome do evento será equivalente ao método HTTP (lowercase);
- 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).
- Ex.: um produto carrega, um widget escuta e trata o evento e um adiciona as estrelinhas de review, substituiria o tratamento atual via
-
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. 🤔