Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

actions.js 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // @flow
  2. import { getLocalJitsiDesktopTrack, getLocalJitsiVideoTrack } from '../../features/base/tracks';
  3. import { getMultipleVideoSendingSupportFeatureFlag } from '../base/config';
  4. import { SET_SCREENSHOT_CAPTURE } from './actionTypes';
  5. import { createScreenshotCaptureSummary } from './functions';
  6. import logger from './logger';
  7. let screenshotSummary;
  8. /**
  9. * Marks the on-off state of screenshot captures.
  10. *
  11. * @param {boolean} enabled - Whether to turn screen captures on or off.
  12. * @returns {{
  13. * type: START_SCREENSHOT_CAPTURE,
  14. * payload: enabled
  15. * }}
  16. */
  17. function setScreenshotCapture(enabled) {
  18. return {
  19. type: SET_SCREENSHOT_CAPTURE,
  20. payload: enabled
  21. };
  22. }
  23. /**
  24. * Action that toggles the screenshot captures.
  25. *
  26. * @param {boolean} enabled - Bool that represents the intention to start/stop screenshot captures.
  27. * @returns {Promise}
  28. */
  29. export function toggleScreenshotCaptureSummary(enabled: boolean) {
  30. return async function(dispatch: (Object) => Object, getState: () => any) {
  31. const state = getState();
  32. if (state['features/screenshot-capture'].capturesEnabled !== enabled) {
  33. if (!screenshotSummary) {
  34. try {
  35. screenshotSummary = await createScreenshotCaptureSummary(state);
  36. } catch (err) {
  37. logger.error('Cannot create screenshotCaptureSummary', err);
  38. }
  39. }
  40. if (enabled) {
  41. try {
  42. const jitsiTrack = getMultipleVideoSendingSupportFeatureFlag(state)
  43. ? getLocalJitsiDesktopTrack(state)
  44. : getLocalJitsiVideoTrack(state);
  45. await screenshotSummary.start(jitsiTrack);
  46. dispatch(setScreenshotCapture(enabled));
  47. } catch {
  48. // Handle promise rejection from {@code start} due to stream type not being desktop.
  49. logger.error('Unsupported stream type.');
  50. }
  51. } else {
  52. screenshotSummary.stop();
  53. dispatch(setScreenshotCapture(enabled));
  54. }
  55. }
  56. return Promise.resolve();
  57. };
  58. }