@fishjam-cloud/react-client 0.5.5 → 0.6.0

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.
Files changed (47) hide show
  1. package/dist/Client.d.ts +2 -2
  2. package/dist/Client.d.ts.map +1 -1
  3. package/dist/fishjamProvider.d.ts +12 -0
  4. package/dist/fishjamProvider.d.ts.map +1 -0
  5. package/dist/fishjamProvider.js +30 -0
  6. package/dist/hooks/clientState.d.ts +4 -0
  7. package/dist/hooks/clientState.d.ts.map +1 -0
  8. package/dist/hooks/clientState.js +81 -0
  9. package/dist/hooks/connection.d.ts +6 -0
  10. package/dist/hooks/connection.d.ts.map +1 -0
  11. package/dist/hooks/connection.js +28 -0
  12. package/dist/hooks/devices.d.ts +4 -0
  13. package/dist/hooks/devices.d.ts.map +1 -0
  14. package/dist/hooks/devices.js +9 -0
  15. package/dist/hooks/fishjamContext.d.ts +4 -0
  16. package/dist/hooks/fishjamContext.d.ts.map +1 -0
  17. package/dist/hooks/fishjamContext.js +8 -0
  18. package/dist/hooks/participants.d.ts +6 -0
  19. package/dist/hooks/participants.d.ts.map +1 -0
  20. package/dist/hooks/participants.js +13 -0
  21. package/dist/hooks/public.d.ts +7 -0
  22. package/dist/hooks/public.d.ts.map +1 -0
  23. package/dist/hooks/public.js +6 -0
  24. package/dist/hooks/screenShare.d.ts +3 -0
  25. package/dist/hooks/screenShare.d.ts.map +1 -0
  26. package/dist/{screenShareTrackManager.js → hooks/screenShare.js} +6 -4
  27. package/dist/hooks/setupMedia.d.ts +3 -0
  28. package/dist/hooks/setupMedia.d.ts.map +1 -0
  29. package/dist/hooks/setupMedia.js +200 -0
  30. package/dist/hooks/state.d.ts +6 -0
  31. package/dist/hooks/state.d.ts.map +1 -0
  32. package/dist/hooks/state.js +15 -0
  33. package/dist/index.d.ts +3 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -1
  36. package/dist/trackManager.js +11 -11
  37. package/dist/types.d.ts +7 -9
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +3 -4
  40. package/dist/create.d.ts +0 -10
  41. package/dist/create.d.ts.map +0 -1
  42. package/dist/create.js +0 -195
  43. package/dist/screenShareTrackManager.d.ts +0 -4
  44. package/dist/screenShareTrackManager.d.ts.map +0 -1
  45. package/dist/useSetupMedia.d.ts +0 -3
  46. package/dist/useSetupMedia.d.ts.map +0 -1
  47. package/dist/useSetupMedia.js +0 -201
package/dist/Client.d.ts CHANGED
@@ -153,7 +153,7 @@ export interface ClientEvents {
153
153
  localTrackMetadataChanged: (event: Parameters<MessageEvents<PeerMetadata, TrackMetadata>["localTrackMetadataChanged"]>[0], client: ClientApi) => void;
154
154
  disconnectRequested: (event: Parameters<MessageEvents<PeerMetadata, TrackMetadata>["disconnectRequested"]>[0], client: ClientApi) => void;
155
155
  }
156
- export type ReactClientCreteConfig<PeerMetadata, TrackMetadata> = {
156
+ export type ReactClientCreateConfig = {
157
157
  clientConfig?: CreateConfig<PeerMetadata, TrackMetadata>;
158
158
  deviceManagerDefaultConfig?: DeviceManagerConfig;
159
159
  };
@@ -173,7 +173,7 @@ export declare class Client extends Client_base {
173
173
  videoDeviceManager: DeviceManager;
174
174
  audioDeviceManager: DeviceManager;
175
175
  private initialized;
176
- constructor(config?: ReactClientCreteConfig<PeerMetadata, TrackMetadata>);
176
+ constructor(config?: ReactClientCreateConfig);
177
177
  setDeviceManagerConfig(config: DeviceManagerConfig): void;
178
178
  private trackContextToTrack;
179
179
  getTsClient: () => FishjamClient<PeerMetadata, TrackMetadata>;
@@ -1 +1 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAS,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,eAAe,EACf,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAExB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE9C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IAEjB,cAAc,EAAE,MAAM,OAAO,CAAC;CAC/B,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE5D;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEvD;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEtD,gDAAgD;IAChD,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEzC,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEhE,4CAA4C;IAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE1C,yCAAyC;IACzC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEzC,sDAAsD;IACtD,mBAAmB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEjD,yEAAyE;IACzE,+BAA+B,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE7D;;OAEG;IACH,MAAM,EAAE,CACN,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;QAC3C,UAAU,EAAE,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,CAAC;KACtD,EACD,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IAEV;;;OAGG;IACH,SAAS,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEtD;;;;;OAKG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAExF;;;OAGG;IACH,UAAU,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAExF;;;;OAIG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE1F;;OAEG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE1F;;OAEG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEjF;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE/E;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAElF;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE1F;;OAEG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE5F;;OAEG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE5F;;OAEG;IACH,eAAe,EAAE,CACf,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IAEV;;;;;OAKG;IACH,0BAA0B,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAG5E,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEjG;;OAEG;IACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAGtG,cAAc,EAAE,CACd,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAChF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACrG,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACpH,cAAc,EAAE,CACd,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAC5E,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACtH,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAClE,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAEnE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAE7C,4BAA4B,EAAE,CAC5B,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,EAChG,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,eAAe,EAAE,CACf,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,iBAAiB,EAAE,CACjB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EACrF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,kBAAkB,EAAE,CAClB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EACtF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,eAAe,EAAE,CACf,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,iBAAiB,EAAE,CACjB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EACrF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,sBAAsB,EAAE,CACtB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1F,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,8BAA8B,EAAE,CAC9B,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClG,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,yBAAyB,EAAE,CACzB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,0BAA0B,EAAE,CAC1B,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,EAC9F,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,wBAAwB,EAAE,CACxB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5F,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,yBAAyB,EAAE,CACzB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;IACV,mBAAmB,EAAE,CACnB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EACvF,MAAM,EAAE,SAAS,KACd,IAAI,CAAC;CACX;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACzD,0BAA0B,CAAC,EAAE,mBAAmB,CAAC;CAClD,CAAC;qCAEqD,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAA3F,qBAAa,MAAO,SAAQ,WAAgE;IAC1F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IAE/D,KAAK,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IAE3C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAM;IACnD,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAM;IAExD,mBAAmB,EAAE,MAAM,CAAa;IACxC,MAAM,EAAE,UAAU,CAAQ;IAC1B,KAAK,EAAE,UAAU,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,OAAO,CAAC;IAEjB,kBAAkB,EAAE,kBAAkB,CAAU;IAEhD,kBAAkB,EAAE,aAAa,CAAC;IAClC,kBAAkB,EAAE,aAAa,CAAC;IACzC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,CAAC,EAAE,uBAAuB;IAwWrC,sBAAsB,CAAC,MAAM,EAAE,mBAAmB;IAKzD,OAAO,CAAC,mBAAmB;IAcpB,WAAW,mDAAuB;IAElC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKpC,UAAU;IAKV,QAAQ,CACb,KAAK,EAAE,gBAAgB,EACvB,eAAe,GAAE,eAAgF,EACjG,YAAY,GAAE,mBAAuB,GACpC,OAAO,CAAC,MAAM,CAAC;IAIX,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,aAAa,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAI1E,sBAAsB,IAAI,MAAM;IAIhC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/E,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/F,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIjE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,cAAc,QAAO,OAAO,CAEjC;IAEK,iBAAiB,YAAmB,uBAAuB,mBA8ChE;IAEK,YAAY,WAAkB,wBAAwB,mBAG3D;IAEF,OAAO,CAAC,eAAe;CA0GxB"}
@@ -0,0 +1,12 @@
1
+ import type { PropsWithChildren } from "react";
2
+ import type { DeviceManagerConfig } from "./types";
3
+ import type { ReconnectConfig } from "@fishjam-cloud/ts-client";
4
+ interface FishjamProviderProps extends PropsWithChildren {
5
+ config?: {
6
+ reconnect?: ReconnectConfig | boolean;
7
+ };
8
+ deviceManagerDefaultConfig?: DeviceManagerConfig;
9
+ }
10
+ export declare function FishjamProvider({ children, config, deviceManagerDefaultConfig }: FishjamProviderProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=fishjamProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fishjamProvider.d.ts","sourceRoot":"","sources":["../src/fishjamProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,OAAO,KAAK,EAAE,mBAAmB,EAAoB,MAAM,SAAS,CAAC;AAErE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,eAAe,GAAG,OAAO,CAAA;KAAE,CAAC;IACnD,0BAA0B,CAAC,EAAE,mBAAmB,CAAC;CAClD;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,EAAE,oBAAoB,2CAmCrG"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from "react";
3
+ import { Client } from "./Client";
4
+ import { useTrackManager } from "./trackManager";
5
+ import { useClientState } from "./hooks/clientState";
6
+ import { FishjamContext } from "./hooks/fishjamContext";
7
+ export function FishjamProvider({ children, config, deviceManagerDefaultConfig }) {
8
+ const client = useRef(new Client({
9
+ clientConfig: config,
10
+ deviceManagerDefaultConfig,
11
+ }));
12
+ // TODO: do the same for client config or just remove the Client class
13
+ useEffect(() => {
14
+ if (!deviceManagerDefaultConfig)
15
+ return;
16
+ client.current.setDeviceManagerConfig(deviceManagerDefaultConfig);
17
+ }, [deviceManagerDefaultConfig]);
18
+ const state = useClientState(client.current);
19
+ const tsClient = client.current.getTsClient();
20
+ const screenshareState = useState(null);
21
+ const videoTrackManager = useTrackManager({
22
+ mediaManager: client.current.videoDeviceManager,
23
+ tsClient,
24
+ });
25
+ const audioTrackManager = useTrackManager({
26
+ mediaManager: client.current.audioDeviceManager,
27
+ tsClient,
28
+ });
29
+ return (_jsx(FishjamContext.Provider, { value: { state, screenshareState, videoTrackManager, audioTrackManager }, children: children }));
30
+ }
@@ -0,0 +1,4 @@
1
+ import type { State } from "../state.types";
2
+ import type { Client } from "../Client";
3
+ export declare const useClientState: (client: Client) => State;
4
+ //# sourceMappingURL=clientState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientState.d.ts","sourceRoot":"","sources":["../../src/hooks/clientState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAmDxC,eAAO,MAAM,cAAc,WAAY,MAAM,UAwC5C,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { useCallback, useRef, useSyncExternalStore } from "react";
2
+ const eventNames = [
3
+ "socketOpen",
4
+ "socketError",
5
+ "socketClose",
6
+ "authSuccess",
7
+ "authError",
8
+ "disconnected",
9
+ "joined",
10
+ "joinError",
11
+ "peerJoined",
12
+ "peerUpdated",
13
+ "peerLeft",
14
+ "reconnected",
15
+ "reconnectionRetriesLimitReached",
16
+ "reconnectionStarted",
17
+ "componentAdded",
18
+ "componentUpdated",
19
+ "componentRemoved",
20
+ "trackReady",
21
+ "trackAdded",
22
+ "trackRemoved",
23
+ "trackUpdated",
24
+ "bandwidthEstimationChanged",
25
+ "encodingChanged",
26
+ "voiceActivityChanged",
27
+ "deviceDisabled",
28
+ "deviceEnabled",
29
+ "managerInitialized",
30
+ "managerStarted",
31
+ "deviceStopped",
32
+ "deviceReady",
33
+ "devicesStarted",
34
+ "devicesReady",
35
+ "error",
36
+ "targetTrackEncodingRequested",
37
+ "localTrackAdded",
38
+ "localTrackRemoved",
39
+ "localTrackReplaced",
40
+ "localTrackMuted",
41
+ "localTrackUnmuted",
42
+ "localTrackBandwidthSet",
43
+ "localTrackEncodingBandwidthSet",
44
+ "localTrackEncodingEnabled",
45
+ "localTrackEncodingDisabled",
46
+ "localPeerMetadataChanged",
47
+ "localTrackMetadataChanged",
48
+ "disconnectRequested",
49
+ ];
50
+ export const useClientState = (client) => {
51
+ const mutationRef = useRef(false);
52
+ const subscribe = useCallback((subscribeCallback) => {
53
+ const callback = () => {
54
+ mutationRef.current = true;
55
+ subscribeCallback();
56
+ };
57
+ eventNames.forEach((eventName) => client.on(eventName, callback));
58
+ return () => {
59
+ eventNames.forEach((eventName) => client.removeListener(eventName, callback));
60
+ };
61
+ }, [client]);
62
+ const lastSnapshotRef = useRef(null);
63
+ const getSnapshot = useCallback(() => {
64
+ if (mutationRef.current || lastSnapshotRef.current === null) {
65
+ lastSnapshotRef.current = {
66
+ remote: client.peers,
67
+ media: client.media,
68
+ bandwidthEstimation: client.bandwidthEstimation,
69
+ tracks: client.peersTracks,
70
+ local: client.local,
71
+ status: client.status,
72
+ devices: client.devices,
73
+ client: client,
74
+ reconnectionStatus: client.reconnectionStatus,
75
+ };
76
+ mutationRef.current = false;
77
+ }
78
+ return lastSnapshotRef.current;
79
+ }, [client]);
80
+ return useSyncExternalStore(subscribe, getSnapshot);
81
+ };
@@ -0,0 +1,6 @@
1
+ import type { UseConnect } from "../types";
2
+ import type { UseReconnection } from "../state.types";
3
+ export declare function useConnect(): UseConnect;
4
+ export declare function useDisconnect(): () => void;
5
+ export declare function useReconnection(): UseReconnection;
6
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/hooks/connection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,UAAU,EAAE,MAAM,UAAU,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,wBAAgB,UAAU,IAAI,UAAU,CAWvC;AAED,wBAAgB,aAAa,eAM5B;AAED,wBAAgB,eAAe,IAAI,eAAe,CASjD"}
@@ -0,0 +1,28 @@
1
+ import { useFishjamContext } from "./fishjamContext";
2
+ import { useCallback, useMemo } from "react";
3
+ export function useConnect() {
4
+ const { state } = useFishjamContext();
5
+ return useMemo(() => {
6
+ return (config) => {
7
+ state.client.connect(config);
8
+ return () => {
9
+ state.client.disconnect();
10
+ };
11
+ };
12
+ }, [state.client]);
13
+ }
14
+ export function useDisconnect() {
15
+ const { state } = useFishjamContext();
16
+ return useCallback(() => {
17
+ state.client.disconnect();
18
+ }, [state.client]);
19
+ }
20
+ export function useReconnection() {
21
+ const { state } = useFishjamContext();
22
+ return {
23
+ status: state.reconnectionStatus,
24
+ isReconnecting: state.reconnectionStatus === "reconnecting",
25
+ isError: state.reconnectionStatus === "error",
26
+ isIdle: state.reconnectionStatus === "idle",
27
+ };
28
+ }
@@ -0,0 +1,4 @@
1
+ import type { UserMediaAPI, TrackManager } from "../types";
2
+ export declare function useCamera(): UserMediaAPI & TrackManager;
3
+ export declare function useMicrophone(): UserMediaAPI & TrackManager;
4
+ //# sourceMappingURL=devices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/hooks/devices.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,wBAAgB,SAAS,IAAI,YAAY,GAAG,YAAY,CAGvD;AAED,wBAAgB,aAAa,IAAI,YAAY,GAAG,YAAY,CAG3D"}
@@ -0,0 +1,9 @@
1
+ import { useFishjamContext } from "./fishjamContext";
2
+ export function useCamera() {
3
+ const { state, videoTrackManager } = useFishjamContext();
4
+ return { ...state.devices.camera, ...videoTrackManager };
5
+ }
6
+ export function useMicrophone() {
7
+ const { state, audioTrackManager } = useFishjamContext();
8
+ return { ...state.devices.microphone, ...audioTrackManager };
9
+ }
@@ -0,0 +1,4 @@
1
+ import type { FishjamContextType } from "../types";
2
+ export declare const FishjamContext: import("react").Context<FishjamContextType | null>;
3
+ export declare function useFishjamContext(): FishjamContextType;
4
+ //# sourceMappingURL=fishjamContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fishjamContext.d.ts","sourceRoot":"","sources":["../../src/hooks/fishjamContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,cAAc,oDAAiD,CAAC;AAE7E,wBAAgB,iBAAiB,IAGb,kBAAkB,CACrC"}
@@ -0,0 +1,8 @@
1
+ import { createContext, useContext } from "react";
2
+ export const FishjamContext = createContext(null);
3
+ export function useFishjamContext() {
4
+ const context = useContext(FishjamContext);
5
+ if (!context)
6
+ throw new Error("useFishjamContext must be used within a FishjamContextProvider");
7
+ return context;
8
+ }
@@ -0,0 +1,6 @@
1
+ import type { PeerStateWithTracks } from "../types";
2
+ export declare function useParticipants(): {
3
+ localParticipant: PeerStateWithTracks | null;
4
+ participants: PeerStateWithTracks[];
5
+ };
6
+ //# sourceMappingURL=participants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"participants.d.ts","sourceRoot":"","sources":["../../src/hooks/participants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAWpD,wBAAgB,eAAe;;;EAQ9B"}
@@ -0,0 +1,13 @@
1
+ import { useFishjamContext } from "./fishjamContext";
2
+ function getPeerWithDistinguishedTracks(peerState) {
3
+ const localTracks = Object.values(peerState.tracks ?? {});
4
+ const videoTracks = localTracks.filter(({ track }) => track?.kind === "video");
5
+ const audioTracks = localTracks.filter(({ track }) => track?.kind === "audio");
6
+ return { ...peerState, videoTracks, audioTracks };
7
+ }
8
+ export function useParticipants() {
9
+ const { state } = useFishjamContext();
10
+ const localParticipant = state.local ? getPeerWithDistinguishedTracks(state.local) : null;
11
+ const participants = Object.values(state.remote).map(getPeerWithDistinguishedTracks);
12
+ return { localParticipant, participants };
13
+ }
@@ -0,0 +1,7 @@
1
+ export { useConnect, useDisconnect, useReconnection } from "./connection";
2
+ export { useCamera, useMicrophone } from "./devices";
3
+ export { useParticipants } from "./participants";
4
+ export { useScreenShare } from "./screenShare";
5
+ export { useSelector, useStatus, useTracks, useClient } from "./state";
6
+ export { useSetupMedia } from "./setupMedia";
7
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/hooks/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { useConnect, useDisconnect, useReconnection } from "./connection";
2
+ export { useCamera, useMicrophone } from "./devices";
3
+ export { useParticipants } from "./participants";
4
+ export { useScreenShare } from "./screenShare";
5
+ export { useSelector, useStatus, useTracks, useClient } from "./state";
6
+ export { useSetupMedia } from "./setupMedia";
@@ -0,0 +1,3 @@
1
+ import type { ScreenshareApi } from "../types";
2
+ export declare const useScreenShare: () => ScreenshareApi;
3
+ //# sourceMappingURL=screenShare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenShare.d.ts","sourceRoot":"","sources":["../../src/hooks/screenShare.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAoB,MAAM,UAAU,CAAC;AAUjE,eAAO,MAAM,cAAc,QAAO,cAwGjC,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import { useCallback, useEffect } from "react";
2
- import { getRemoteOrLocalTrack } from "./utils/track";
2
+ import { getRemoteOrLocalTrack } from "../utils/track";
3
+ import { useFishjamContext } from "./fishjamContext";
3
4
  const getTracks = (stream) => {
4
5
  const video = stream.getVideoTracks()[0];
5
6
  const audio = stream.getAudioTracks()[0] ?? null;
6
7
  return [video, audio];
7
8
  };
8
- export const useScreenShare = (
9
- // these arguments will be removed after we get rid of create() fn, we will just use the context
10
- [state, setState], tsClient) => {
9
+ export const useScreenShare = () => {
10
+ const ctx = useFishjamContext();
11
+ const [state, setState] = ctx.screenshareState;
12
+ const tsClient = ctx.state.client.getTsClient();
11
13
  const startStreaming = async (props) => {
12
14
  const stream = await navigator.mediaDevices.getDisplayMedia({
13
15
  video: props?.videoConstraints ?? true,
@@ -0,0 +1,3 @@
1
+ import type { UseSetupMediaConfig, UseSetupMediaResult } from "../types";
2
+ export declare const useSetupMedia: (config: UseSetupMediaConfig) => UseSetupMediaResult;
3
+ //# sourceMappingURL=setupMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/setupMedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAYzE,eAAO,MAAM,aAAa,WAAY,mBAAmB,KAAG,mBA6O3D,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+ import { useFishjamContext } from "./fishjamContext";
3
+ const isBroadcastedTrackChanged = (client, pending) => client.status === "joined" && !pending && !client.isReconnecting();
4
+ const isBroadcastedTrackStopped = (status, stream) => status === "joined" && stream;
5
+ export const useSetupMedia = (config) => {
6
+ const { state, videoTrackManager, audioTrackManager } = useFishjamContext();
7
+ const configRef = useRef(config);
8
+ useEffect(() => {
9
+ configRef.current = config;
10
+ state.client.setDeviceManagerConfig({
11
+ storage: config.storage,
12
+ });
13
+ }, [config, state.client]);
14
+ useEffect(() => {
15
+ if (!configRef.current.startOnMount)
16
+ return;
17
+ state.client.initializeDevices({
18
+ audioTrackConstraints: configRef?.current.microphone.trackConstraints,
19
+ videoTrackConstraints: configRef?.current.camera.trackConstraints,
20
+ });
21
+ // eslint-disable-next-line
22
+ }, []);
23
+ useEffect(() => {
24
+ let pending = false;
25
+ const broadcastOnCameraStart = async (client) => {
26
+ const config = configRef.current.camera;
27
+ const onDeviceChange = config.onDeviceChange ?? "replace";
28
+ const stream = videoTrackManager.getCurrentTrack()?.stream;
29
+ if (isBroadcastedTrackChanged(client, pending)) {
30
+ if (!stream && config.broadcastOnDeviceStart) {
31
+ pending = true;
32
+ await videoTrackManager
33
+ .startStreaming(config.defaultSimulcastConfig, config.defaultMaxBandwidth)
34
+ .finally(() => {
35
+ pending = false;
36
+ });
37
+ }
38
+ else if (stream && onDeviceChange === "replace") {
39
+ pending = true;
40
+ await videoTrackManager.refreshStreamedTrack().finally(() => {
41
+ pending = false;
42
+ });
43
+ }
44
+ else if (stream && onDeviceChange === "remove") {
45
+ pending = true;
46
+ await videoTrackManager.stopStreaming().finally(() => {
47
+ pending = false;
48
+ });
49
+ }
50
+ }
51
+ };
52
+ const managerInitialized = async (event, client) => {
53
+ if (event.video?.media?.stream) {
54
+ await broadcastOnCameraStart(client);
55
+ }
56
+ };
57
+ const devicesReady = async (event, client) => {
58
+ if (event.trackType === "video" && event.restarted && event?.media?.stream) {
59
+ await broadcastOnCameraStart(client);
60
+ }
61
+ };
62
+ const deviceReady = async (event, client) => {
63
+ if (event.trackType === "video") {
64
+ await broadcastOnCameraStart(client);
65
+ }
66
+ };
67
+ state.client.on("managerInitialized", managerInitialized);
68
+ state.client.on("devicesReady", devicesReady);
69
+ state.client.on("deviceReady", deviceReady);
70
+ return () => {
71
+ state.client.removeListener("managerInitialized", managerInitialized);
72
+ state.client.removeListener("devicesReady", devicesReady);
73
+ state.client.removeListener("deviceReady", deviceReady);
74
+ };
75
+ }, [state.client, videoTrackManager]);
76
+ useEffect(() => {
77
+ const removeOnCameraStopped = async (event, client) => {
78
+ const stream = videoTrackManager.getCurrentTrack()?.stream;
79
+ const onDeviceStop = configRef.current.camera.onDeviceStop ?? "mute";
80
+ if (event.mediaDeviceType === "userMedia" &&
81
+ event.trackType === "video" &&
82
+ isBroadcastedTrackStopped(client.status, stream)) {
83
+ if (onDeviceStop === "mute") {
84
+ await videoTrackManager.pauseStreaming();
85
+ }
86
+ else {
87
+ await videoTrackManager.stopStreaming();
88
+ }
89
+ }
90
+ };
91
+ state.client.on("deviceStopped", removeOnCameraStopped);
92
+ return () => {
93
+ state.client.removeListener("deviceStopped", removeOnCameraStopped);
94
+ };
95
+ }, [state.client, videoTrackManager]);
96
+ useEffect(() => {
97
+ const broadcastCameraOnConnect = async (_, client) => {
98
+ const camera = client.devices.camera;
99
+ const stream = camera.stream;
100
+ const config = configRef.current.camera;
101
+ if (stream && config.broadcastOnConnect) {
102
+ await videoTrackManager.startStreaming(config.defaultSimulcastConfig, config.defaultMaxBandwidth);
103
+ }
104
+ };
105
+ state.client.on("joined", broadcastCameraOnConnect);
106
+ return () => {
107
+ state.client.removeListener("joined", broadcastCameraOnConnect);
108
+ };
109
+ }, [state.client, videoTrackManager]);
110
+ useEffect(() => {
111
+ let pending = false;
112
+ const broadcastOnMicrophoneStart = async (client) => {
113
+ const stream = audioTrackManager.getCurrentTrack()?.stream;
114
+ const config = configRef.current.microphone;
115
+ const onDeviceChange = config.onDeviceChange ?? "replace";
116
+ if (isBroadcastedTrackChanged(client, pending)) {
117
+ if (!stream && config.broadcastOnDeviceStart) {
118
+ pending = true;
119
+ await audioTrackManager.startStreaming(undefined, config.defaultMaxBandwidth).finally(() => {
120
+ pending = false;
121
+ });
122
+ }
123
+ else if (stream && onDeviceChange === "replace") {
124
+ pending = true;
125
+ await audioTrackManager.refreshStreamedTrack().finally(() => {
126
+ pending = false;
127
+ });
128
+ }
129
+ else if (stream && onDeviceChange === "remove") {
130
+ pending = true;
131
+ await audioTrackManager.stopStreaming().finally(() => {
132
+ pending = false;
133
+ });
134
+ }
135
+ }
136
+ };
137
+ const managerInitialized = async (event, client) => {
138
+ if (event.audio?.media?.stream) {
139
+ await broadcastOnMicrophoneStart(client);
140
+ }
141
+ };
142
+ const devicesReady = async (event, client) => {
143
+ if (event.trackType === "audio" && event.restarted && event?.media?.stream) {
144
+ await broadcastOnMicrophoneStart(client);
145
+ }
146
+ };
147
+ const deviceReady = async (event, client) => {
148
+ if (event.trackType === "audio") {
149
+ await broadcastOnMicrophoneStart(client);
150
+ }
151
+ };
152
+ state.client.on("managerInitialized", managerInitialized);
153
+ state.client.on("deviceReady", deviceReady);
154
+ state.client.on("devicesReady", devicesReady);
155
+ return () => {
156
+ state.client.removeListener("managerInitialized", managerInitialized);
157
+ state.client.removeListener("deviceReady", deviceReady);
158
+ state.client.removeListener("devicesReady", devicesReady);
159
+ };
160
+ }, [state.client, audioTrackManager]);
161
+ useEffect(() => {
162
+ const onMicrophoneStopped = async (event, client) => {
163
+ const stream = audioTrackManager.getCurrentTrack()?.stream;
164
+ const onDeviceStop = configRef.current.microphone.onDeviceStop ?? "mute";
165
+ const isRightDeviceType = event.mediaDeviceType === "userMedia";
166
+ const isRightTrackType = event.trackType === "audio";
167
+ if (isRightDeviceType && isRightTrackType && isBroadcastedTrackStopped(client.status, stream)) {
168
+ if (onDeviceStop === "mute") {
169
+ await audioTrackManager.pauseStreaming();
170
+ }
171
+ else {
172
+ await audioTrackManager.stopStreaming();
173
+ }
174
+ }
175
+ };
176
+ state.client.on("deviceStopped", onMicrophoneStopped);
177
+ return () => {
178
+ state.client.removeListener("deviceStopped", onMicrophoneStopped);
179
+ };
180
+ }, [state.client, audioTrackManager]);
181
+ useEffect(() => {
182
+ const broadcastMicrophoneOnConnect = async (_, client) => {
183
+ const config = configRef.current.microphone;
184
+ const microphone = client.devices.microphone;
185
+ if (microphone.stream && config.broadcastOnConnect) {
186
+ await audioTrackManager.startStreaming(undefined, config.defaultMaxBandwidth);
187
+ }
188
+ };
189
+ state.client.on("joined", broadcastMicrophoneOnConnect);
190
+ return () => {
191
+ state.client.removeListener("joined", broadcastMicrophoneOnConnect);
192
+ };
193
+ }, [state.client, audioTrackManager]);
194
+ return useMemo(() => ({
195
+ init: () => state.client.initializeDevices({
196
+ audioTrackConstraints: configRef.current?.microphone?.trackConstraints,
197
+ videoTrackConstraints: configRef.current?.camera?.trackConstraints,
198
+ }),
199
+ }), [state.client]);
200
+ };
@@ -0,0 +1,6 @@
1
+ import type { Selector } from "../state.types";
2
+ export declare function useSelector<Result>(selector: Selector<Result>): Result;
3
+ export declare function useStatus(): import("../state.types").PeerStatus;
4
+ export declare function useTracks(): Record<string, import("../state.types").TrackWithOrigin>;
5
+ export declare function useClient(): import("..").Client;
6
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/hooks/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,CAItE;AAED,wBAAgB,SAAS,wCAExB;AAED,wBAAgB,SAAS,6DAExB;AAED,wBAAgB,SAAS,wBAExB"}
@@ -0,0 +1,15 @@
1
+ import { useMemo } from "react";
2
+ import { useFishjamContext } from "./fishjamContext";
3
+ export function useSelector(selector) {
4
+ const { state } = useFishjamContext();
5
+ return useMemo(() => selector(state), [selector, state]);
6
+ }
7
+ export function useStatus() {
8
+ return useSelector((s) => s.status);
9
+ }
10
+ export function useTracks() {
11
+ return useSelector((s) => s.tracks);
12
+ }
13
+ export function useClient() {
14
+ return useSelector((s) => s.client);
15
+ }
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- export { create } from "./create";
1
+ export * from "./hooks/public";
2
+ export * from "./fishjamProvider";
2
3
  export { Client } from "./Client";
3
4
  export type { ClientEvents } from "./Client";
4
5
  export type { PeerState, Track, PeerId, TrackId, TrackWithOrigin, Origin, PeerStatus, Selector, State, SetStore, } from "./state.types";
5
- export type { DeviceManagerConfig, StorageConfig, Devices, UserMediaAPI, UseSetupMediaResult, UseSetupMediaConfig, CreateFishjamClient, ScreenshareApi, UseConnect, ConnectConfig, TrackManager, TrackMiddleware, TrackMetadata, // only for compatibility reasons, will be removed in: FCE-415
6
+ export type { DeviceManagerConfig, Participiants, StorageConfig, Devices, UserMediaAPI, UseSetupMediaResult, UseSetupMediaConfig, CreateFishjamClient, ScreenshareApi, UseConnect, ConnectConfig, TrackManager, TrackMiddleware, TrackMetadata, // only for compatibility reasons, will be removed in: FCE-415
6
7
  PeerMetadata, } from "./types";
7
8
  export { AUDIO_TRACK_CONSTRAINTS, VIDEO_TRACK_CONSTRAINTS, SCREEN_SHARING_MEDIA_CONSTRAINTS } from "./constraints";
8
9
  export type { Peer, MessageEvents, CreateConfig, TrackBandwidthLimit, SimulcastBandwidthLimit, BandwidthLimit, WebRTCEndpointEvents, TrackContextEvents, Endpoint, SimulcastConfig, TrackContext, VadStatus, EncodingReason, MetadataParser, AuthErrorReason, Encoding, } from "@fishjam-cloud/ts-client";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,YAAY,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EAAE,8DAA8D;AAC7E,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAEnH,YAAY,EACV,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,YAAY,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EAAE,8DAA8D;AAC7E,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAEnH,YAAY,EACV,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,SAAS,EACT,cAAc,EACd,cAAc,EACd,eAAe,EACf,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
- export { create } from "./create";
1
+ export * from "./hooks/public";
2
+ export * from "./fishjamProvider";
2
3
  export { Client } from "./Client";
3
4
  export { AUDIO_TRACK_CONSTRAINTS, VIDEO_TRACK_CONSTRAINTS, SCREEN_SHARING_MEDIA_CONSTRAINTS } from "./constraints";
4
5
  export { FishjamClient } from "@fishjam-cloud/ts-client";
@@ -9,7 +9,7 @@ export const useTrackManager = ({ mediaManager, tsClient }) => {
9
9
  const [paused, setPaused] = useState(false);
10
10
  const [currentTrackMiddleware, setCurrentTrackMiddleware] = useState(null);
11
11
  const type = TRACK_TYPE_TO_DEVICE[mediaManager.getDeviceType()];
12
- const getMetadata = () => ({ type, paused });
12
+ const metadata = { type, paused };
13
13
  useEffect(() => {
14
14
  const disconnectedHandler = () => {
15
15
  setCurrentTrackId(null);
@@ -39,11 +39,11 @@ export const useTrackManager = ({ mediaManager, tsClient }) => {
39
39
  function getCurrentTrack() {
40
40
  return getRemoteOrLocalTrack(tsClient, currentTrackId);
41
41
  }
42
- async function initialize(deviceId) {
43
- mediaManager?.start(deviceId ?? true);
42
+ function initialize(deviceId) {
43
+ return mediaManager?.start(deviceId ?? true);
44
44
  }
45
- async function stop() {
46
- mediaManager?.stop();
45
+ function stop() {
46
+ return mediaManager?.stop();
47
47
  }
48
48
  async function startStreaming(simulcastConfig, maxBandwidth) {
49
49
  if (currentTrackId)
@@ -56,13 +56,13 @@ export const useTrackManager = ({ mediaManager, tsClient }) => {
56
56
  return track.trackId;
57
57
  // see `getRemoteOrLocalTrackContext()` explanation
58
58
  setCurrentTrackId(media.track.id);
59
- const trackMetadata = { ...getMetadata(), paused: false };
59
+ const trackMetadata = { ...metadata, paused: false };
60
60
  const remoteTrackId = await tsClient.addTrack(media.track, trackMetadata, simulcastConfig, maxBandwidth);
61
61
  setCurrentTrackId(remoteTrackId);
62
62
  setPaused(false);
63
63
  return remoteTrackId;
64
64
  }
65
- async function refreshStreamedTrack() {
65
+ function refreshStreamedTrack() {
66
66
  const prevTrack = getPreviousTrack();
67
67
  const newTrack = mediaManager.getTracks()[0];
68
68
  if (!newTrack)
@@ -79,7 +79,7 @@ export const useTrackManager = ({ mediaManager, tsClient }) => {
79
79
  const prevTrack = getPreviousTrack();
80
80
  setPaused(true);
81
81
  await tsClient.replaceTrack(prevTrack.trackId, null);
82
- const trackMetadata = { ...getMetadata(), paused: true };
82
+ const trackMetadata = { ...metadata, paused: true };
83
83
  return tsClient.updateTrackMetadata(prevTrack.trackId, trackMetadata);
84
84
  }
85
85
  async function resumeStreaming() {
@@ -89,14 +89,14 @@ export const useTrackManager = ({ mediaManager, tsClient }) => {
89
89
  throw Error("Device is unavailable");
90
90
  setPaused(false);
91
91
  await tsClient.replaceTrack(prevTrack.trackId, media.track);
92
- const trackMetadata = { ...getMetadata(), paused: false };
92
+ const trackMetadata = { ...metadata, paused: false };
93
93
  return tsClient.updateTrackMetadata(prevTrack.trackId, trackMetadata);
94
94
  }
95
95
  function disableTrack() {
96
- return mediaManager.disable();
96
+ mediaManager.disable();
97
97
  }
98
98
  function enableTrack() {
99
- return mediaManager.enable();
99
+ mediaManager.enable();
100
100
  }
101
101
  return {
102
102
  getCurrentTrack,
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { ConnectConfig as TSClientConnectConfig, SimulcastConfig, TrackBandwidthLimit, TrackKind } from "@fishjam-cloud/ts-client";
2
2
  import type { PeerState, PeerStatus, Selector, State, Track, TrackId, TrackWithOrigin, UseReconnection } from "./state.types";
3
- import type { JSX, ReactNode } from "react";
3
+ import type { JSX, PropsWithChildren } from "react";
4
4
  import type { Client } from "./Client";
5
5
  export type PeerMetadata = {
6
6
  displayName?: string;
@@ -194,9 +194,6 @@ export type Devices = {
194
194
  camera: UserMediaAPI;
195
195
  microphone: UserMediaAPI;
196
196
  };
197
- export type FishjamContextProviderProps = {
198
- children: ReactNode;
199
- };
200
197
  export type TracksMiddleware = (videoTrack: MediaStreamTrack, audioTrack: MediaStreamTrack | null) => [MediaStreamTrack, MediaStreamTrack | null];
201
198
  export type FishjamContextType = {
202
199
  state: State;
@@ -213,8 +210,12 @@ type DistinguishedTracks = {
213
210
  audioTracks: Track[];
214
211
  };
215
212
  export type PeerStateWithTracks = PeerState & DistinguishedTracks;
213
+ export type Participiants = {
214
+ localParticipant: PeerStateWithTracks | null;
215
+ participants: PeerStateWithTracks[];
216
+ };
216
217
  export type CreateFishjamClient = {
217
- FishjamContextProvider: ({ children }: FishjamContextProviderProps) => JSX.Element;
218
+ FishjamContextProvider: ({ children }: PropsWithChildren) => JSX.Element;
218
219
  useConnect: () => (config: ConnectConfig) => () => void;
219
220
  useDisconnect: () => () => void;
220
221
  useStatus: () => PeerStatus;
@@ -225,10 +226,7 @@ export type CreateFishjamClient = {
225
226
  useMicrophone: () => Devices["microphone"] & TrackManager;
226
227
  useClient: () => Client;
227
228
  useReconnection: () => UseReconnection;
228
- useParticipants: () => {
229
- localParticipant: PeerStateWithTracks | null;
230
- participants: PeerStateWithTracks[];
231
- };
229
+ useParticipants: () => Participiants;
232
230
  useScreenShare: () => ScreenshareApi;
233
231
  };
234
232
  export type TrackType = TrackKind | "audiovideo";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,IAAI,qBAAqB,EACtC,eAAe,EACf,mBAAmB,EACnB,SAAS,EACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,EACL,KAAK,EACL,OAAO,EACP,eAAe,EACf,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;IACxE,MAAM,EAAE,OAAO,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,eAAe,GAAG,YAAY,CAAC;AAE1E,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,qBAAqB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACxD,qBAAqB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,cAAc,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEhC,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE,CAAC;AAExG,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE;QACN;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC;;;WAGG;QACH,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;QACtC;;;;WAIG;QACH,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;QAEjC,gBAAgB,EAAE,OAAO,GAAG,qBAAqB,CAAC;QAClD,sBAAsB,CAAC,EAAE,eAAe,CAAC;QACzC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;KAC3C,CAAC;IACF,UAAU,EAAE;QACV;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC;;;;WAIG;QACH,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;QAEtC;;;;WAIG;QACH,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;QAEjC,gBAAgB,EAAE,OAAO,GAAG,qBAAqB,CAAC;QAClD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;KAC3C,CAAC;IACF,WAAW,EAAE;QACX;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAEjC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;KAC3C,CAAC;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,gBAAgB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM;QAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACxG,aAAa,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,KAAK,gBAAgB,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,GAAG,IAAI,CAAC;AAET,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3G,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,kBAAkB,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,sBAAsB,EAAE,eAAe,CAAC;IACxC,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,eAAe,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,sBAAsB,EAAE,eAAe,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE;QACvB,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;QACnD,gBAAgB,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;KACpD,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,gBAAgB,GAAG,IAAI,KAChC,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAEjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,gBAAgB,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7F,iBAAiB,EAAE,YAAY,CAAC;IAChC,iBAAiB,EAAE,YAAY,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,GAAG;IAAE,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AACxH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,IAAI,CAAC;AAE/D,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAElE,MAAM,MAAM,mBAAmB,GAAG;IAChC,sBAAsB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,2BAA2B,KAAK,GAAG,CAAC,OAAO,CAAC;IACnF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,KAAK,MAAM,IAAI,CAAC;IACxD,aAAa,EAAE,MAAM,MAAM,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,UAAU,CAAC;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;IAC5D,SAAS,EAAE,MAAM,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAClD,aAAa,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;IACpE,SAAS,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC;IAClD,aAAa,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IAC1D,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,eAAe,CAAC;IACvC,eAAe,EAAE,MAAM;QACrB,gBAAgB,EAAE,mBAAmB,GAAG,IAAI,CAAC;QAC7C,YAAY,EAAE,mBAAmB,EAAE,CAAC;KACrC,CAAC;IACF,cAAc,EAAE,MAAM,cAAc,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fishjam-cloud/react-client",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "React client library for Fishjam Cloud",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Fishjam Cloud Team",
@@ -38,8 +38,7 @@
38
38
  "format:check": "prettier --check . --ignore-path ./.eslintignore",
39
39
  "lint": "eslint . --ext .ts,.tsx --fix",
40
40
  "lint:check": "eslint . --ext .ts,.tsx",
41
- "prepack": "yarn workspace @fishjam-cloud/ts-client build && yarn build",
42
- "typecheck": "tsc"
41
+ "prepack": "yarn workspace @fishjam-cloud/ts-client build && yarn build"
43
42
  },
44
43
  "devDependencies": {
45
44
  "@playwright/test": "^1.46.1",
@@ -54,7 +53,7 @@
54
53
  "typescript": "^5.5.4"
55
54
  },
56
55
  "dependencies": {
57
- "@fishjam-cloud/ts-client": "0.5.5",
56
+ "@fishjam-cloud/ts-client": "0.6.0",
58
57
  "events": "3.3.0",
59
58
  "lodash.isequal": "4.5.0"
60
59
  },
package/dist/create.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import type { CreateFishjamClient, DeviceManagerConfig, PeerMetadata, TrackMetadata } from "./types";
2
- import type { CreateConfig } from "@fishjam-cloud/ts-client";
3
- /**
4
- * Create a client that can be used with a context.
5
- * Returns context provider, and two hooks to interact with the context.
6
- *
7
- * @returns ContextProvider, useSelector, useConnect
8
- */
9
- export declare function create(config?: CreateConfig<PeerMetadata, TrackMetadata>, deviceManagerDefaultConfig?: DeviceManagerConfig): CreateFishjamClient;
10
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EAGnB,YAAY,EAIZ,aAAa,EAGd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAuD7D;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,EAClD,0BAA0B,CAAC,EAAE,mBAAmB,GAC/C,mBAAmB,CA+KrB"}
package/dist/create.js DELETED
@@ -1,195 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useCallback, useContext, useMemo, useRef, useState, useSyncExternalStore } from "react";
3
- import { Client } from "./Client";
4
- import { createUseSetupMediaHook } from "./useSetupMedia";
5
- import { useScreenShare as _useScreenShare } from "./screenShareTrackManager";
6
- import { useTrackManager } from "./trackManager";
7
- const eventNames = [
8
- "socketOpen",
9
- "socketError",
10
- "socketClose",
11
- "authSuccess",
12
- "authError",
13
- "disconnected",
14
- "joined",
15
- "joinError",
16
- "peerJoined",
17
- "peerUpdated",
18
- "peerLeft",
19
- "reconnected",
20
- "reconnectionRetriesLimitReached",
21
- "reconnectionStarted",
22
- "componentAdded",
23
- "componentUpdated",
24
- "componentRemoved",
25
- "trackReady",
26
- "trackAdded",
27
- "trackRemoved",
28
- "trackUpdated",
29
- "bandwidthEstimationChanged",
30
- "encodingChanged",
31
- "voiceActivityChanged",
32
- "deviceDisabled",
33
- "deviceEnabled",
34
- "managerInitialized",
35
- "managerStarted",
36
- "deviceStopped",
37
- "deviceReady",
38
- "devicesStarted",
39
- "devicesReady",
40
- "error",
41
- "targetTrackEncodingRequested",
42
- "localTrackAdded",
43
- "localTrackRemoved",
44
- "localTrackReplaced",
45
- "localTrackMuted",
46
- "localTrackUnmuted",
47
- "localTrackBandwidthSet",
48
- "localTrackEncodingBandwidthSet",
49
- "localTrackEncodingEnabled",
50
- "localTrackEncodingDisabled",
51
- "localPeerMetadataChanged",
52
- "localTrackMetadataChanged",
53
- "disconnectRequested",
54
- ];
55
- /**
56
- * Create a client that can be used with a context.
57
- * Returns context provider, and two hooks to interact with the context.
58
- *
59
- * @returns ContextProvider, useSelector, useConnect
60
- */
61
- export function create(config, deviceManagerDefaultConfig) {
62
- const FishjamContext = createContext(undefined);
63
- function FishjamContextProvider({ children }) {
64
- const memoClient = useMemo(() => new Client({ clientConfig: config, deviceManagerDefaultConfig }), []);
65
- const clientRef = useRef(memoClient);
66
- const mutationRef = useRef(false);
67
- const subscribe = useCallback((subscribeCallback) => {
68
- const client = clientRef.current;
69
- const callback = () => {
70
- mutationRef.current = true;
71
- subscribeCallback();
72
- };
73
- eventNames.forEach((eventName) => client.on(eventName, callback));
74
- return () => {
75
- eventNames.forEach((eventName) => client.removeListener(eventName, callback));
76
- };
77
- }, []);
78
- const lastSnapshotRef = useRef(null);
79
- const getSnapshot = useCallback(() => {
80
- if (mutationRef.current || lastSnapshotRef.current === null) {
81
- lastSnapshotRef.current = {
82
- remote: clientRef.current.peers,
83
- media: clientRef.current.media,
84
- bandwidthEstimation: clientRef.current.bandwidthEstimation,
85
- tracks: clientRef.current.peersTracks,
86
- local: clientRef.current.local,
87
- status: clientRef.current.status,
88
- devices: clientRef.current.devices,
89
- client: clientRef.current,
90
- reconnectionStatus: clientRef.current.reconnectionStatus,
91
- };
92
- mutationRef.current = false;
93
- }
94
- return lastSnapshotRef.current;
95
- }, []);
96
- const state = useSyncExternalStore(subscribe, getSnapshot);
97
- const tsClient = state.client.getTsClient();
98
- const screenshareState = useState(null);
99
- const videoTrackManager = useTrackManager({
100
- mediaManager: state.client.videoDeviceManager,
101
- tsClient,
102
- });
103
- const audioTrackManager = useTrackManager({
104
- mediaManager: state.client.audioDeviceManager,
105
- tsClient,
106
- });
107
- return (_jsx(FishjamContext.Provider, { value: { state, screenshareState, videoTrackManager, audioTrackManager }, children: children }));
108
- }
109
- function useFishjamContext() {
110
- const context = useContext(FishjamContext);
111
- if (!context)
112
- throw new Error("useFishjamContext must be used within a FishjamContextProvider");
113
- return context;
114
- }
115
- function useSelector(selector) {
116
- const { state } = useFishjamContext();
117
- return useMemo(() => selector(state), [selector, state]);
118
- }
119
- function useConnect() {
120
- const { state } = useFishjamContext();
121
- return useMemo(() => {
122
- return (config) => {
123
- state.client.connect(config);
124
- return () => {
125
- state.client.disconnect();
126
- };
127
- };
128
- }, [state.client]);
129
- }
130
- function useDisconnect() {
131
- const { state } = useFishjamContext();
132
- return useCallback(() => {
133
- state.client.disconnect();
134
- }, [state.client]);
135
- }
136
- function useStatus() {
137
- return useSelector((s) => s.status);
138
- }
139
- function useTracks() {
140
- return useSelector((s) => s.tracks);
141
- }
142
- function useClient() {
143
- return useSelector((s) => s.client);
144
- }
145
- function useCamera() {
146
- const { state, videoTrackManager } = useFishjamContext();
147
- return { ...state.devices.camera, ...videoTrackManager };
148
- }
149
- function useMicrophone() {
150
- const { state, audioTrackManager } = useFishjamContext();
151
- return { ...state.devices.microphone, ...audioTrackManager };
152
- }
153
- function useReconnection() {
154
- const { state } = useFishjamContext();
155
- return {
156
- status: state.reconnectionStatus,
157
- isReconnecting: state.reconnectionStatus === "reconnecting",
158
- isError: state.reconnectionStatus === "error",
159
- isIdle: state.reconnectionStatus === "idle",
160
- };
161
- }
162
- function getPeerWithDistinguishedTracks(peerState) {
163
- const localTracks = Object.values(peerState.tracks ?? {});
164
- const videoTracks = localTracks.filter(({ track }) => track?.kind === "video");
165
- const audioTracks = localTracks.filter(({ track }) => track?.kind === "audio");
166
- return { ...peerState, videoTracks, audioTracks };
167
- }
168
- function useParticipants() {
169
- const { state } = useFishjamContext();
170
- const localParticipant = state.local
171
- ? getPeerWithDistinguishedTracks(state.local)
172
- : null;
173
- const participants = Object.values(state.remote).map(getPeerWithDistinguishedTracks);
174
- return { localParticipant, participants };
175
- }
176
- function useScreenShare() {
177
- const { state, screenshareState } = useFishjamContext();
178
- return _useScreenShare(screenshareState, state.client.getTsClient());
179
- }
180
- return {
181
- FishjamContextProvider,
182
- useSelector,
183
- useConnect,
184
- useDisconnect,
185
- useStatus,
186
- useTracks,
187
- useSetupMedia: createUseSetupMediaHook(useFishjamContext),
188
- useParticipants,
189
- useScreenShare,
190
- useCamera,
191
- useMicrophone,
192
- useClient,
193
- useReconnection,
194
- };
195
- }
@@ -1,4 +0,0 @@
1
- import type { FishjamClient } from "@fishjam-cloud/ts-client";
2
- import type { PeerMetadata, ScreenshareApi, ScreenshareState, TrackMetadata } from "./types";
3
- export declare const useScreenShare: ([state, setState]: [ScreenshareState, React.Dispatch<React.SetStateAction<ScreenshareState>>], tsClient: FishjamClient<PeerMetadata, TrackMetadata>) => ScreenshareApi;
4
- //# sourceMappingURL=screenShareTrackManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"screenShareTrackManager.d.ts","sourceRoot":"","sources":["../src/screenShareTrackManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAS/G,eAAO,MAAM,cAAc,sBAEN,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,YACnF,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,KACnD,cAmGF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FishjamContextType, UseSetupMediaConfig, UseSetupMediaResult } from "./types";
2
- export declare const createUseSetupMediaHook: (useFishjamContext: () => FishjamContextType) => (config: UseSetupMediaConfig) => UseSetupMediaResult;
3
- //# sourceMappingURL=useSetupMedia.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSetupMedia.d.ts","sourceRoot":"","sources":["../src/useSetupMedia.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAK5F,eAAO,MAAM,uBAAuB,sBAAuB,MAAM,kBAAkB,cAOjE,mBAAmB,KAAG,mBA+OvC,CAAC"}
@@ -1,201 +0,0 @@
1
- import { useEffect, useMemo, useRef } from "react";
2
- export const createUseSetupMediaHook = (useFishjamContext) => {
3
- const isBroadcastedTrackChanged = (client, pending) => client.status === "joined" && !pending && !client.isReconnecting();
4
- const isBroadcastedTrackStopped = (status, stream) => status === "joined" && stream;
5
- return (config) => {
6
- const { state, videoTrackManager, audioTrackManager } = useFishjamContext();
7
- const configRef = useRef(config);
8
- useEffect(() => {
9
- configRef.current = config;
10
- state.client.setDeviceManagerConfig({
11
- storage: config.storage,
12
- });
13
- }, [config, state.client]);
14
- useEffect(() => {
15
- if (!configRef.current.startOnMount)
16
- return;
17
- state.client.initializeDevices({
18
- audioTrackConstraints: configRef?.current.microphone.trackConstraints,
19
- videoTrackConstraints: configRef?.current.camera.trackConstraints,
20
- });
21
- // eslint-disable-next-line
22
- }, []);
23
- useEffect(() => {
24
- let pending = false;
25
- const broadcastOnCameraStart = async (client) => {
26
- const config = configRef.current.camera;
27
- const onDeviceChange = config.onDeviceChange ?? "replace";
28
- const stream = videoTrackManager.getCurrentTrack()?.stream;
29
- if (isBroadcastedTrackChanged(client, pending)) {
30
- if (!stream && config.broadcastOnDeviceStart) {
31
- pending = true;
32
- await videoTrackManager
33
- .startStreaming(config.defaultSimulcastConfig, config.defaultMaxBandwidth)
34
- .finally(() => {
35
- pending = false;
36
- });
37
- }
38
- else if (stream && onDeviceChange === "replace") {
39
- pending = true;
40
- await videoTrackManager.refreshStreamedTrack().finally(() => {
41
- pending = false;
42
- });
43
- }
44
- else if (stream && onDeviceChange === "remove") {
45
- pending = true;
46
- await videoTrackManager.stopStreaming().finally(() => {
47
- pending = false;
48
- });
49
- }
50
- }
51
- };
52
- const managerInitialized = async (event, client) => {
53
- if (event.video?.media?.stream) {
54
- await broadcastOnCameraStart(client);
55
- }
56
- };
57
- const devicesReady = async (event, client) => {
58
- if (event.trackType === "video" && event.restarted && event?.media?.stream) {
59
- await broadcastOnCameraStart(client);
60
- }
61
- };
62
- const deviceReady = async (event, client) => {
63
- if (event.trackType === "video") {
64
- await broadcastOnCameraStart(client);
65
- }
66
- };
67
- state.client.on("managerInitialized", managerInitialized);
68
- state.client.on("devicesReady", devicesReady);
69
- state.client.on("deviceReady", deviceReady);
70
- return () => {
71
- state.client.removeListener("managerInitialized", managerInitialized);
72
- state.client.removeListener("devicesReady", devicesReady);
73
- state.client.removeListener("deviceReady", deviceReady);
74
- };
75
- }, [state.client, videoTrackManager]);
76
- useEffect(() => {
77
- const removeOnCameraStopped = async (event, client) => {
78
- const stream = videoTrackManager.getCurrentTrack()?.stream;
79
- const onDeviceStop = configRef.current.camera.onDeviceStop ?? "mute";
80
- if (event.mediaDeviceType === "userMedia" &&
81
- event.trackType === "video" &&
82
- isBroadcastedTrackStopped(client.status, stream)) {
83
- if (onDeviceStop === "mute") {
84
- await videoTrackManager.pauseStreaming();
85
- }
86
- else {
87
- await videoTrackManager.stopStreaming();
88
- }
89
- }
90
- };
91
- state.client.on("deviceStopped", removeOnCameraStopped);
92
- return () => {
93
- state.client.removeListener("deviceStopped", removeOnCameraStopped);
94
- };
95
- }, [state.client, videoTrackManager]);
96
- useEffect(() => {
97
- const broadcastCameraOnConnect = async (_, client) => {
98
- const camera = client.devices.camera;
99
- const stream = camera.stream;
100
- const config = configRef.current.camera;
101
- if (stream && config.broadcastOnConnect) {
102
- await videoTrackManager.startStreaming(config.defaultSimulcastConfig, config.defaultMaxBandwidth);
103
- }
104
- };
105
- state.client.on("joined", broadcastCameraOnConnect);
106
- return () => {
107
- state.client.removeListener("joined", broadcastCameraOnConnect);
108
- };
109
- }, [state.client, videoTrackManager]);
110
- useEffect(() => {
111
- let pending = false;
112
- const broadcastOnMicrophoneStart = async (client) => {
113
- const stream = audioTrackManager.getCurrentTrack()?.stream;
114
- const config = configRef.current.microphone;
115
- const onDeviceChange = config.onDeviceChange ?? "replace";
116
- if (isBroadcastedTrackChanged(client, pending)) {
117
- if (!stream && config.broadcastOnDeviceStart) {
118
- pending = true;
119
- await audioTrackManager.startStreaming(undefined, config.defaultMaxBandwidth).finally(() => {
120
- pending = false;
121
- });
122
- }
123
- else if (stream && onDeviceChange === "replace") {
124
- pending = true;
125
- await audioTrackManager.refreshStreamedTrack().finally(() => {
126
- pending = false;
127
- });
128
- }
129
- else if (stream && onDeviceChange === "remove") {
130
- pending = true;
131
- await audioTrackManager.stopStreaming().finally(() => {
132
- pending = false;
133
- });
134
- }
135
- }
136
- };
137
- const managerInitialized = async (event, client) => {
138
- if (event.audio?.media?.stream) {
139
- await broadcastOnMicrophoneStart(client);
140
- }
141
- };
142
- const devicesReady = async (event, client) => {
143
- if (event.trackType === "audio" && event.restarted && event?.media?.stream) {
144
- await broadcastOnMicrophoneStart(client);
145
- }
146
- };
147
- const deviceReady = async (event, client) => {
148
- if (event.trackType === "audio") {
149
- await broadcastOnMicrophoneStart(client);
150
- }
151
- };
152
- state.client.on("managerInitialized", managerInitialized);
153
- state.client.on("deviceReady", deviceReady);
154
- state.client.on("devicesReady", devicesReady);
155
- return () => {
156
- state.client.removeListener("managerInitialized", managerInitialized);
157
- state.client.removeListener("deviceReady", deviceReady);
158
- state.client.removeListener("devicesReady", devicesReady);
159
- };
160
- }, [state.client, audioTrackManager]);
161
- useEffect(() => {
162
- const onMicrophoneStopped = async (event, client) => {
163
- const stream = audioTrackManager.getCurrentTrack()?.stream;
164
- const onDeviceStop = configRef.current.microphone.onDeviceStop ?? "mute";
165
- const isRightDeviceType = event.mediaDeviceType === "userMedia";
166
- const isRightTrackType = event.trackType === "audio";
167
- if (isRightDeviceType && isRightTrackType && isBroadcastedTrackStopped(client.status, stream)) {
168
- if (onDeviceStop === "mute") {
169
- await audioTrackManager.pauseStreaming();
170
- }
171
- else {
172
- await audioTrackManager.stopStreaming();
173
- }
174
- }
175
- };
176
- state.client.on("deviceStopped", onMicrophoneStopped);
177
- return () => {
178
- state.client.removeListener("deviceStopped", onMicrophoneStopped);
179
- };
180
- }, [state.client, audioTrackManager]);
181
- useEffect(() => {
182
- const broadcastMicrophoneOnConnect = async (_, client) => {
183
- const config = configRef.current.microphone;
184
- const microphone = client.devices.microphone;
185
- if (microphone.stream && config.broadcastOnConnect) {
186
- await audioTrackManager.startStreaming(undefined, config.defaultMaxBandwidth);
187
- }
188
- };
189
- state.client.on("joined", broadcastMicrophoneOnConnect);
190
- return () => {
191
- state.client.removeListener("joined", broadcastMicrophoneOnConnect);
192
- };
193
- }, [state.client, audioTrackManager]);
194
- return useMemo(() => ({
195
- init: () => state.client.initializeDevices({
196
- audioTrackConstraints: configRef.current?.microphone?.trackConstraints,
197
- videoTrackConstraints: configRef.current?.camera?.trackConstraints,
198
- }),
199
- }), [state.client]);
200
- };
201
- };