userDataStream method

Stream userDataStream({
  1. required String listenKey,
})

Subscribe to userdata stream

data pushed can be WsListenKeyExpiredEvent / WsMarginCallEvent / WsAccountUpdateEvent / WsOrderUpdateEvent / WsLeverageUpdateEvent / WsAccountConfigUpdateEvent or Map if unknown

Implementation

Stream<dynamic> userDataStream({
  required String listenKey,
}) {
  final channel = subscribe(listenKey);
  return channel.stream.map<Map>(toMap).map<dynamic>((e) {
    if (e["e"] == "listenKeyExpired") {
      return WsListenKeyExpiredEvent.fromMap(e);
    } else if (e["e"] == "MARGIN_CALL") {
      return WsMarginCallEvent.fromMap(e);
    } else if (e["e"] == "ACCOUNT_UPDATE") {
      return WsAccountUpdateEvent.fromMap(e);
    } else if (e["e"] == "ORDER_TRADE_UPDATE") {
      return WsOrderUpdateEvent.fromMap(e);
    } else if (e["e"] == "ACCOUNT_CONFIG_UPDATE") {
      if (e.containsKey("ac")) {
        return WsLeverageUpdateEvent.fromMap(e);
      } else if (e.containsKey("ai")) {
        return WsAccountConfigUpdateEvent.fromMap(e);
      } else {
        return e;
      }
    } else {
      return e;
    }
  });
}