@ai-matrx/meet 0.11.34 → 0.11.36

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/dist/react.cjs CHANGED
@@ -6111,6 +6111,7 @@ function createRoomEngine(options) {
6111
6111
  return;
6112
6112
  }
6113
6113
  driver = created;
6114
+ if (token.connectionKind === "companion") created.setRemoteAudioPlayback?.(false);
6114
6115
  await created.connect(token.serverUrl, token.token);
6115
6116
  store.patch({ failure: null, connection: "stable" });
6116
6117
  store.dispatch({ type: "connected" });
@@ -6372,6 +6373,19 @@ function createRoomEngine(options) {
6372
6373
  }
6373
6374
  },
6374
6375
  leave: leaveRoom,
6376
+ async checkElsewhere(roomName) {
6377
+ const claim = options.tabClaim;
6378
+ const userId = identity.userId;
6379
+ if (claim === void 0 || userId === null) return false;
6380
+ const before = store.snapshot();
6381
+ if (before.phase !== "prejoin" || before.secondDevice !== null) return false;
6382
+ if (!await claim.presentElsewhere(String(roomName), `user:${String(userId)}`)) return false;
6383
+ const now2 = store.snapshot();
6384
+ if (now2.phase !== "prejoin" || now2.secondDevice !== null) return false;
6385
+ store.patch({ secondDevice: { rule: "ask_switch_or_join" } });
6386
+ report("info", "meet: this browser already has you in this meeting \u2014 offering the choice before Join");
6387
+ return true;
6388
+ },
6375
6389
  backToPrejoin() {
6376
6390
  store.dispatch({ type: "back_to_prejoin", click: true });
6377
6391
  },
@@ -6921,6 +6935,7 @@ function createLiveKitDriver(handlers, options = {}) {
6921
6935
  projectRoster = roster;
6922
6936
  created.on(RoomEvent.TrackSubscribed, (track) => {
6923
6937
  if (track.kind !== Track.Kind.Audio || typeof document === "undefined") return;
6938
+ if (!remoteAudioPlayback) return;
6924
6939
  const element = track.attach();
6925
6940
  element.setAttribute("data-mx-meet-audio", "");
6926
6941
  audioSink().appendChild(element);
@@ -7005,6 +7020,7 @@ function createLiveKitDriver(handlers, options = {}) {
7005
7020
  let sources = null;
7006
7021
  let trackEvents = null;
7007
7022
  let audioContainer = null;
7023
+ let remoteAudioPlayback = true;
7008
7024
  function audioSink() {
7009
7025
  if (audioContainer !== null && audioContainer.isConnected) return audioContainer;
7010
7026
  const container = document.createElement("div");
@@ -7163,6 +7179,14 @@ function createLiveKitDriver(handlers, options = {}) {
7163
7179
  throw normalizeDeviceError(error, "meet.switchDevice");
7164
7180
  }
7165
7181
  },
7182
+ setRemoteAudioPlayback(enabled) {
7183
+ remoteAudioPlayback = enabled;
7184
+ if (enabled || audioContainer === null) return;
7185
+ for (const element of Array.from(audioContainer.querySelectorAll("[data-mx-meet-audio]"))) {
7186
+ if (element instanceof HTMLMediaElement) element.srcObject = null;
7187
+ element.remove();
7188
+ }
7189
+ },
7166
7190
  async startAudio() {
7167
7191
  const target = room;
7168
7192
  if (target === null) return;
@@ -8434,6 +8458,10 @@ function useRoom() {
8434
8458
  async (request) => requireEngine(engine, "join").join(request),
8435
8459
  [engine]
8436
8460
  ),
8461
+ checkElsewhere: (0, import_react4.useCallback)(
8462
+ async (roomName) => engine === null ? false : engine.checkElsewhere(roomName),
8463
+ [engine]
8464
+ ),
8437
8465
  leave: (0, import_react4.useCallback)(async () => requireEngine(engine, "leave").leave(), [engine]),
8438
8466
  toggleMicrophone: (0, import_react4.useCallback)(
8439
8467
  async () => requireEngine(engine, "toggleMicrophone").setMicrophoneEnabled(
@@ -12845,6 +12873,10 @@ function PreJoinBody({
12845
12873
  (0, import_react10.useEffect)(() => {
12846
12874
  void host.devices.refresh();
12847
12875
  }, [host]);
12876
+ const { checkElsewhere } = room;
12877
+ (0, import_react10.useEffect)(() => {
12878
+ void checkElsewhere(roomName);
12879
+ }, [checkElsewhere, roomName]);
12848
12880
  const joinWith = (secondDevice) => {
12849
12881
  setJoining(true);
12850
12882
  preview.release();