@bit.rhplus/signal 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SignalProvider.jsx +23 -9
- package/dist/SignalProvider.js +19 -9
- package/dist/SignalProvider.js.map +1 -1
- package/dist/useEventEmitter.js +18 -0
- package/dist/useEventEmitter.js.map +1 -1
- package/dist/useSignalListener.d.ts +2 -2
- package/dist/useSignalListener.js +67 -7
- package/dist/useSignalListener.js.map +1 -1
- package/package.json +2 -2
- package/useEventEmitter.js +19 -1
- package/useSignalListener.js +72 -7
- /package/dist/{preview-1753788445921.js → preview-1763315539949.js} +0 -0
package/SignalProvider.jsx
CHANGED
|
@@ -35,21 +35,34 @@ export function SignalProvider({
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
React.useEffect(() => {
|
|
38
|
-
if (!connection)
|
|
38
|
+
if (!connection) {
|
|
39
|
+
// eslint-disable-next-line no-console
|
|
40
|
+
console.log('[SignalProvider] No connection yet');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// eslint-disable-next-line no-console
|
|
45
|
+
console.log('[SignalProvider] Starting SignalR connection...');
|
|
39
46
|
|
|
40
47
|
const startConnection = async () => {
|
|
41
48
|
try {
|
|
42
49
|
await connection.start();
|
|
50
|
+
// eslint-disable-next-line no-console
|
|
51
|
+
console.log('[SignalProvider] ✅ SignalR connected successfully!');
|
|
52
|
+
|
|
43
53
|
connection.on("Signal", message => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.log("signal => ", message);
|
|
47
|
-
}
|
|
54
|
+
// eslint-disable-next-line no-console
|
|
55
|
+
console.log('[SignalProvider] 📨 Message received from server:', message);
|
|
48
56
|
emit("Signal", message);
|
|
57
|
+
// eslint-disable-next-line no-console
|
|
58
|
+
console.log('[SignalProvider] 📤 Message emitted to listeners');
|
|
49
59
|
});
|
|
60
|
+
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.log('[SignalProvider] Subscribed to "Signal" event on connection');
|
|
50
63
|
} catch (e) {
|
|
51
64
|
// eslint-disable-next-line no-console
|
|
52
|
-
console.error(
|
|
65
|
+
console.error('[SignalProvider] ❌ Failed to start connection:', e);
|
|
53
66
|
}
|
|
54
67
|
};
|
|
55
68
|
|
|
@@ -57,9 +70,11 @@ export function SignalProvider({
|
|
|
57
70
|
|
|
58
71
|
/* eslint-disable consistent-return */
|
|
59
72
|
return () => {
|
|
73
|
+
// eslint-disable-next-line no-console
|
|
74
|
+
console.log('[SignalProvider] Stopping connection...');
|
|
60
75
|
connection.stop().catch(e => {
|
|
61
76
|
// eslint-disable-next-line no-console
|
|
62
|
-
console.error(
|
|
77
|
+
console.error('[SignalProvider] Error stopping connection:', e);
|
|
63
78
|
});
|
|
64
79
|
};
|
|
65
80
|
}, [connection, emit]);
|
|
@@ -72,8 +87,7 @@ export function SignalProvider({
|
|
|
72
87
|
message
|
|
73
88
|
});
|
|
74
89
|
} catch (err) {
|
|
75
|
-
//
|
|
76
|
-
console.error(err);
|
|
90
|
+
// Removed console.error for production
|
|
77
91
|
}
|
|
78
92
|
} else {
|
|
79
93
|
throw new Error("No connection");
|
package/dist/SignalProvider.js
CHANGED
|
@@ -21,30 +21,41 @@ export function SignalProvider({ children, authority, endpoint, accessToken, req
|
|
|
21
21
|
setConnection(newConnection);
|
|
22
22
|
}, [accessToken]); // Oprava: odstraněná nadbytečná čárka ve závislostech
|
|
23
23
|
React.useEffect(() => {
|
|
24
|
-
if (!connection)
|
|
24
|
+
if (!connection) {
|
|
25
|
+
// eslint-disable-next-line no-console
|
|
26
|
+
console.log('[SignalProvider] No connection yet');
|
|
25
27
|
return;
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.log('[SignalProvider] Starting SignalR connection...');
|
|
26
31
|
const startConnection = async () => {
|
|
27
32
|
try {
|
|
28
33
|
await connection.start();
|
|
34
|
+
// eslint-disable-next-line no-console
|
|
35
|
+
console.log('[SignalProvider] ✅ SignalR connected successfully!');
|
|
29
36
|
connection.on("Signal", message => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log("signal => ", message);
|
|
33
|
-
}
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.log('[SignalProvider] 📨 Message received from server:', message);
|
|
34
39
|
emit("Signal", message);
|
|
40
|
+
// eslint-disable-next-line no-console
|
|
41
|
+
console.log('[SignalProvider] 📤 Message emitted to listeners');
|
|
35
42
|
});
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.log('[SignalProvider] Subscribed to "Signal" event on connection');
|
|
36
45
|
}
|
|
37
46
|
catch (e) {
|
|
38
47
|
// eslint-disable-next-line no-console
|
|
39
|
-
console.error(
|
|
48
|
+
console.error('[SignalProvider] ❌ Failed to start connection:', e);
|
|
40
49
|
}
|
|
41
50
|
};
|
|
42
51
|
startConnection();
|
|
43
52
|
/* eslint-disable consistent-return */
|
|
44
53
|
return () => {
|
|
54
|
+
// eslint-disable-next-line no-console
|
|
55
|
+
console.log('[SignalProvider] Stopping connection...');
|
|
45
56
|
connection.stop().catch(e => {
|
|
46
57
|
// eslint-disable-next-line no-console
|
|
47
|
-
console.error(
|
|
58
|
+
console.error('[SignalProvider] Error stopping connection:', e);
|
|
48
59
|
});
|
|
49
60
|
};
|
|
50
61
|
}, [connection, emit]);
|
|
@@ -57,8 +68,7 @@ export function SignalProvider({ children, authority, endpoint, accessToken, req
|
|
|
57
68
|
});
|
|
58
69
|
}
|
|
59
70
|
catch (err) {
|
|
60
|
-
//
|
|
61
|
-
console.error(err);
|
|
71
|
+
// Removed console.error for production
|
|
62
72
|
}
|
|
63
73
|
}
|
|
64
74
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignalProvider.js","sourceRoot":"","sources":["../SignalProvider.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEvD,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,WAAW,GAAG,KAAK,EACpB;IACC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,mBAAmB,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,OAAO,CAAC,uCAAuC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAI,oBAAoB,EAAE;aAC7C,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;aACrB,sBAAsB,EAAE;aACxB,gBAAgB,CAAC,QAAQ,CAAC;aAC1B,KAAK,EAAE,CAAC;QAEX,aAAa,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,sDAAsD;IAGzE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"SignalProvider.js","sourceRoot":"","sources":["../SignalProvider.jsx"],"names":[],"mappings":"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"}
|
package/dist/useEventEmitter.js
CHANGED
|
@@ -4,14 +4,32 @@ export function useEventEmitter() {
|
|
|
4
4
|
const listeners = React.useRef(new Map());
|
|
5
5
|
const emit = React.useCallback((event, data) => {
|
|
6
6
|
const eventListenersToEmit = listeners.current.get(event) || [];
|
|
7
|
+
// eslint-disable-next-line no-console
|
|
8
|
+
console.log('[useEventEmitter] emit()', {
|
|
9
|
+
event,
|
|
10
|
+
data,
|
|
11
|
+
listenerCount: eventListenersToEmit.length
|
|
12
|
+
});
|
|
7
13
|
eventListenersToEmit.forEach(listener => listener(data));
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.log('[useEventEmitter] All listeners called');
|
|
8
16
|
}, []);
|
|
9
17
|
const on = React.useCallback((event, listener) => {
|
|
10
18
|
const eventListeners = listeners.current.get(event) || [];
|
|
11
19
|
listeners.current.set(event, [...eventListeners, listener]);
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
|
+
console.log('[useEventEmitter] on() - Listener registered', {
|
|
22
|
+
event,
|
|
23
|
+
totalListeners: listeners.current.get(event).length
|
|
24
|
+
});
|
|
12
25
|
return () => {
|
|
13
26
|
const eventListenersToRemove = listeners.current.get(event) || [];
|
|
14
27
|
listeners.current.set(event, eventListenersToRemove.filter(l => l !== listener));
|
|
28
|
+
// eslint-disable-next-line no-console
|
|
29
|
+
console.log('[useEventEmitter] Listener unregistered', {
|
|
30
|
+
event,
|
|
31
|
+
remainingListeners: listeners.current.get(event).length
|
|
32
|
+
});
|
|
15
33
|
};
|
|
16
34
|
});
|
|
17
35
|
return { emit, on };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEventEmitter.js","sourceRoot":"","sources":["../useEventEmitter.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"useEventEmitter.js","sourceRoot":"","sources":["../useEventEmitter.js"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChE,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE;YACtC,KAAK;YACL,IAAI;YACJ,aAAa,EAAE,oBAAoB,CAAC,MAAM;SAC3C,CAAC,CAAC;QACH,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE;YAC1D,KAAK;YACL,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM;SACpD,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,MAAM,sBAAsB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;YACjF,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;gBACrD,KAAK;gBACL,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM;aACxD,CAAC,CAAC;QACL,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,EAAC,IAAI,EAAE,EAAE,EAAC,CAAC;AACpB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function useSignalListeners(eventNames: any, callback: any): void;
|
|
2
|
-
export function useSignalListener(eventName: any, callback: any): void;
|
|
1
|
+
export function useSignalListeners(eventNames: any, callback: any, enableConsole?: boolean): void;
|
|
2
|
+
export function useSignalListener(eventName: any, callback: any, enableConsole?: boolean): void;
|
|
@@ -1,30 +1,90 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
import { SignalContext } from "./SignalProvider";
|
|
3
4
|
// Hook pro poslech na více signálů (pole eventNames)
|
|
4
|
-
export function useSignalListeners(eventNames, callback) {
|
|
5
|
+
export function useSignalListeners(eventNames, callback, enableConsole = false) {
|
|
5
6
|
// Uložíme callback do refu, aby se aktualizoval při každé změně
|
|
6
7
|
const listenerCallback = React.useRef(callback);
|
|
8
|
+
const consoleRef = React.useRef(enableConsole);
|
|
9
|
+
const eventNamesRef = React.useRef(eventNames);
|
|
7
10
|
const { on } = React.useContext(SignalContext);
|
|
8
|
-
//
|
|
11
|
+
// eslint-disable-next-line no-console
|
|
12
|
+
console.log('[useSignalListeners] 1. Hook initialized', {
|
|
13
|
+
eventNames,
|
|
14
|
+
hasCallback: !!callback,
|
|
15
|
+
consoleEnabled: enableConsole,
|
|
16
|
+
hasOn: !!on
|
|
17
|
+
});
|
|
18
|
+
// Aktualizace refů při každém renderu
|
|
9
19
|
React.useEffect(() => {
|
|
10
|
-
//
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
|
+
console.log('[useSignalListeners] 2. Refs updated', {
|
|
22
|
+
eventNames,
|
|
23
|
+
consoleEnabled: enableConsole
|
|
24
|
+
});
|
|
11
25
|
listenerCallback.current = callback;
|
|
26
|
+
consoleRef.current = enableConsole;
|
|
27
|
+
eventNamesRef.current = eventNames;
|
|
28
|
+
});
|
|
29
|
+
// Přihlášení a odhlášení od signálů - spustí se pouze jednou
|
|
30
|
+
React.useEffect(() => {
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.log('[useSignalListeners] 3. Setting up listener', {
|
|
33
|
+
hasOn: !!on,
|
|
34
|
+
eventNames: eventNamesRef.current
|
|
35
|
+
});
|
|
36
|
+
if (!on) {
|
|
37
|
+
// eslint-disable-next-line no-console
|
|
38
|
+
console.warn('[useSignalListeners] 4. No "on" function - cannot subscribe!');
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
12
41
|
// Funkce, která se spustí, když přijde signál
|
|
13
42
|
const onSignal = (data) => {
|
|
14
|
-
|
|
43
|
+
// eslint-disable-next-line no-console
|
|
44
|
+
console.log('[useSignalListeners] 5. Signal received!', {
|
|
45
|
+
receivedEventName: data?.eventName,
|
|
46
|
+
expectedEventNames: eventNamesRef.current,
|
|
47
|
+
matches: eventNamesRef.current.includes(data?.eventName),
|
|
48
|
+
fullData: data
|
|
49
|
+
});
|
|
50
|
+
if (eventNamesRef.current.includes(data.eventName)) {
|
|
51
|
+
// eslint-disable-next-line no-console
|
|
52
|
+
console.log('[useSignalListeners] 6. Event name matches - processing', data.eventName);
|
|
53
|
+
// Logování pokud je console === true
|
|
54
|
+
if (consoleRef.current === true) {
|
|
55
|
+
// eslint-disable-next-line no-console
|
|
56
|
+
console.log('[SignalR]', data.eventName, data);
|
|
57
|
+
}
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.log('[useSignalListeners] 7. Calling callback');
|
|
15
60
|
listenerCallback.current(data);
|
|
16
61
|
}
|
|
62
|
+
else {
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log('[useSignalListeners] 6. Event name does NOT match - ignoring', {
|
|
65
|
+
received: data.eventName,
|
|
66
|
+
expected: eventNamesRef.current
|
|
67
|
+
});
|
|
68
|
+
}
|
|
17
69
|
};
|
|
70
|
+
// eslint-disable-next-line no-console
|
|
71
|
+
console.log('[useSignalListeners] 8. Subscribing to "Signal" event');
|
|
18
72
|
const unsubscribe = on("Signal", onSignal);
|
|
73
|
+
// eslint-disable-next-line no-console
|
|
74
|
+
console.log('[useSignalListeners] 9. Subscribed successfully', {
|
|
75
|
+
hasUnsubscribe: !!unsubscribe
|
|
76
|
+
});
|
|
19
77
|
// Při unmountu komponenty se odhlásíme od poslechu na signál
|
|
20
78
|
return () => {
|
|
79
|
+
// eslint-disable-next-line no-console
|
|
80
|
+
console.log('[useSignalListeners] 10. Unsubscribing');
|
|
21
81
|
unsubscribe();
|
|
22
82
|
};
|
|
23
|
-
}, [
|
|
83
|
+
}, [on]); // Pouze 'on' jako závislost - registruje se jen jednou
|
|
24
84
|
}
|
|
25
85
|
// Hook pro poslech na jeden signál
|
|
26
|
-
export function useSignalListener(eventName, callback) {
|
|
86
|
+
export function useSignalListener(eventName, callback, enableConsole = false) {
|
|
27
87
|
// Voláme rozšířenou funkci s jedním eventName zabaleným do pole
|
|
28
|
-
useSignalListeners([eventName], callback);
|
|
88
|
+
useSignalListeners([eventName], callback, enableConsole);
|
|
29
89
|
}
|
|
30
90
|
//# sourceMappingURL=useSignalListener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSignalListener.js","sourceRoot":"","sources":["../useSignalListener.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAAC,UAAU,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"useSignalListener.js","sourceRoot":"","sources":["../useSignalListener.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bit.rhplus/signal",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"homepage": "https://bit.cloud/remote-scope/signal",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "remote-scope",
|
|
8
8
|
"name": "signal",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.12"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@microsoft/signalr": "8.0.0"
|
package/useEventEmitter.js
CHANGED
|
@@ -6,17 +6,35 @@ export function useEventEmitter() {
|
|
|
6
6
|
|
|
7
7
|
const emit = React.useCallback((event, data) => {
|
|
8
8
|
const eventListenersToEmit = listeners.current.get(event) || [];
|
|
9
|
+
// eslint-disable-next-line no-console
|
|
10
|
+
console.log('[useEventEmitter] emit()', {
|
|
11
|
+
event,
|
|
12
|
+
data,
|
|
13
|
+
listenerCount: eventListenersToEmit.length
|
|
14
|
+
});
|
|
9
15
|
eventListenersToEmit.forEach(listener => listener(data));
|
|
16
|
+
// eslint-disable-next-line no-console
|
|
17
|
+
console.log('[useEventEmitter] All listeners called');
|
|
10
18
|
}, [])
|
|
11
19
|
|
|
12
20
|
const on = React.useCallback((event, listener) => {
|
|
13
21
|
const eventListeners = listeners.current.get(event) || [];
|
|
14
22
|
listeners.current.set(event, [...eventListeners, listener]);
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.log('[useEventEmitter] on() - Listener registered', {
|
|
25
|
+
event,
|
|
26
|
+
totalListeners: listeners.current.get(event).length
|
|
27
|
+
});
|
|
15
28
|
return () => {
|
|
16
29
|
const eventListenersToRemove = listeners.current.get(event) || [];
|
|
17
30
|
listeners.current.set(event, eventListenersToRemove.filter(l => l !== listener));
|
|
31
|
+
// eslint-disable-next-line no-console
|
|
32
|
+
console.log('[useEventEmitter] Listener unregistered', {
|
|
33
|
+
event,
|
|
34
|
+
remainingListeners: listeners.current.get(event).length
|
|
35
|
+
});
|
|
18
36
|
}
|
|
19
|
-
})
|
|
37
|
+
})
|
|
20
38
|
|
|
21
39
|
return {emit, on};
|
|
22
40
|
}
|
package/useSignalListener.js
CHANGED
|
@@ -1,35 +1,100 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
1
2
|
import * as React from "react";
|
|
2
3
|
import { SignalContext } from "./SignalProvider";
|
|
3
4
|
|
|
4
5
|
// Hook pro poslech na více signálů (pole eventNames)
|
|
5
|
-
export function useSignalListeners(eventNames, callback) {
|
|
6
|
+
export function useSignalListeners(eventNames, callback, enableConsole = false) {
|
|
6
7
|
// Uložíme callback do refu, aby se aktualizoval při každé změně
|
|
7
8
|
const listenerCallback = React.useRef(callback);
|
|
9
|
+
const consoleRef = React.useRef(enableConsole);
|
|
10
|
+
const eventNamesRef = React.useRef(eventNames);
|
|
8
11
|
const { on } = React.useContext(SignalContext);
|
|
9
12
|
|
|
10
|
-
//
|
|
13
|
+
// eslint-disable-next-line no-console
|
|
14
|
+
console.log('[useSignalListeners] 1. Hook initialized', {
|
|
15
|
+
eventNames,
|
|
16
|
+
hasCallback: !!callback,
|
|
17
|
+
consoleEnabled: enableConsole,
|
|
18
|
+
hasOn: !!on
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// Aktualizace refů při každém renderu
|
|
11
22
|
React.useEffect(() => {
|
|
12
|
-
//
|
|
23
|
+
// eslint-disable-next-line no-console
|
|
24
|
+
console.log('[useSignalListeners] 2. Refs updated', {
|
|
25
|
+
eventNames,
|
|
26
|
+
consoleEnabled: enableConsole
|
|
27
|
+
});
|
|
13
28
|
listenerCallback.current = callback;
|
|
29
|
+
consoleRef.current = enableConsole;
|
|
30
|
+
eventNamesRef.current = eventNames;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Přihlášení a odhlášení od signálů - spustí se pouze jednou
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.log('[useSignalListeners] 3. Setting up listener', {
|
|
37
|
+
hasOn: !!on,
|
|
38
|
+
eventNames: eventNamesRef.current
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
if (!on) {
|
|
42
|
+
// eslint-disable-next-line no-console
|
|
43
|
+
console.warn('[useSignalListeners] 4. No "on" function - cannot subscribe!');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
14
46
|
|
|
15
47
|
// Funkce, která se spustí, když přijde signál
|
|
16
48
|
const onSignal = (data) => {
|
|
17
|
-
|
|
49
|
+
// eslint-disable-next-line no-console
|
|
50
|
+
console.log('[useSignalListeners] 5. Signal received!', {
|
|
51
|
+
receivedEventName: data?.eventName,
|
|
52
|
+
expectedEventNames: eventNamesRef.current,
|
|
53
|
+
matches: eventNamesRef.current.includes(data?.eventName),
|
|
54
|
+
fullData: data
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (eventNamesRef.current.includes(data.eventName)) {
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.log('[useSignalListeners] 6. Event name matches - processing', data.eventName);
|
|
60
|
+
|
|
61
|
+
// Logování pokud je console === true
|
|
62
|
+
if (consoleRef.current === true) {
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log('[SignalR]', data.eventName, data);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// eslint-disable-next-line no-console
|
|
68
|
+
console.log('[useSignalListeners] 7. Calling callback');
|
|
18
69
|
listenerCallback.current(data);
|
|
70
|
+
} else {
|
|
71
|
+
// eslint-disable-next-line no-console
|
|
72
|
+
console.log('[useSignalListeners] 6. Event name does NOT match - ignoring', {
|
|
73
|
+
received: data.eventName,
|
|
74
|
+
expected: eventNamesRef.current
|
|
75
|
+
});
|
|
19
76
|
}
|
|
20
77
|
};
|
|
21
78
|
|
|
79
|
+
// eslint-disable-next-line no-console
|
|
80
|
+
console.log('[useSignalListeners] 8. Subscribing to "Signal" event');
|
|
22
81
|
const unsubscribe = on("Signal", onSignal);
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
83
|
+
console.log('[useSignalListeners] 9. Subscribed successfully', {
|
|
84
|
+
hasUnsubscribe: !!unsubscribe
|
|
85
|
+
});
|
|
23
86
|
|
|
24
87
|
// Při unmountu komponenty se odhlásíme od poslechu na signál
|
|
25
88
|
return () => {
|
|
89
|
+
// eslint-disable-next-line no-console
|
|
90
|
+
console.log('[useSignalListeners] 10. Unsubscribing');
|
|
26
91
|
unsubscribe();
|
|
27
92
|
};
|
|
28
|
-
}, [
|
|
93
|
+
}, [on]); // Pouze 'on' jako závislost - registruje se jen jednou
|
|
29
94
|
}
|
|
30
95
|
|
|
31
96
|
// Hook pro poslech na jeden signál
|
|
32
|
-
export function useSignalListener(eventName, callback) {
|
|
97
|
+
export function useSignalListener(eventName, callback, enableConsole = false) {
|
|
33
98
|
// Voláme rozšířenou funkci s jedním eventName zabaleným do pole
|
|
34
|
-
useSignalListeners([eventName], callback);
|
|
99
|
+
useSignalListeners([eventName], callback, enableConsole);
|
|
35
100
|
}
|
|
File without changes
|