@storybook/channels
Advanced tools
Comparing version 4.0.0-alpha.6 to 4.0.0-alpha.7
@@ -29,2 +29,4 @@ "use strict"; | ||
function Channel(_ref) { | ||
var _this = this; | ||
var transport = _ref.transport; | ||
@@ -35,3 +37,5 @@ (0, _classCallCheck3.default)(this, Channel); | ||
this._transport = transport; | ||
this._transport.setHandler(this._handleEvent.bind(this)); | ||
this._transport.setHandler(function (event) { | ||
return _this._handleEvent(event); | ||
}); | ||
this._listeners = {}; | ||
@@ -48,8 +52,4 @@ } | ||
value: function addPeerListener(type, listener) { | ||
var _this = this; | ||
var peerListener = listener; | ||
peerListener.isPeer = function (from) { | ||
return from === _this._sender; | ||
}; | ||
peerListener.ignorePeer = true; | ||
this.on(type, peerListener); | ||
@@ -66,2 +66,3 @@ } | ||
this._transport.send(event); | ||
this._handleEvent(event, true); | ||
} | ||
@@ -135,7 +136,7 @@ }, { | ||
key: "_handleEvent", | ||
value: function _handleEvent(event) { | ||
value: function _handleEvent(event, isPeer) { | ||
var listeners = this._listeners[event.type]; | ||
if (listeners) { | ||
if (listeners && (isPeer || event.from !== this._sender)) { | ||
listeners.forEach(function (fn) { | ||
return !(fn.isPeer && fn.isPeer(event.from)) && fn.apply(undefined, (0, _toConsumableArray3.default)(event.args)); | ||
return !(isPeer && fn.ignorePeer) && fn.apply(undefined, (0, _toConsumableArray3.default)(event.args)); | ||
}); | ||
@@ -142,0 +143,0 @@ } |
{ | ||
"name": "@storybook/channels", | ||
"version": "4.0.0-alpha.6", | ||
"version": "4.0.0-alpha.7", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -7,3 +7,3 @@ /* eslint no-underscore-dangle: 0 */ | ||
this._transport = transport; | ||
this._transport.setHandler(this._handleEvent.bind(this)); | ||
this._transport.setHandler(event => this._handleEvent(event)); | ||
this._listeners = {}; | ||
@@ -18,3 +18,3 @@ } | ||
const peerListener = listener; | ||
peerListener.isPeer = from => from === this._sender; | ||
peerListener.ignorePeer = true; | ||
this.on(type, peerListener); | ||
@@ -26,2 +26,3 @@ } | ||
this._transport.send(event); | ||
this._handleEvent(event, true); | ||
} | ||
@@ -84,6 +85,6 @@ | ||
_handleEvent(event) { | ||
_handleEvent(event, isPeer) { | ||
const listeners = this._listeners[event.type]; | ||
if (listeners) { | ||
listeners.forEach(fn => !(fn.isPeer && fn.isPeer(event.from)) && fn(...event.args)); | ||
if (listeners && (isPeer || event.from !== this._sender)) { | ||
listeners.forEach(fn => !(isPeer && fn.ignorePeer) && fn(...event.args)); | ||
} | ||
@@ -90,0 +91,0 @@ } |
@@ -198,3 +198,3 @@ /* eslint no-underscore-dangle: 0 */ | ||
describe('_miscellaneous', () => { | ||
it('should not ignore if event came from itself', () => { | ||
it('should ignore if event came from own sender', () => { | ||
const received = []; | ||
@@ -204,2 +204,10 @@ channel.on('type-1', n => received.push(n)); | ||
channel._handleEvent({ type: 'type-1', args: [12], from: channel._sender }); | ||
expect(received).toEqual([11]); | ||
}); | ||
it('should not ignore peer event', () => { | ||
const received = []; | ||
channel.on('type-1', n => received.push(n)); | ||
channel._handleEvent({ type: 'type-1', args: [11] }); | ||
channel._handleEvent({ type: 'type-1', args: [12] }, true); | ||
expect(received).toEqual([11, 12]); | ||
@@ -213,2 +221,3 @@ }); | ||
channel._handleEvent({ type: 'type-1', args: [12], from: '_' }); | ||
channel._handleEvent({ type: 'type-1', args: [13] }, true); | ||
expect(received).toEqual([12]); | ||
@@ -215,0 +224,0 @@ }); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
17671
412