您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

actions.ts 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { IStore } from '../app/types';
  2. import { getMultipleVideoSendingSupportFeatureFlag } from '../base/config/functions';
  3. import { getLocalJitsiDesktopTrack, getLocalJitsiVideoTrack } from '../base/tracks/functions';
  4. import { SET_SCREENSHOT_CAPTURE } from './actionTypes';
  5. import { createScreenshotCaptureSummary } from './functions';
  6. import logger from './logger';
  7. let screenshotSummary: any;
  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: boolean) {
  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: IStore['dispatch'], getState: IStore['getState']) {
  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. }