Skip to content

Event

Event — classe para publicar eventos e se inscrever em eventos da plataforma Flowlu a partir de uma miniaplicação. É permitido criar qualquer número de instâncias para diferentes eventos-alvo.

ts
import { Event } from '@flowlu/miniapp-jssdk'

Construtor

Cria uma instância de Event com os parâmetros informados

ts
constructor(params: EventParams)
ParâmetroTipoDescrição
paramsEventParamsParâmetros de criação do evento

Propriedades

events

Objeto EventCallbacks<EventEventName> com o manipulador do evento onEmit

ts
get events(): EventCallbacks
set events(value: EventCallbacks)

target

Objeto EventTarget que identifica o evento-alvo, definido por meio do construtor

ts
target: EventTarget

Métodos

destroy

Remove inscrições e libera recursos

ts
destroy(): void

emit

Publica um evento na plataforma — todos os inscritos do evento-alvo EventTarget recebem os dados EventInfo

ts
static async emit(params: EventEmitParams): Promise<any>
ParâmetroTipoDescrição
paramsEventEmitParamsParâmetros de publicação do evento

off

Remove uma inscrição estabelecida anteriormente via on() ou once()

ts
async off(): Promise<any>

on

Registra um manipulador do evento onEmit, disparado sempre que ocorre na plataforma um evento com um target correspondente

ts
async on(callback: EventCallback): Promise<any>
ParâmetroTipoDescrição
callbackEventCallbackManipulador do evento onEmit

once

Registra um manipulador de uso único do evento onEmit — removido automaticamente após o primeiro disparo

ts
async once(callback: EventCallback): Promise<any>
ParâmetroTipoDescrição
callbackEventCallbackManipulador do evento onEmit

Exemplo

ts
import { App, Event } from '@flowlu/miniapp-jssdk'

await App.initializeFrame()

// publicar um evento arbitrário e passar dados arbitrários
await Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
})

// inscrição na abertura do painel lateral
const sidepanelOpened = new Event({
  target: {
    code: 'sidepanel_opened'
  }
})

await sidepanelOpened.on(async (info) => {
  console.log('Painel lateral aberto', info)

  // cancelar a inscrição na abertura
  await sidepanelOpened.off()

  // e inscrição única no fechamento
  new Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Painel lateral fechado', info)
  })
})
js
const App = window.FlowluMiniApp;

await App.initializeFrame();

// publicar um evento arbitrário e passar dados arbitrários
await App.Frame.Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
});

// inscrição na abertura do painel lateral
const sidepanelOpened = new App.Frame.Event({
  target: {
    code: 'sidepanel_opened'
  }
});

await sidepanelOpened.on(async (info) => {
  console.log('Painel lateral aberto', info);

  // cancelar a inscrição na abertura
  await sidepanelOpened.off();

  // e inscrição única no fechamento
  new App.Frame.Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Painel lateral fechado', info);
  });
});

Publicado sob a licença MIT.