Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Listening to events

The SDK emits several events to provide the application with an up-to-date state of the SDK or ongoing payments.

Add event listener API docs

Rust
pub(crate) struct SdkEventListener {}
impl EventListener for SdkEventListener {
    fn on_event(&self, e: SdkEvent) {
        info!("Received event: {e:?}");
    }
}

pub(crate) fn add_event_listener(
    sdk: &BreezSdk,
    listener: Box<SdkEventListener>,
) -> Result<String> {
    let listener_id = sdk.add_event_listener(listener);
    Ok(listener_id)
}
Swift
class SdkEventListener: EventListener {
    func onEvent(event: SdkEvent) {
        print("Received event: ", event)
    }
}

func addEventListener(sdk: BreezSdk, listener: SdkEventListener) -> String {
    let listenerId = sdk.addEventListener(listener: listener)
    return listenerId
}
Kotlin
class SdkListener : EventListener {
    override fun onEvent(e: SdkEvent) {
        // Log.v("SDKListener", "Received event $e")
    }
}

fun addEventListener(sdk: BreezSdk, listener: SdkListener): String? {
    try {
        val listenerId = sdk.addEventListener(listener)
        return listenerId
    } catch (e: Exception) {
        // handle error
        return null
    }
}
Javascript
class JsEventListener {
  onEvent = (event: SdkEvent) => {
    console.log(`Received event: ${JSON.stringify(event)}`)
  }
}

const eventListener = new JsEventListener()

const listenerId = sdk.addEventListener(eventListener)
React Native
class JsEventListener {
  onEvent = (event: SdkEvent) => {
    console.log(`Received event: ${JSON.stringify(event)}`)
  }
}

const eventListener = new JsEventListener()

const listenerId = sdk.addEventListener(eventListener)
Flutter
StreamSubscription<SdkEvent>? _eventSubscription;
Stream<SdkEvent>? _eventStream;

// Initializes SDK event stream.
//
// Call once on your Dart entrypoint file, e.g.; `lib/main.dart`
// or singleton SDK service. It is recommended to use a single instance
// of the SDK across your Flutter app.
void initializeEventsStream(BreezSdk sdk) {
  _eventStream ??= sdk.addEventListener().asBroadcastStream();
}

final _eventStreamController = StreamController<SdkEvent>.broadcast();
Stream<SdkEvent> get eventStream => _eventStreamController.stream;

// Subscribe to the event stream
void subscribeToEventStream() {
  _eventSubscription = _eventStream?.listen((sdkEvent) {
    _eventStreamController.add(sdkEvent);
  }, onError: (e) {
    _eventStreamController.addError(e);
  });
}
Python
class SdkListener(EventListener):
    def on_event(self, event: SdkEvent):
        logging.debug(f"Received event {event}")


def add_event_listener(sdk: BreezSdk, listener: SdkListener):
    try:
        listener_id = sdk.add_event_listener(listener=listener)
        return listener_id
    except Exception as error:
        logging.error(error)
        raise


Go
type SdkListener struct{}

func (SdkListener) OnEvent(e breez_sdk_spark.SdkEvent) {
    log.Printf("Received event %#v", e)
}

func AddEventListener(sdk *breez_sdk_spark.BreezSdk, listener SdkListener) string {
    return sdk.AddEventListener(listener)
}

Remove event listener API docs

When you no longer need to listen to events, you can remove the listener.

Rust
pub(crate) fn remove_event_listener(sdk: &BreezSdk, listener_id: &str) -> Result<()> {
    sdk.remove_event_listener(listener_id);
    Ok(())
}
Swift
func removeEventListener(sdk: BreezSdk, listenerId: String) {
    sdk.removeEventListener(id: listenerId)
}
Kotlin
fun removeEventListener(sdk: BreezSdk, listenerId: String)  {
    try {
        sdk.removeEventListener(listenerId)
    } catch (e: Exception) {
        // handle error
    }
}
Javascript
sdk.removeEventListener(listenerId)
React Native
sdk.removeEventListener(listenerId)
Flutter
void unsubscribeFromEventStream() {
  _eventSubscription?.cancel();
}
Python
def remove_event_listener(sdk: BreezSdk, listener_id: str):
    try:
        sdk.remove_event_listener(listener_id=listener_id)
    except Exception as error:
        logging.error(error)
        raise


Go
func RemoveEventListener(sdk *breez_sdk_spark.BreezSdk, listenerId string) bool {
    return sdk.RemoveEventListener(listenerId)
}