doNotBroadcast function

HookedServiceEventListener<dynamic, dynamic, Service<Never, Never>> doNotBroadcast([
  1. dynamic provider
])

Prevents a WebSocket event from being broadcasted, to any client from the given provider.

provider can be a String, a Provider, or an Iterable. If provider is null, any provider will be blocked.

Implementation

HookedServiceEventListener doNotBroadcast([provider]) {
  return (HookedServiceEvent e) {
    if (e.params.containsKey('provider')) {
      var eParam = e.params;
      var deny = false;
      var providers = provider is Iterable ? provider : [provider];

      for (var p in providers) {
        if (deny) break;

        if (p is Providers) {
          deny = deny || p == eParam['provider'] || eParam['provider'] == p.via;
        } else if (p == null) {
          deny = true;
        } else {
          deny = deny || (eParam['provider'] as Providers).via == p.toString();
        }
      }

      eParam['broadcast'] = false;
    }
  };
}