Skip to content

Commit 4669d79

Browse files
committed
update for 2.9.0/2.9.7
1 parent e5cdb8c commit 4669d79

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

resources/assets/js/helpers/Subscriptions.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
1-
export function unsubscribeListener(subscribers, listener) {
1+
function unsubscribeListener(subscribers, listener) {
22
const index = subscribers.indexOf(listener);
33
if (index >= 0) subscribers.splice(index, 1);
44
}
55

6+
/**
7+
* Subscribe listener and get function for unsubscribe
8+
*
9+
* @param subscribers {array} subscribers array
10+
* @param listener {function} callback to invoke on notification
11+
* @return {function(): void} function which will unsubscribe listener
12+
*/
613
export function subscribeListener(subscribers, listener) {
714
const index = subscribers.indexOf(listener);
815
if (index < 0) subscribers.push(listener);
916
return () => unsubscribeListener(subscribers, listener);
1017
}
1118

19+
/**
20+
* Inform listeners and pass parameters
21+
*
22+
* @param origSubscribers {array} subscribers
23+
* @param params parameters to pass to listener
24+
*/
1225
export function informListeners(origSubscribers, ...params) {
1326
const subscribers = Object.assign([], origSubscribers);
1427

@@ -25,16 +38,24 @@ export function informListeners(origSubscribers, ...params) {
2538
if (!unsubscribe) {
2639
unsubscribe = [];
2740
}
28-
unsubscribe.push(subscriber);
29-
console.error("GlobalSettingsHandler listener error for ", i, subscriber, params, subscribers, e)
41+
Array.push.call(unsubscribe, subscriber);
42+
console.error("informListeners() listener error for ", i, subscriber, params, subscribers, e);
3043
}
3144
}
3245

3346
if (unsubscribe) {
34-
unsubscribe.forEach((subscriber) => unsubscribeListener(subscribers, subscriber));
47+
Array.forEach.call(unsubscribe, (subscriber) => unsubscribeListener(origSubscribers, subscriber));
3548
}
3649
}
3750

51+
/**
52+
* Create subscriber with subscriptions to N signals
53+
*
54+
* Last argument is the callback function for all subscriptions
55+
*
56+
* Other arguments are targets supporting subscribe(function(){}) method to generate callback and returning function
57+
* to call to unsubscribe
58+
*/
3859
export class Subscriber {
3960
constructor() {
4061
this._unsubscribe = [];
@@ -55,6 +76,9 @@ export class Subscriber {
5576
this.unsubscribe = this.unsubscribe.bind(this);
5677
}
5778

79+
/**
80+
* Unsubscribe from all subscriptions
81+
*/
5882
unsubscribe() {
5983
let tmp = this._unsubscribe;
6084
this._unsubscribe = null;

0 commit comments

Comments
 (0)