選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

hooks.web.ts 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { useSelector } from 'react-redux';
  2. import { IReduxState } from '../app/types';
  3. import { isJwtFeatureEnabled } from '../base/jwt/functions';
  4. import { isLocalParticipantModerator } from '../base/participants/functions';
  5. import { isInBreakoutRoom } from '../breakout-rooms/functions';
  6. import { getLiveStreaming } from './components/LiveStream/functions';
  7. import LiveStreamButton from './components/LiveStream/web/LiveStreamButton';
  8. import RecordButton from './components/Recording/web/RecordButton';
  9. import { getRecordButtonProps, isLiveStreamingButtonVisible } from './functions';
  10. const recording = {
  11. key: 'recording',
  12. Content: RecordButton,
  13. group: 2
  14. };
  15. const livestreaming = {
  16. key: 'livestreaming',
  17. Content: LiveStreamButton,
  18. group: 2
  19. };
  20. /**
  21. * A hook that returns the recording button if it is enabled and undefined otherwise.
  22. *
  23. * @returns {Object | undefined}
  24. */
  25. export function useRecordingButton() {
  26. const recordingProps = useSelector(getRecordButtonProps);
  27. const toolbarButtons = useSelector((state: IReduxState) => state['features/toolbox'].toolbarButtons);
  28. if (toolbarButtons?.includes('recording') && recordingProps.visible) {
  29. return recording;
  30. }
  31. }
  32. /**
  33. * A hook that returns the livestreaming button if it is enabled and undefined otherwise.
  34. *
  35. * @returns {Object | undefined}
  36. */
  37. export function useLiveStreamingButton() {
  38. const toolbarButtons = useSelector((state: IReduxState) => state['features/toolbox'].toolbarButtons);
  39. const localParticipantIsModerator = useSelector(isLocalParticipantModerator);
  40. const liveStreaming = useSelector(getLiveStreaming);
  41. const liveStreamingAllowed = useSelector((state: IReduxState) =>
  42. isJwtFeatureEnabled(state, 'livestreaming', localParticipantIsModerator, false));
  43. const _isInBreakoutRoom = useSelector(isInBreakoutRoom);
  44. if (toolbarButtons?.includes('recording')
  45. && isLiveStreamingButtonVisible({
  46. liveStreamingAllowed,
  47. liveStreamingEnabled: liveStreaming?.enabled,
  48. isInBreakoutRoom: _isInBreakoutRoom
  49. })) {
  50. return livestreaming;
  51. }
  52. }