handleMsg method

Future<void> handleMsg(
  1. List<int> msgData
)

Handle incoming WebSocket messages

Implementation

Future<void> handleMsg(List<int> msgData) async {
  if (onMessage == null) return;

  final msg = pb.WsMsg.fromBuffer(Uint8List.fromList(msgData));

  if (msg.hasError()) {
    onMessage!(WsErrorMsg(msg.error));
  } else if (msg.hasBlock()) {
    final block = msg.block;
    final msgBlock = WsMsgBlockClient(
      msgType: BlockMsgType.from(block.msgType.name),
      blockHash: block.blockHash.reversed.toHex(),
      blockHeight: block.blockHeight,
      blockTimestamp: block.blockTimestamp,
      coinbaseData: block.hasCoinbaseData() ? block.coinbaseData : null,
    );
    onMessage!(msgBlock);
  } else if (msg.hasTx()) {
    final txMsg = WsMsgTxClient(
      msgType: TxMsgType.from(msg.tx.msgType.name),
      txid: msg.tx.txid.reversed.toHex(),
      finalizationReasonType: msg.tx.hasFinalizationReason()
          ? TxFinalizationReasonType.from(
              msg.tx.finalizationReason.finalizationType.name,
            )
          : null,
    );
    onMessage!(txMsg);
  } else {
    // Silently ignore unknown Chronik message
  }
}