cmd method

  1. @override
void cmd(
  1. String cmdStr, {
  2. dynamic params = const {},
  3. int? id,
  4. MessageCallback? callback,
  5. bool isWrapperCmd = false,
})
override

Implementation

@override
void cmd(
  String cmdStr, {
  params = const {},
  int? id,
  MessageCallback? callback,
  bool isWrapperCmd = false,
}) {
  var cmdId = isWrapperCmd ? iW++ : id ?? i++;
  try {
    if (callback != null) {
      callbacks[cmdId] = callback;
    }
    final vChannel = isWrapperCmd ? wrapperChannel : channel;
    vChannel!.sink.add(
      json.encode({
        'cmd': cmdStr,
        'params': params,
        'id': cmdId,
      }),
    );
  } catch (e) {
    if ((!isWrapperCmd && channel == null) ||
        (isWrapperCmd && wrapperChannel == null)) {
      throw 'Initalize ZeroNet Api First before calling any method';
    }
  }
  if (callback != null) {
    (isWrapperCmd ? wrapperSubscription : subscription)?.onData((message) {
      var msg = json.decode(message);
      var id = msg['to'];
      if (msg['cmd'] == 'confirm' || msg['cmd'] == 'notification') {
        id = msg['id'];
      } else if (msg['cmd'] == 'injectScript') {
        // i = msg['id'];
        i++;
      }
      callbacks[id]?.call(message);
      if (cmdStr != 'channelJoin') callbacks.remove(id);
      onEventMessage?.call(message);
    });
  }
}