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

actions.ts 2.3KB

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