Skip to content

Event

Event — clase para publicar eventos y suscribirse a eventos de la plataforma Flowlu desde una miniaplicación. Se permite crear cualquier número de instancias para diferentes eventos objetivo.

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

Constructor

Crea una instancia de Event con los parámetros indicados

ts
constructor(params: EventParams)
ParámetroTipoDescripción
paramsEventParamsParámetros de creación del evento

Propiedades

events

Objeto EventCallbacks<EventEventName> con el manejador del evento onEmit

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

target

Objeto EventTarget que identifica el evento objetivo, se establece mediante el constructor

ts
target: EventTarget

Métodos

destroy

Elimina las suscripciones y libera los recursos

ts
destroy(): void

emit

Publica un evento en la plataforma — todos los suscriptores del evento objetivo EventTarget reciben los datos EventInfo

ts
static async emit(params: EventEmitParams): Promise<any>
ParámetroTipoDescripción
paramsEventEmitParamsParámetros de publicación del evento

off

Elimina una suscripción establecida previamente mediante on() o once()

ts
async off(): Promise<any>

on

Registra un manejador del evento onEmit, se dispara cada vez que ocurre en la plataforma un evento con un target coincidente

ts
async on(callback: EventCallback): Promise<any>
ParámetroTipoDescripción
callbackEventCallbackManejador del evento onEmit

once

Registra un manejador de un solo uso del evento onEmit — se elimina automáticamente tras el primer disparo

ts
async once(callback: EventCallback): Promise<any>
ParámetroTipoDescripción
callbackEventCallbackManejador del evento onEmit

Ejemplo

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

await App.initializeFrame()

// publicar un evento arbitrario y pasar datos arbitrarios
await Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
})

// suscripción a la apertura del panel lateral
const sidepanelOpened = new Event({
  target: {
    code: 'sidepanel_opened'
  }
})

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

  // cancelar la suscripción a la apertura
  await sidepanelOpened.off()

  // y suscripción única al cierre
  new Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Panel lateral cerrado', info)
  })
})
js
const App = window.FlowluMiniApp;

await App.initializeFrame();

// publicar un evento arbitrario y pasar datos arbitrarios
await App.Frame.Event.emit({
  target: {
    component: 'demo',
    action: 'ping'
  },
  info: {
    hello: 'world'
  }
});

// suscripción a la apertura del panel lateral
const sidepanelOpened = new App.Frame.Event({
  target: {
    code: 'sidepanel_opened'
  }
});

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

  // cancelar la suscripción a la apertura
  await sidepanelOpened.off();

  // y suscripción única al cierre
  new App.Frame.Event({
    target: {
      code: 'sidepanel_closed'
    }
  }).once((info) => {
    console.log('Panel lateral cerrado', info);
  });
});

Publicado bajo la licencia MIT.