From ab7526e6241a63ec0ed52b5fde2414e7a1dbf505 Mon Sep 17 00:00:00 2001 From: thosakwe Date: Sun, 9 Apr 2017 21:50:35 -0400 Subject: [PATCH] 1.0.4+1 --- README.md | 2 +- lib/hooks.dart | 25 ++++++++++++++++++++++--- pubspec.yaml | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0f28fc14..f4083945 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # angel_websocket -[![1.0.4](https://img.shields.io/badge/pub-1.0.4-brightgreen.svg)](https://pub.dartlang.org/packages/angel_websocket) +[![1.0.4+1](https://img.shields.io/badge/pub-1.0.4+1-brightgreen.svg)](https://pub.dartlang.org/packages/angel_websocket) [![build status](https://travis-ci.org/angel-dart/websocket.svg)](https://travis-ci.org/angel-dart/websocket) WebSocket plugin for Angel. diff --git a/lib/hooks.dart b/lib/hooks.dart index 961d547a..32dea957 100644 --- a/lib/hooks.dart +++ b/lib/hooks.dart @@ -1,8 +1,27 @@ import 'package:angel_framework/angel_framework.dart'; -/// Prevents a WebSocket event from being broadcasted, to any client. -HookedServiceEventListener doNotBroadcast() { +/// Prevents a WebSocket event from being broadcasted, to any client from the given [provider]. +/// +/// [provider] can be a String, a [Provider], or an Iterable. +HookedServiceEventListener doNotBroadcast(provider) { return (HookedServiceEvent e) { - if (e.params != null) e.params['broadcast'] = false; + if (e.params != null && e.params.containsKey('provider')) { + bool deny = false; + Iterable providers = provider is Iterable ? provider : [provider]; + + for (var p in providers) { + if (deny) break; + + if (p is Providers) { + deny = deny || + p == e.params['provider'] || + e.params['provider'] == p.via; + } else + deny = + deny || (e.params['provider'] as Providers).via == p.toString(); + } + + e.params['broadcast'] = false; + } }; } diff --git a/pubspec.yaml b/pubspec.yaml index 34518ce1..0dc79adc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: angel_websocket description: WebSocket plugin for Angel. environment: sdk: ">=1.19.0" -version: 1.0.4 +version: 1.0.4+1 author: Tobe O homepage: https://github.com/angel-dart/angel_websocket dependencies: