mediasfu-shared 1.0.5 → 1.0.6

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/index.js CHANGED
@@ -1702,6 +1702,21 @@ const connectSendTransportVideo = async ({
1702
1702
  throw error;
1703
1703
  }
1704
1704
  };
1705
+ const waitForReadyDevice = async (parameters, attempts = 20, delayMs = 100) => {
1706
+ let resolvedDevice = parameters.getUpdatedAllParams().device ?? parameters.device;
1707
+ for (let attempt = 0; !resolvedDevice && attempt < attempts; attempt += 1) {
1708
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
1709
+ resolvedDevice = parameters.getUpdatedAllParams().device ?? parameters.device;
1710
+ }
1711
+ return resolvedDevice;
1712
+ };
1713
+ const notifyDeviceNotReady = (parameters) => {
1714
+ parameters.showAlert?.({
1715
+ message: "Media device is still initializing. Please try screen sharing again in a moment.",
1716
+ type: "danger",
1717
+ duration: 3e3
1718
+ });
1719
+ };
1705
1720
  const createLocalSendTransport = async ({
1706
1721
  option,
1707
1722
  parameters
@@ -1719,6 +1734,10 @@ const createLocalSendTransport = async ({
1719
1734
  updateLocalTransportCreated,
1720
1735
  connectSendTransport: connectSendTransport2
1721
1736
  } = parameters;
1737
+ const updatedParams = parameters.getUpdatedAllParams();
1738
+ device = updatedParams.device ?? device;
1739
+ socket = updatedParams.socket ?? socket;
1740
+ localSocket = updatedParams.localSocket ?? localSocket;
1722
1741
  if (!localSocket || !localSocket.id || socket.id === localSocket.id) {
1723
1742
  return;
1724
1743
  }
@@ -1730,7 +1749,12 @@ const createLocalSendTransport = async ({
1730
1749
  console.error("Error in local createWebRtcTransport:", params.error);
1731
1750
  return;
1732
1751
  }
1733
- localProducerTransport = await device.createSendTransport(params);
1752
+ const resolvedDevice = await waitForReadyDevice(parameters) ?? device;
1753
+ if (!resolvedDevice) {
1754
+ notifyDeviceNotReady(parameters);
1755
+ return;
1756
+ }
1757
+ localProducerTransport = await resolvedDevice.createSendTransport(params);
1734
1758
  if (updateLocalProducerTransport) {
1735
1759
  updateLocalProducerTransport(localProducerTransport);
1736
1760
  }
@@ -1805,6 +1829,13 @@ const createSendTransport = async ({
1805
1829
  const updatedParams = parameters.getUpdatedAllParams();
1806
1830
  device = updatedParams.device;
1807
1831
  socket = updatedParams.socket;
1832
+ if (!device) {
1833
+ device = await waitForReadyDevice(parameters);
1834
+ }
1835
+ if (!device) {
1836
+ notifyDeviceNotReady(parameters);
1837
+ return;
1838
+ }
1808
1839
  try {
1809
1840
  await createLocalSendTransport({ option, parameters });
1810
1841
  } catch (error) {
@@ -1818,7 +1849,12 @@ const createSendTransport = async ({
1818
1849
  console.error("Error in createWebRtcTransport:", params.error);
1819
1850
  return;
1820
1851
  }
1821
- producerTransport = await device.createSendTransport(params);
1852
+ const resolvedDevice = await waitForReadyDevice(parameters) ?? device;
1853
+ if (!resolvedDevice) {
1854
+ notifyDeviceNotReady(parameters);
1855
+ return;
1856
+ }
1857
+ producerTransport = await resolvedDevice.createSendTransport(params);
1822
1858
  updateProducerTransport(producerTransport);
1823
1859
  producerTransport.on(
1824
1860
  "connect",