@conference-kit/react 0.0.8 → 0.0.9

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.
@@ -1,5 +1,5 @@
1
1
  export type VideoPlayerProps = React.VideoHTMLAttributes<HTMLVideoElement> & {
2
2
  stream?: MediaStream | null;
3
3
  };
4
- export declare function VideoPlayer({ stream, autoPlay, playsInline, muted, ...props }: VideoPlayerProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare const VideoPlayer: import("react").NamedExoticComponent<VideoPlayerProps>;
5
5
  //# sourceMappingURL=VideoPlayer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG;IAC3E,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAe,EACf,WAAkB,EAClB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAsClB"}
1
+ {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAAG;IAC3E,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,WAAW,wDAiDtB,CAAC"}
@@ -1,30 +1,35 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useRef } from "react";
3
- export function VideoPlayer({ stream, autoPlay = true, playsInline = true, muted, ...props }) {
2
+ import { useEffect, useRef, memo } from "react";
3
+ export const VideoPlayer = memo(function VideoPlayer({ stream, autoPlay = true, playsInline = true, muted, ...props }) {
4
4
  const ref = useRef(null);
5
- const prevStream = useRef(null);
5
+ const attachedStream = useRef(null);
6
6
  useEffect(() => {
7
7
  const el = ref.current;
8
8
  if (!el)
9
9
  return;
10
- // Avoid resetting srcObject if the exact same MediaStream instance is already attached.
11
- if (stream && prevStream.current !== stream) {
12
- el.srcObject = stream;
13
- prevStream.current = stream;
14
- }
15
- // Kick playback on mobile where autoplay can be flaky even when muted.
16
- if (stream) {
17
- el.play().catch(() => {
18
- /* ignore autoplay rejection; user gesture will resume */
19
- });
10
+ // Only update srcObject when stream actually changes (by reference).
11
+ // Avoid clearing on unmount to prevent flicker during parent re-renders.
12
+ if (stream !== attachedStream.current) {
13
+ el.srcObject = stream ?? null;
14
+ attachedStream.current = stream ?? null;
15
+ // Kick playback on mobile where autoplay can be flaky even when muted.
16
+ if (stream) {
17
+ el.play().catch(() => {
18
+ /* ignore autoplay rejection; user gesture will resume */
19
+ });
20
+ }
20
21
  }
22
+ }, [stream]);
23
+ // Only clear srcObject when component is truly unmounting, not on re-renders.
24
+ useEffect(() => {
25
+ const el = ref.current;
21
26
  return () => {
22
27
  if (el) {
23
28
  el.srcObject = null;
24
- prevStream.current = null;
29
+ attachedStream.current = null;
25
30
  }
26
31
  };
27
- }, [stream]);
32
+ }, []);
28
33
  return (_jsx("video", { ref: ref, autoPlay: autoPlay, playsInline: playsInline, muted: muted ?? stream == null, ...props }));
29
- }
34
+ });
30
35
  //# sourceMappingURL=VideoPlayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAM1C,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EAClB,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,wFAAwF;QACxF,IAAI,MAAM,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5C,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC;YACtB,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,uEAAuE;QACvE,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnB,yDAAyD;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACpB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,IAAI,MAAM,IAAI,IAAI,KAC1B,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"VideoPlayer.js","sourceRoot":"","sources":["../../src/components/VideoPlayer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAMhD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,WAAW,CAAC,EACnD,MAAM,EACN,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EAClB,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,qEAAqE;QACrE,yEAAyE;QACzE,IAAI,MAAM,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;YACtC,EAAE,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,CAAC;YAC9B,cAAc,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC;YAExC,uEAAuE;YACvE,IAAI,MAAM,EAAE,CAAC;gBACX,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACnB,yDAAyD;gBAC3D,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,8EAA8E;IAC9E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACpB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,IAAI,MAAM,IAAI,IAAI,KAC1B,KAAK,GACT,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMeshRoom.d.ts","sourceRoot":"","sources":["../../src/hooks/useMeshRoom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAkC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIvE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,sBAAsB,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;;;;;6BAwQ9C,MAAM;8BAQN,MAAM;;;;;;;EAuId"}
1
+ {"version":3,"file":"useMeshRoom.d.ts","sourceRoot":"","sources":["../../src/hooks/useMeshRoom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAkC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIvE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,eAAe,EAAE,sBAAsB,CAAC;IACxC,QAAQ,EAAE,qBAAqB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;;;;;6BA0S9C,MAAM;8BAQN,MAAM;;;;;;;EAgKd"}
@@ -58,13 +58,20 @@ export function useMeshRoom(options) {
58
58
  },
59
59
  ];
60
60
  }
61
+ // Check if anything actually changed to avoid unnecessary re-renders
62
+ const changed = Object.keys(patch).some((key) => patch[key] !==
63
+ existing[key]);
64
+ if (!changed)
65
+ return prev;
61
66
  return prev.map((p) => (p.id === id ? { ...p, ...patch } : p));
62
67
  });
63
68
  }, []);
69
+ const inWaitingRoomRef = useRef(inWaitingRoom);
70
+ inWaitingRoomRef.current = inWaitingRoom;
64
71
  const ensurePeer = useCallback((id, side) => {
65
72
  if (id === peerId)
66
73
  return null;
67
- if (features.enableWaitingRoom && inWaitingRoom)
74
+ if (features.enableWaitingRoom && inWaitingRoomRef.current)
68
75
  return null;
69
76
  const existing = peers.current.get(id);
70
77
  if (existing)
@@ -102,6 +109,8 @@ export function useMeshRoom(options) {
102
109
  return peer;
103
110
  }, [
104
111
  destroyPeer,
112
+ features.enableDataChannel,
113
+ features.enableWaitingRoom,
105
114
  localStream,
106
115
  peerId,
107
116
  rtcConfig,
@@ -131,10 +140,20 @@ export function useMeshRoom(options) {
131
140
  useEffect(() => {
132
141
  const onPresence = (payload) => {
133
142
  const ids = payload.peers;
134
- setRoster(ids);
143
+ // Only update roster if changed
144
+ setRoster((prev) => {
145
+ if (prev.length === ids.length &&
146
+ prev.every((id, i) => id === ids[i])) {
147
+ return prev;
148
+ }
149
+ return ids;
150
+ });
135
151
  ids.filter((id) => id !== peerId).forEach((id) => ensurePeer(id));
136
152
  // Remove peers no longer present
137
- setParticipants((prev) => prev.filter((p) => ids.includes(p.id)));
153
+ setParticipants((prev) => {
154
+ const filtered = prev.filter((p) => ids.includes(p.id));
155
+ return filtered.length === prev.length ? prev : filtered;
156
+ });
138
157
  Array.from(peers.current.keys()).forEach((id) => {
139
158
  if (!ids.includes(id))
140
159
  destroyPeer(id);
@@ -147,7 +166,13 @@ export function useMeshRoom(options) {
147
166
  const onControl = ({ action, data }) => {
148
167
  if (action === "waiting-list") {
149
168
  const waiting = data?.waiting ?? [];
150
- setWaitingList(waiting);
169
+ setWaitingList((prev) => {
170
+ if (prev.length === waiting.length &&
171
+ prev.every((id, i) => id === waiting[i])) {
172
+ return prev;
173
+ }
174
+ return waiting;
175
+ });
151
176
  return;
152
177
  }
153
178
  if (action === "waiting") {
@@ -168,6 +193,8 @@ export function useMeshRoom(options) {
168
193
  if (!peer)
169
194
  return;
170
195
  setRaisedHands((prev) => {
196
+ if (prev.has(peer))
197
+ return prev;
171
198
  const next = new Set(prev);
172
199
  next.add(peer);
173
200
  return next;
@@ -179,6 +206,8 @@ export function useMeshRoom(options) {
179
206
  if (!peer)
180
207
  return;
181
208
  setRaisedHands((prev) => {
209
+ if (!prev.has(peer))
210
+ return prev;
182
211
  const next = new Set(prev);
183
212
  next.delete(peer);
184
213
  return next;
@@ -243,9 +272,21 @@ export function useMeshRoom(options) {
243
272
  const analyzers = useRef(new Map());
244
273
  const activeCandidate = useRef(null);
245
274
  const activeSince = useRef(0);
275
+ const silenceSince = useRef(0);
246
276
  useEffect(() => {
247
- if (!features.enableActiveSpeaker)
277
+ if (!features.enableActiveSpeaker || signalingStatus !== "open") {
278
+ setActiveSpeakerId(null);
279
+ analyzers.current.forEach((entry) => {
280
+ entry.source.disconnect();
281
+ entry.analyser.disconnect();
282
+ entry.ctx.close();
283
+ });
284
+ analyzers.current.clear();
285
+ activeCandidate.current = null;
286
+ activeSince.current = 0;
287
+ silenceSince.current = 0;
248
288
  return;
289
+ }
249
290
  const ensureAnalyzer = (id, stream) => {
250
291
  if (analyzers.current.has(id))
251
292
  return;
@@ -274,6 +315,7 @@ export function useMeshRoom(options) {
274
315
  });
275
316
  const minHoldMs = 700;
276
317
  const minLevel = 18;
318
+ const silenceHoldMs = 1200;
277
319
  const interval = window.setInterval(() => {
278
320
  let loudestId = null;
279
321
  let loudest = 0;
@@ -295,6 +337,17 @@ export function useMeshRoom(options) {
295
337
  if (heldLongEnough) {
296
338
  setActiveSpeakerId((prev) => prev === activeCandidate.current ? prev : activeCandidate.current);
297
339
  }
340
+ if (!loudestId) {
341
+ if (!silenceSince.current)
342
+ silenceSince.current = now;
343
+ const silentLongEnough = now - silenceSince.current >= silenceHoldMs;
344
+ if (silentLongEnough) {
345
+ setActiveSpeakerId((prev) => (prev === null ? prev : null));
346
+ }
347
+ }
348
+ else {
349
+ silenceSince.current = 0;
350
+ }
298
351
  }, 400);
299
352
  return () => {
300
353
  window.clearInterval(interval);
@@ -306,8 +359,9 @@ export function useMeshRoom(options) {
306
359
  analyzers.current.clear();
307
360
  activeCandidate.current = null;
308
361
  activeSince.current = 0;
362
+ silenceSince.current = 0;
309
363
  };
310
- }, [features.enableActiveSpeaker, participants]);
364
+ }, [features.enableActiveSpeaker, participants, signalingStatus]);
311
365
  return {
312
366
  localStream,
313
367
  ready,
@@ -1 +1 @@
1
- {"version":3,"file":"useMeshRoom.js","sourceRoot":"","sources":["../../src/hooks/useMeshRoom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMeshRoom.js","sourceRoot":"","sources":["../../src/hooks/useMeshRoom.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@conference-kit/react",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -1,10 +1,10 @@
1
- import { useEffect, useRef } from "react";
1
+ import { useEffect, useRef, memo } from "react";
2
2
 
3
3
  export type VideoPlayerProps = React.VideoHTMLAttributes<HTMLVideoElement> & {
4
4
  stream?: MediaStream | null;
5
5
  };
6
6
 
7
- export function VideoPlayer({
7
+ export const VideoPlayer = memo(function VideoPlayer({
8
8
  stream,
9
9
  autoPlay = true,
10
10
  playsInline = true,
@@ -12,32 +12,37 @@ export function VideoPlayer({
12
12
  ...props
13
13
  }: VideoPlayerProps) {
14
14
  const ref = useRef<HTMLVideoElement | null>(null);
15
- const prevStream = useRef<MediaStream | null>(null);
15
+ const attachedStream = useRef<MediaStream | null>(null);
16
16
 
17
17
  useEffect(() => {
18
18
  const el = ref.current;
19
19
  if (!el) return;
20
20
 
21
- // Avoid resetting srcObject if the exact same MediaStream instance is already attached.
22
- if (stream && prevStream.current !== stream) {
23
- el.srcObject = stream;
24
- prevStream.current = stream;
25
- }
21
+ // Only update srcObject when stream actually changes (by reference).
22
+ // Avoid clearing on unmount to prevent flicker during parent re-renders.
23
+ if (stream !== attachedStream.current) {
24
+ el.srcObject = stream ?? null;
25
+ attachedStream.current = stream ?? null;
26
26
 
27
- // Kick playback on mobile where autoplay can be flaky even when muted.
28
- if (stream) {
29
- el.play().catch(() => {
30
- /* ignore autoplay rejection; user gesture will resume */
31
- });
27
+ // Kick playback on mobile where autoplay can be flaky even when muted.
28
+ if (stream) {
29
+ el.play().catch(() => {
30
+ /* ignore autoplay rejection; user gesture will resume */
31
+ });
32
+ }
32
33
  }
34
+ }, [stream]);
33
35
 
36
+ // Only clear srcObject when component is truly unmounting, not on re-renders.
37
+ useEffect(() => {
38
+ const el = ref.current;
34
39
  return () => {
35
40
  if (el) {
36
41
  el.srcObject = null;
37
- prevStream.current = null;
42
+ attachedStream.current = null;
38
43
  }
39
44
  };
40
- }, [stream]);
45
+ }, []);
41
46
 
42
47
  return (
43
48
  <video
@@ -48,4 +53,4 @@ export function VideoPlayer({
48
53
  {...props}
49
54
  />
50
55
  );
51
- }
56
+ });
@@ -117,16 +117,26 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
117
117
  },
118
118
  ];
119
119
  }
120
+ // Check if anything actually changed to avoid unnecessary re-renders
121
+ const changed = Object.keys(patch).some(
122
+ (key) =>
123
+ patch[key as keyof MeshParticipant] !==
124
+ existing[key as keyof MeshParticipant]
125
+ );
126
+ if (!changed) return prev;
120
127
  return prev.map((p) => (p.id === id ? { ...p, ...patch } : p));
121
128
  });
122
129
  },
123
130
  []
124
131
  );
125
132
 
133
+ const inWaitingRoomRef = useRef(inWaitingRoom);
134
+ inWaitingRoomRef.current = inWaitingRoom;
135
+
126
136
  const ensurePeer = useCallback(
127
137
  (id: string, side?: PeerSide) => {
128
138
  if (id === peerId) return null;
129
- if (features.enableWaitingRoom && inWaitingRoom) return null;
139
+ if (features.enableWaitingRoom && inWaitingRoomRef.current) return null;
130
140
  const existing = peers.current.get(id);
131
141
  if (existing) return existing;
132
142
  // enableDataChannel is supported in the runtime PeerConfig but may lag in published typings; cast to satisfy TS.
@@ -169,6 +179,8 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
169
179
  },
170
180
  [
171
181
  destroyPeer,
182
+ features.enableDataChannel,
183
+ features.enableWaitingRoom,
172
184
  localStream,
173
185
  peerId,
174
186
  rtcConfig,
@@ -209,10 +221,22 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
209
221
  action: "join" | "leave";
210
222
  }) => {
211
223
  const ids = payload.peers;
212
- setRoster(ids);
224
+ // Only update roster if changed
225
+ setRoster((prev) => {
226
+ if (
227
+ prev.length === ids.length &&
228
+ prev.every((id, i) => id === ids[i])
229
+ ) {
230
+ return prev;
231
+ }
232
+ return ids;
233
+ });
213
234
  ids.filter((id) => id !== peerId).forEach((id) => ensurePeer(id));
214
235
  // Remove peers no longer present
215
- setParticipants((prev) => prev.filter((p) => ids.includes(p.id)));
236
+ setParticipants((prev) => {
237
+ const filtered = prev.filter((p) => ids.includes(p.id));
238
+ return filtered.length === prev.length ? prev : filtered;
239
+ });
216
240
  Array.from(peers.current.keys()).forEach((id) => {
217
241
  if (!ids.includes(id)) destroyPeer(id);
218
242
  });
@@ -225,7 +249,15 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
225
249
  const onControl = ({ action, data }: { action: string; data?: any }) => {
226
250
  if (action === "waiting-list") {
227
251
  const waiting = (data?.waiting as string[]) ?? [];
228
- setWaitingList(waiting);
252
+ setWaitingList((prev) => {
253
+ if (
254
+ prev.length === waiting.length &&
255
+ prev.every((id, i) => id === waiting[i])
256
+ ) {
257
+ return prev;
258
+ }
259
+ return waiting;
260
+ });
229
261
  return;
230
262
  }
231
263
  if (action === "waiting") {
@@ -245,6 +277,7 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
245
277
  const peer = (data?.peerId as string) ?? null;
246
278
  if (!peer) return;
247
279
  setRaisedHands((prev) => {
280
+ if (prev.has(peer)) return prev;
248
281
  const next = new Set(prev);
249
282
  next.add(peer);
250
283
  return next;
@@ -255,6 +288,7 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
255
288
  const peer = (data?.peerId as string) ?? null;
256
289
  if (!peer) return;
257
290
  setRaisedHands((prev) => {
291
+ if (!prev.has(peer)) return prev;
258
292
  const next = new Set(prev);
259
293
  next.delete(peer);
260
294
  return next;
@@ -335,9 +369,22 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
335
369
  >(new Map());
336
370
  const activeCandidate = useRef<string | null>(null);
337
371
  const activeSince = useRef<number>(0);
372
+ const silenceSince = useRef<number>(0);
338
373
 
339
374
  useEffect(() => {
340
- if (!features.enableActiveSpeaker) return;
375
+ if (!features.enableActiveSpeaker || signalingStatus !== "open") {
376
+ setActiveSpeakerId(null);
377
+ analyzers.current.forEach((entry) => {
378
+ entry.source.disconnect();
379
+ entry.analyser.disconnect();
380
+ entry.ctx.close();
381
+ });
382
+ analyzers.current.clear();
383
+ activeCandidate.current = null;
384
+ activeSince.current = 0;
385
+ silenceSince.current = 0;
386
+ return;
387
+ }
341
388
 
342
389
  const ensureAnalyzer = (id: string, stream: MediaStream) => {
343
390
  if (analyzers.current.has(id)) return;
@@ -370,6 +417,7 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
370
417
 
371
418
  const minHoldMs = 700;
372
419
  const minLevel = 18;
420
+ const silenceHoldMs = 1200;
373
421
  const interval = window.setInterval(() => {
374
422
  let loudestId: string | null = null;
375
423
  let loudest = 0;
@@ -395,6 +443,16 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
395
443
  prev === activeCandidate.current ? prev : activeCandidate.current
396
444
  );
397
445
  }
446
+
447
+ if (!loudestId) {
448
+ if (!silenceSince.current) silenceSince.current = now;
449
+ const silentLongEnough = now - silenceSince.current >= silenceHoldMs;
450
+ if (silentLongEnough) {
451
+ setActiveSpeakerId((prev) => (prev === null ? prev : null));
452
+ }
453
+ } else {
454
+ silenceSince.current = 0;
455
+ }
398
456
  }, 400);
399
457
 
400
458
  return () => {
@@ -407,8 +465,9 @@ export function useMeshRoom(options: UseMeshRoomOptions) {
407
465
  analyzers.current.clear();
408
466
  activeCandidate.current = null;
409
467
  activeSince.current = 0;
468
+ silenceSince.current = 0;
410
469
  };
411
- }, [features.enableActiveSpeaker, participants]);
470
+ }, [features.enableActiveSpeaker, participants, signalingStatus]);
412
471
 
413
472
  return {
414
473
  localStream,