RemoteStream.jsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import React from "react";
  2. import UserStream from "./UserStream";
  3. const RemoteStream = ({
  4. stream,
  5. user,
  6. subscribe = true,
  7. audio = true,
  8. video = true,
  9. }) => {
  10. const [show, setShow] = React.useState(false);
  11. React.useEffect(() => {
  12. if (!stream) {
  13. return;
  14. }
  15. if (subscribe) {
  16. stream.subscribe();
  17. } else {
  18. stream.unsubscribe();
  19. }
  20. }, [subscribe, stream]);
  21. React.useEffect(() => {
  22. if (!stream) {
  23. return;
  24. }
  25. stream.enableVideo(video);
  26. }, [stream, video]);
  27. React.useEffect(() => {
  28. if (!stream) {
  29. return;
  30. }
  31. stream.enableAudio(audio);
  32. }, [stream, audio]);
  33. React.useEffect(() => {
  34. // React on published change
  35. setShow(stream.subscribed);
  36. }, [stream.subscribed]);
  37. if (!stream || !show) {
  38. return null;
  39. }
  40. return (
  41. <UserStream
  42. stream={stream}
  43. name={user.name}
  44. color={user.color}
  45. audio={stream.stream.audioActive}
  46. video={stream.stream.videoActive}
  47. />
  48. );
  49. };
  50. export default RemoteStream;