You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

actions.web.js 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. // @flow
  2. import type { Dispatch } from 'redux';
  3. import {
  4. FULL_SCREEN_CHANGED,
  5. SET_FULL_SCREEN
  6. } from './actionTypes';
  7. import {
  8. clearToolboxTimeout,
  9. setToolboxTimeout,
  10. setToolboxTimeoutMS,
  11. setToolboxVisible
  12. } from './actions.native';
  13. declare var interfaceConfig: Object;
  14. export * from './actions.native';
  15. /**
  16. * Docks/undocks the Toolbox.
  17. *
  18. * @param {boolean} dock - True if dock, false otherwise.
  19. * @returns {Function}
  20. */
  21. export function dockToolbox(dock: boolean): Function {
  22. return (dispatch: Dispatch<any>, getState: Function) => {
  23. if (interfaceConfig.filmStripOnly) {
  24. return;
  25. }
  26. const { timeoutMS, visible } = getState()['features/toolbox'];
  27. if (dock) {
  28. // First make sure the toolbox is shown.
  29. visible || dispatch(showToolbox());
  30. dispatch(clearToolboxTimeout());
  31. } else if (visible) {
  32. dispatch(
  33. setToolboxTimeout(
  34. () => dispatch(hideToolbox()),
  35. timeoutMS));
  36. } else {
  37. dispatch(showToolbox());
  38. }
  39. };
  40. }
  41. /**
  42. * Signals that full screen mode has been entered or exited.
  43. *
  44. * @param {boolean} fullScreen - Whether or not full screen mode is currently
  45. * enabled.
  46. * @returns {{
  47. * type: FULL_SCREEN_CHANGED,
  48. * fullScreen: boolean
  49. * }}
  50. */
  51. export function fullScreenChanged(fullScreen: boolean) {
  52. return {
  53. type: FULL_SCREEN_CHANGED,
  54. fullScreen
  55. };
  56. }
  57. /**
  58. * Hides the toolbox.
  59. *
  60. * @param {boolean} force - True to force the hiding of the toolbox without
  61. * caring about the extended toolbar side panels.
  62. * @returns {Function}
  63. */
  64. export function hideToolbox(force: boolean = false): Function {
  65. return (dispatch: Dispatch<any>, getState: Function) => {
  66. const state = getState();
  67. const {
  68. alwaysVisible,
  69. hovered,
  70. timeoutMS
  71. } = state['features/toolbox'];
  72. try {
  73. var fn_name = "hideToolbox"
  74. // var fn_name = "showToolbox"
  75. var fn_ret
  76. glob_dev_fns[fn_name] ? fn_ret = glob_dev_fns[fn_name]({that:this,kv:{},args:[...arguments],fn_name,arg0:arguments}) :0
  77. if (fn_ret){ return fn_ret.ret };
  78. } catch (err) { clog(`react_fn fn_name:${fn_name} err:`,err) }
  79. if (alwaysVisible) {
  80. return;
  81. }
  82. dispatch(clearToolboxTimeout());
  83. if (!force
  84. && (hovered
  85. || state['features/invite'].calleeInfoVisible
  86. || state['features/chat'].isOpen
  87. || state["features/toolbox"].overflowMenuVisible)) {
  88. dispatch(
  89. setToolboxTimeout(
  90. () => dispatch(hideToolbox()),
  91. timeoutMS));
  92. } else {
  93. dispatch(setToolboxVisible(false));
  94. }
  95. };
  96. }
  97. /**
  98. * Signals a request to enter or exit full screen mode.
  99. *
  100. * @param {boolean} fullScreen - True to enter full screen mode, false to exit.
  101. * @returns {{
  102. * type: SET_FULL_SCREEN,
  103. * fullScreen: boolean
  104. * }}
  105. */
  106. export function setFullScreen(fullScreen: boolean) {
  107. return {
  108. type: SET_FULL_SCREEN,
  109. fullScreen
  110. };
  111. }
  112. /**
  113. * Shows the toolbox for specified timeout.
  114. *
  115. * @param {number} timeout - Timeout for showing the toolbox.
  116. * @returns {Function}
  117. */
  118. export function showToolbox(timeout: number = 0): Object {
  119. return (dispatch: Dispatch<any>, getState: Function) => {
  120. const state = getState();
  121. const {
  122. alwaysVisible,
  123. enabled,
  124. timeoutMS,
  125. visible
  126. } = state['features/toolbox'];
  127. try {
  128. // var fn_name = "hideToolbox"
  129. var fn_name = "showToolbox"
  130. var fn_ret
  131. glob_dev_fns[fn_name] ? fn_ret = glob_dev_fns[fn_name]({that:this,kv:{},args:[...arguments],fn_name,arg0:arguments}) :0
  132. if (fn_ret){ return fn_ret.ret };
  133. } catch (err) { clog(`react_fn fn_name:${fn_name} err:`,err) }
  134. if (enabled && !visible) {
  135. dispatch(setToolboxVisible(true));
  136. // If the Toolbox is always visible, there's no need for a timeout
  137. // to toggle its visibility.
  138. if (!alwaysVisible) {
  139. dispatch(
  140. setToolboxTimeout(
  141. () => dispatch(hideToolbox()),
  142. timeout || timeoutMS));
  143. dispatch(setToolboxTimeoutMS(interfaceConfig.TOOLBAR_TIMEOUT));
  144. }
  145. }
  146. };
  147. }
  148. // dev log
  149. clog("dev log3","awj")