vg-x07df 1.9.1 → 1.9.3

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.
@@ -1425,7 +1425,8 @@ function useReactions() {
1425
1425
  };
1426
1426
  }
1427
1427
  var defaultState4 = {
1428
- spotlightedUser: null
1428
+ spotlightedUser: null,
1429
+ isSpotlighted: false
1429
1430
  };
1430
1431
  var useSpotlightStore = zustand.create()(
1431
1432
  immer.immer((set, get) => ({
@@ -1436,17 +1437,16 @@ var useSpotlightStore = zustand.create()(
1436
1437
  ts: Date.now(),
1437
1438
  ...info && { info }
1438
1439
  };
1440
+ state.isSpotlighted = true;
1439
1441
  }),
1440
1442
  unspotlight: () => set((state) => {
1441
1443
  state.spotlightedUser = null;
1444
+ state.isSpotlighted = false;
1442
1445
  }),
1443
1446
  getSpotlightedUser: () => get().spotlightedUser,
1444
- isSpotlighted: (participantId) => {
1445
- const user = get().spotlightedUser;
1446
- return user?.participantId === participantId;
1447
- },
1448
1447
  clear: () => set(() => ({
1449
- spotlightedUser: null
1448
+ spotlightedUser: null,
1449
+ isSpotlighted: false
1450
1450
  }))
1451
1451
  }))
1452
1452
  );
@@ -1454,7 +1454,7 @@ function applyIncomingSpotlight(envelope) {
1454
1454
  const { spotlight, unspotlight } = useSpotlightStore.getState();
1455
1455
  switch (envelope.payload.action) {
1456
1456
  case "spotlight": {
1457
- spotlight(envelope.payload.targetId);
1457
+ spotlight(envelope.payload.targetId, envelope.payload.info);
1458
1458
  break;
1459
1459
  }
1460
1460
  case "unspotlight": {
@@ -1506,7 +1506,7 @@ var SpotlightService = class {
1506
1506
  getLocalParticipantId() {
1507
1507
  return this.room.localParticipant.identity;
1508
1508
  }
1509
- async spotlight(targetId) {
1509
+ async spotlight(targetId, info) {
1510
1510
  if (!this.isRoomReady()) {
1511
1511
  useRtcStore.getState().addError({
1512
1512
  code: "SPOTLIGHT_ROOM_NOT_READY",
@@ -1516,7 +1516,8 @@ var SpotlightService = class {
1516
1516
  return;
1517
1517
  }
1518
1518
  const senderInfo = this.getSenderInfo();
1519
- useSpotlightStore.getState().spotlight(targetId);
1519
+ const previousSpotlighted = useSpotlightStore.getState().getSpotlightedUser();
1520
+ useSpotlightStore.getState().spotlight(targetId, info);
1520
1521
  try {
1521
1522
  const envelope = {
1522
1523
  v: 1,
@@ -1526,15 +1527,21 @@ var SpotlightService = class {
1526
1527
  sender: senderInfo,
1527
1528
  payload: {
1528
1529
  action: "spotlight",
1529
- targetId
1530
+ targetId,
1531
+ info
1530
1532
  }
1531
1533
  };
1532
1534
  await this.room.localParticipant.sendText(JSON.stringify(envelope), {
1533
1535
  topic: "spotlight:v1"
1534
1536
  });
1535
- logger7.debug("User spotlighted", { targetId });
1537
+ logger7.info("User spotlighted", { targetId });
1536
1538
  } catch (error) {
1537
1539
  logger7.error("Failed to spotlight user", error);
1540
+ if (previousSpotlighted) {
1541
+ useSpotlightStore.getState().spotlight(previousSpotlighted.participantId, previousSpotlighted.info);
1542
+ } else {
1543
+ useSpotlightStore.getState().unspotlight();
1544
+ }
1538
1545
  useRtcStore.getState().addError({
1539
1546
  code: "SPOTLIGHT_SEND_FAILED",
1540
1547
  message: error instanceof Error ? error.message : "Failed to spotlight user",
@@ -1557,6 +1564,7 @@ var SpotlightService = class {
1557
1564
  logger7.debug("No user is currently spotlighted");
1558
1565
  return;
1559
1566
  }
1567
+ const previousSpotlighted = { ...currentSpotlighted };
1560
1568
  useSpotlightStore.getState().unspotlight();
1561
1569
  try {
1562
1570
  const envelope = {
@@ -1567,15 +1575,16 @@ var SpotlightService = class {
1567
1575
  sender: senderInfo,
1568
1576
  payload: {
1569
1577
  action: "unspotlight",
1570
- targetId: currentSpotlighted.participantId
1578
+ targetId: previousSpotlighted.participantId
1571
1579
  }
1572
1580
  };
1573
1581
  await this.room.localParticipant.sendText(JSON.stringify(envelope), {
1574
1582
  topic: "spotlight:v1"
1575
1583
  });
1576
- logger7.debug("User unspotlighted");
1584
+ logger7.info("User unspotlighted");
1577
1585
  } catch (error) {
1578
1586
  logger7.error("Failed to unspotlight user", error);
1587
+ useSpotlightStore.getState().spotlight(previousSpotlighted.participantId, previousSpotlighted.info);
1579
1588
  useRtcStore.getState().addError({
1580
1589
  code: "UNSPOTLIGHT_SEND_FAILED",
1581
1590
  message: error instanceof Error ? error.message : "Failed to unspotlight user",
@@ -1630,12 +1639,12 @@ function useSpotlight() {
1630
1639
  );
1631
1640
  const isSpotlighted = useSpotlightStore((state) => state.isSpotlighted);
1632
1641
  const spotlight = react.useCallback(
1633
- async (targetId) => {
1642
+ async (targetId, info) => {
1634
1643
  if (!service) {
1635
1644
  logger8.error("Cannot spotlight: service not ready");
1636
1645
  return;
1637
1646
  }
1638
- return service.spotlight(targetId);
1647
+ return service.spotlight(targetId, info);
1639
1648
  },
1640
1649
  [service]
1641
1650
  );