@imposium-hub/components 2.2.45-0 → 2.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  2. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  3. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +2 -1
  4. package/dist/cjs/components/app-wrapper/AppWrapper.js +79 -71
  5. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  6. package/dist/cjs/components/assets/AssetsTableNameCell.js +2 -2
  7. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  8. package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +1 -1
  9. package/dist/cjs/components/assets/AssetsUploadMenu.js +2 -3
  10. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  11. package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
  12. package/dist/cjs/components/auth-gate/AuthGate.js +5 -8
  13. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
  14. package/dist/cjs/components/button/Button.d.ts +1 -1
  15. package/dist/cjs/components/button/Button.stories.d.ts +5 -6
  16. package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
  17. package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
  18. package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +1 -2
  19. package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
  20. package/dist/cjs/components/card/Card.stories.d.ts +1 -2
  21. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  22. package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
  23. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  24. package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +1 -2
  25. package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
  26. package/dist/cjs/components/context-menu/AnimateComponent.d.ts +1 -2
  27. package/dist/cjs/components/context-menu/ContextMenu.d.ts +1 -2
  28. package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +1 -2
  29. package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +1 -2
  30. package/dist/cjs/components/context-menu/SubMenu.d.ts +1 -2
  31. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
  32. package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +1 -2
  33. package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  34. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
  35. package/dist/cjs/components/dropdown/dropdown.stories.d.ts +1 -1
  36. package/dist/cjs/components/dropdown/dropdown.stories.js +1 -1
  37. package/dist/cjs/components/dropdown/dropdown.stories.js.map +1 -1
  38. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
  39. package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
  40. package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
  41. package/dist/cjs/components/h-rule/HRule.d.ts +1 -2
  42. package/dist/cjs/components/h-rule/HRule.stories.d.ts +2 -3
  43. package/dist/cjs/components/header/Header.d.ts +0 -4
  44. package/dist/cjs/components/header/Header.js +19 -27
  45. package/dist/cjs/components/header/Header.js.map +1 -1
  46. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  47. package/dist/cjs/components/list-field/ListField.stories.d.ts +1 -2
  48. package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
  49. package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
  50. package/dist/cjs/components/modal/Modal.d.ts +1 -1
  51. package/dist/cjs/components/modal/Modal.stories.d.ts +1 -2
  52. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  53. package/dist/cjs/components/number-field/NumberField.stories.d.ts +1 -2
  54. package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
  55. package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
  56. package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
  57. package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
  58. package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
  59. package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
  60. package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
  61. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
  62. package/dist/cjs/components/publish-wizard/PublishWizard.js +59 -119
  63. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  64. package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  65. package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  66. package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  67. package/dist/cjs/components/section/Section.d.ts +1 -2
  68. package/dist/cjs/components/section/Section.stories.d.ts +2 -3
  69. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  70. package/dist/cjs/components/select-field/SelectField.stories.d.ts +1 -2
  71. package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  72. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  73. package/dist/cjs/components/slider-field/SliderField.stories.d.ts +1 -2
  74. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  75. package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -1
  76. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  77. package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +1 -2
  78. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  79. package/dist/cjs/components/text-field/TextField.stories.d.ts +1 -2
  80. package/dist/cjs/constants/copy.d.ts +0 -5
  81. package/dist/cjs/constants/copy.js +0 -5
  82. package/dist/cjs/constants/copy.js.map +1 -1
  83. package/dist/cjs/constants/icons.d.ts +70 -72
  84. package/dist/cjs/constants/icons.js +1 -3
  85. package/dist/cjs/constants/icons.js.map +1 -1
  86. package/dist/cjs/index.d.ts +2 -2
  87. package/dist/cjs/index.js +4 -2
  88. package/dist/cjs/index.js.map +1 -1
  89. package/dist/cjs/redux/actions/access.d.ts +3 -1
  90. package/dist/cjs/redux/actions/access.js +43 -10
  91. package/dist/cjs/redux/actions/access.js.map +1 -1
  92. package/dist/cjs/redux/actions/publish.js +3 -4
  93. package/dist/cjs/redux/actions/publish.js.map +1 -1
  94. package/dist/cjs/redux/reducers/access.js +30 -7
  95. package/dist/cjs/redux/reducers/access.js.map +1 -1
  96. package/dist/cjs/services/Session.d.ts +8 -9
  97. package/dist/cjs/services/Session.js +127 -31
  98. package/dist/cjs/services/Session.js.map +1 -1
  99. package/dist/cjs/utils/assets.d.ts +0 -1
  100. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  101. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  102. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +2 -1
  103. package/dist/esm/components/app-wrapper/AppWrapper.js +79 -69
  104. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  105. package/dist/esm/components/assets/AssetsTableNameCell.js +2 -2
  106. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  107. package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +1 -1
  108. package/dist/esm/components/assets/AssetsUploadMenu.js +2 -3
  109. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  110. package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
  111. package/dist/esm/components/auth-gate/AuthGate.js +6 -9
  112. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
  113. package/dist/esm/components/button/Button.d.ts +1 -1
  114. package/dist/esm/components/button/Button.stories.d.ts +5 -6
  115. package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
  116. package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
  117. package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +1 -2
  118. package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
  119. package/dist/esm/components/card/Card.stories.d.ts +1 -2
  120. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  121. package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
  122. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  123. package/dist/esm/components/color-field/ColorFiled.stories.d.ts +1 -2
  124. package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
  125. package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -2
  126. package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -2
  127. package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -2
  128. package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -2
  129. package/dist/esm/components/context-menu/SubMenu.d.ts +1 -2
  130. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
  131. package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +1 -2
  132. package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  133. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
  134. package/dist/esm/components/dropdown/dropdown.stories.d.ts +1 -1
  135. package/dist/esm/components/dropdown/dropdown.stories.js +1 -1
  136. package/dist/esm/components/dropdown/dropdown.stories.js.map +1 -1
  137. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
  138. package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
  139. package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
  140. package/dist/esm/components/h-rule/HRule.d.ts +1 -2
  141. package/dist/esm/components/h-rule/HRule.stories.d.ts +2 -3
  142. package/dist/esm/components/header/Header.d.ts +0 -4
  143. package/dist/esm/components/header/Header.js +19 -27
  144. package/dist/esm/components/header/Header.js.map +1 -1
  145. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  146. package/dist/esm/components/list-field/ListField.stories.d.ts +1 -2
  147. package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
  148. package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
  149. package/dist/esm/components/modal/Modal.d.ts +1 -1
  150. package/dist/esm/components/modal/Modal.stories.d.ts +1 -2
  151. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  152. package/dist/esm/components/number-field/NumberField.stories.d.ts +1 -2
  153. package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
  154. package/dist/esm/components/players/AudioPreview.d.ts +1 -1
  155. package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
  156. package/dist/esm/components/players/ImagePreview.d.ts +1 -1
  157. package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
  158. package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
  159. package/dist/esm/components/players/VideoPreview.d.ts +1 -1
  160. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
  161. package/dist/esm/components/publish-wizard/PublishWizard.js +60 -119
  162. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  163. package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  164. package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  165. package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  166. package/dist/esm/components/section/Section.d.ts +1 -2
  167. package/dist/esm/components/section/Section.stories.d.ts +2 -3
  168. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  169. package/dist/esm/components/select-field/SelectField.stories.d.ts +1 -2
  170. package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  171. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  172. package/dist/esm/components/slider-field/SliderField.stories.d.ts +1 -2
  173. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  174. package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -1
  175. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  176. package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +1 -2
  177. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  178. package/dist/esm/components/text-field/TextField.stories.d.ts +1 -2
  179. package/dist/esm/constants/copy.d.ts +0 -5
  180. package/dist/esm/constants/copy.js +0 -5
  181. package/dist/esm/constants/copy.js.map +1 -1
  182. package/dist/esm/constants/icons.d.ts +70 -72
  183. package/dist/esm/constants/icons.js +0 -2
  184. package/dist/esm/constants/icons.js.map +1 -1
  185. package/dist/esm/index.d.ts +2 -2
  186. package/dist/esm/index.js +2 -2
  187. package/dist/esm/index.js.map +1 -1
  188. package/dist/esm/redux/actions/access.d.ts +3 -1
  189. package/dist/esm/redux/actions/access.js +37 -8
  190. package/dist/esm/redux/actions/access.js.map +1 -1
  191. package/dist/esm/redux/actions/publish.js +3 -4
  192. package/dist/esm/redux/actions/publish.js.map +1 -1
  193. package/dist/esm/redux/reducers/access.js +8 -5
  194. package/dist/esm/redux/reducers/access.js.map +1 -1
  195. package/dist/esm/services/Session.d.ts +8 -9
  196. package/dist/esm/services/Session.js +102 -29
  197. package/dist/esm/services/Session.js.map +1 -1
  198. package/dist/esm/utils/assets.d.ts +0 -1
  199. package/dist/styles.css +0 -23
  200. package/dist/styles.less +0 -26
  201. package/less/components/header.less +0 -13
  202. package/less/components/publish-wizard.less +0 -13
  203. package/package.json +1 -1
  204. package/src/components/app-wrapper/AppWrapper.tsx +120 -79
  205. package/src/components/assets/AssetsTableNameCell.tsx +1 -4
  206. package/src/components/assets/AssetsUploadMenu.tsx +8 -13
  207. package/src/components/auth-gate/AuthGate.tsx +8 -14
  208. package/src/components/header/Header.tsx +39 -74
  209. package/src/components/publish-wizard/PublishWizard.tsx +87 -172
  210. package/src/constants/copy.ts +0 -6
  211. package/src/constants/icons.tsx +0 -3
  212. package/src/index.ts +10 -1
  213. package/src/redux/actions/access.ts +67 -5
  214. package/src/redux/actions/publish.ts +3 -6
  215. package/src/redux/reducers/access.ts +8 -5
  216. package/src/services/Session.ts +120 -34
  217. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  218. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
  219. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  220. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  221. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
  222. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  223. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  224. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
  225. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  226. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  227. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
  228. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  229. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  230. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
  231. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  232. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
  233. package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
  234. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
  235. package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
  236. package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
  237. package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
  238. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
  239. package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
  240. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
  241. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
  242. package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
  243. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
  244. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  245. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
  246. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  247. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  248. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
  249. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  250. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  251. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
  252. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  253. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  254. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
  255. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  256. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  257. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
  258. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  259. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
  260. package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
  261. package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
  262. package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
  263. package/dist/esm/components/header/Header_BASE_73021.js +0 -322
  264. package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
  265. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
  266. package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
  267. package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
  268. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
  269. package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
  270. package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
  271. /package/src/components/dropdown/{dropdown.stories.tsx → Dropdown.stories.tsx} +0 -0
@@ -1,13 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import NoAccess from '../no-access/NoAccess';
3
3
  import Header from '../header/Header';
4
- import SessionService from '../../services/Session';
4
+ import SessionService, { IHubSession } from '../../services/Session';
5
5
  import AuthService, { IIdentity } from '../../services/Auth0';
6
6
  import { connect } from 'react-redux';
7
7
  import { bindActionCreators } from 'redux';
8
8
  import { login, clearCachedAuth } from '../../redux/actions/auth';
9
+ import { cacheAccessData, clearCachedAccessList } from '../../redux/actions/access';
9
10
  import { validateAccessLevel } from '../../Util';
10
- import { setAccessData } from '../../redux/actions/access';
11
11
 
12
12
  export interface IAppWrapperProps {
13
13
  children: React.ReactChildren;
@@ -20,13 +20,14 @@ export interface IAppWrapperProps {
20
20
  access: any;
21
21
  auth: any;
22
22
  isFreshUser: boolean;
23
- setAccessData(accessData: any): any;
24
23
  allowUnauthenticatedRender: boolean;
25
24
  onAuthenticated: (activeOrgId: string, activeStoryId: string) => any;
26
25
  onAuthenticationFailure: (e: Error) => any;
27
26
  showRequestAccess?: boolean;
28
27
  login: (id: IIdentity) => any;
29
28
  clearCachedAuth: () => any;
29
+ cacheAccessData: (accessData: any) => any;
30
+ clearCachedAccessList: () => any;
30
31
  }
31
32
 
32
33
  export interface IAppWrapperState {
@@ -66,7 +67,8 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
66
67
  }
67
68
 
68
69
  public componentDidMount = (): void => {
69
- const { auth0ClientId, auth0Domain } = this.props;
70
+ const { auth, access, auth0ClientId, auth0Domain, isFreshUser } = this.props;
71
+ const session: IHubSession = SessionService.getSession();
70
72
 
71
73
  AuthService.bindToClient(auth0ClientId, auth0Domain);
72
74
 
@@ -84,8 +86,22 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
84
86
  this.setState({ restrictAccess: false });
85
87
  }
86
88
 
87
- // Always check the session
88
- this.doCheckSession(true);
89
+ // If cookie, auth or access data is missing / mismatched,
90
+ // silently check auth0 session and refresh flow on success
91
+ if (
92
+ !isFreshUser &&
93
+ auth !== null &&
94
+ access !== null &&
95
+ typeof session === 'object' &&
96
+ typeof session.sub === 'string' &&
97
+ session.sub === auth.idTokenPayload.sub &&
98
+ session.stories_hash === SessionService.generateStoriesHash(access) &&
99
+ session.orgs_hash === SessionService.generateOrgsHash(access)
100
+ ) {
101
+ this.propagateCreds();
102
+ } else {
103
+ this.doCheckSession(true);
104
+ }
89
105
  };
90
106
 
91
107
  /*
@@ -106,14 +122,12 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
106
122
 
107
123
  if (!validSession) {
108
124
  this.props.clearCachedAuth();
125
+ this.props.clearCachedAccessList();
109
126
  this.doCheckSession();
110
127
  }
111
128
  }
112
129
 
113
- if (
114
- this.props.organizationId !== prevProps.organizationId ||
115
- this.props.access !== prevProps.access
116
- ) {
130
+ if (this.props.organizationId !== prevProps.organizationId) {
117
131
  validAccessLevel = validateAccessLevel(
118
132
  this.props.organizationId,
119
133
  this.props.serviceId,
@@ -133,58 +147,16 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
133
147
  /*
134
148
  Emit creds to React parent
135
149
  */
136
- private propagateCreds = (freshAccess, freshIdentity): void => {
137
- const { storyId, organizationId, onAuthenticated } = this.props;
138
-
139
- let initialStoryId = storyId;
140
- let initialOrganizationId = organizationId;
141
-
142
- const firstOrg = freshAccess.organizations[0];
143
-
144
- const getIDsFromSession = () => {
145
- const session = SessionService.getSession();
146
- if (session && session.story_id && session.organization_id) {
147
- const org = freshAccess.organizations.find(
148
- (o: any) => o.id === session.organization_id
149
- );
150
- if (org) {
151
- const story = org.stories.find((s: any) => s.id === session.story_id);
152
- if (story) {
153
- return { orgId: org.id, storyId: story.id };
154
- }
155
- }
156
- }
157
- return null;
158
- };
159
-
160
- // If the org ID is not provided, but the storyID is provided, find the org ID if we can, if not, use the first org ID found and we'll show the story not found interface
161
- if (!initialOrganizationId && initialStoryId) {
162
- const org = freshAccess.organizations.find((o: any) =>
163
- o.stories.find((s: any) => s.id === initialStoryId)
164
- );
165
- if (org) {
166
- initialOrganizationId = org.id;
167
- } else {
168
- initialOrganizationId = firstOrg.id;
169
- }
170
- }
150
+ private propagateCreds = (): void => {
151
+ const { auth, access, storyId, onAuthenticated } = this.props;
152
+ const activeOrgId: string = this.determineActiveOrganization(auth, access);
153
+ let activeStoryId: string = SessionService.getSession().story_id;
171
154
 
172
- if (!initialStoryId) {
173
- // If storyID is not provided, try to use the one from the previous session
174
- const sessionIds = getIDsFromSession();
175
- if (sessionIds) {
176
- initialOrganizationId = sessionIds.orgId;
177
- initialStoryId = sessionIds.storyId;
178
- } else {
179
- // If that doesn't work - default to the first org & story
180
- const story = firstOrg.stories[0];
181
- initialOrganizationId = firstOrg.id;
182
- initialStoryId = story.id;
183
- }
155
+ if (storyId) {
156
+ activeStoryId = storyId;
184
157
  }
185
158
 
186
- SessionService.buildFreshSession(freshIdentity, initialOrganizationId, initialStoryId);
187
- onAuthenticated(initialOrganizationId, initialStoryId);
159
+ onAuthenticated(activeOrgId, activeStoryId);
188
160
 
189
161
  if (this.state.blockRender) {
190
162
  this.setState({ blockRender: false });
@@ -195,19 +167,8 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
195
167
  Bust cached creds if exist, invoke auth failure handler
196
168
  */
197
169
  private handleCheckSessionFailure = (e: Error): void => {
198
- if (this.props.storyId) {
199
- SessionService.cacheStoryId(this.props.storyId);
200
- } else {
201
- SessionService.clearCachedStoryId();
202
- }
203
-
204
- if (this.props.organizationId) {
205
- SessionService.cacheOrgId(this.props.organizationId);
206
- } else {
207
- SessionService.clearCachedOrgId();
208
- }
209
-
210
170
  this.props.clearCachedAuth();
171
+ this.props.clearCachedAccessList();
211
172
  this.props.onAuthenticationFailure(e);
212
173
  };
213
174
 
@@ -220,16 +181,15 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
220
181
  if (blockRender) {
221
182
  this.setState({ blockRender: true });
222
183
  }
184
+
223
185
  AuthService.checkSession()
224
186
  .then((freshIdentity: IIdentity) => {
225
- const orgId = this.props.organizationId
226
- ? this.props.organizationId
227
- : SessionService.getCachedOrgId();
228
- SessionService.getAccessData(freshIdentity.idToken, baseUrl, false, orgId)
187
+ SessionService.getAccessData(freshIdentity.idToken, baseUrl)
229
188
  .then((freshAccess: any) => {
230
- this.props.setAccessData(freshAccess);
231
189
  this.props.login(freshIdentity);
232
- this.propagateCreds(freshAccess, freshIdentity);
190
+ this.props.cacheAccessData(freshAccess);
191
+ SessionService.buildFreshSession(freshIdentity, freshAccess);
192
+ this.propagateCreds();
233
193
  })
234
194
  .catch((e: Error) => {
235
195
  console.error(e);
@@ -242,6 +202,86 @@ class AppWrapper extends React.Component<IAppWrapperProps, IAppWrapperState> {
242
202
  });
243
203
  };
244
204
 
205
+ private determineActiveOrganizationIn(
206
+ auth: IIdentity,
207
+ session: IHubSession,
208
+ organizationIds: string[]
209
+ ) {
210
+ const { organizationId } = this.props;
211
+ const {
212
+ idTokenPayload: { exp }
213
+ } = auth;
214
+
215
+ if (organizationIds.length > 0) {
216
+ if (organizationId && organizationIds.indexOf(organizationId) > -1) {
217
+ return this.setActiveOrganization(organizationId, exp, session);
218
+ }
219
+
220
+ if (
221
+ session &&
222
+ session.organization_id &&
223
+ organizationIds.indexOf(session.organization_id) > -1
224
+ ) {
225
+ return session.organization_id;
226
+ }
227
+
228
+ return this.setActiveOrganization(organizationIds[0], exp, session);
229
+ }
230
+
231
+ return '';
232
+ }
233
+
234
+ /*
235
+ Figure out what the active org should be based on app-wrapper configuration
236
+ */
237
+ private determineActiveOrganization = (auth: IIdentity, access: any): string => {
238
+ const { serviceId } = this.props;
239
+ const { organizations } = access;
240
+ const session: IHubSession = SessionService.getSession();
241
+ const allOrgIdsFlattened: string[] = organizations.map((o: any) => o.id);
242
+
243
+ const activeOrgId: string = this.determineActiveOrganizationIn(
244
+ auth,
245
+ session,
246
+ allOrgIdsFlattened
247
+ );
248
+ const activeOrg: any = organizations.find((o) => o.id === activeOrgId);
249
+
250
+ if (activeOrg && !activeOrg.services.includes(serviceId)) {
251
+ this.setState({ restrictAccess: true });
252
+ }
253
+
254
+ return activeOrgId;
255
+ };
256
+
257
+ /*
258
+ Update session if no session exists or diff in org id
259
+ */
260
+ private setActiveOrganization = (
261
+ organizationId: string,
262
+ exp: number,
263
+ sharedSession: IHubSession
264
+ ): string => {
265
+ if (
266
+ !sharedSession ||
267
+ !sharedSession.organization_id ||
268
+ sharedSession.organization_id !== organizationId
269
+ ) {
270
+ const activeOrg: any = this.props.access.organizations.find(
271
+ (o: any) => o.id === organizationId
272
+ );
273
+ const firstStoryId: string =
274
+ typeof activeOrg.stories[0] === 'object' ? activeOrg.stories[0].id : '';
275
+
276
+ SessionService.updateSession(
277
+ { organization_id: organizationId, story_id: firstStoryId },
278
+ exp
279
+ );
280
+ }
281
+
282
+ return organizationId;
283
+ };
284
+
245
285
  public render = (): JSX.Element => {
246
286
  const { blockRender, restrictAccess } = this.state;
247
287
  const { children, showRequestAccess, allowUnauthenticatedRender } = this.props;
@@ -282,8 +322,9 @@ const mapDispatchToProps = (dispatch) => {
282
322
  return bindActionCreators(
283
323
  {
284
324
  login,
285
- setAccessData,
286
- clearCachedAuth
325
+ clearCachedAuth,
326
+ cacheAccessData,
327
+ clearCachedAccessList
287
328
  },
288
329
  dispatch
289
330
  );
@@ -10,7 +10,6 @@ import { DeterminateLoader } from '../determinate-loader/DeterminateLoader';
10
10
  interface IAssetsTableNameCell {
11
11
  cell: any;
12
12
  api: IImposiumAPI;
13
- disabled: boolean;
14
13
  updateAssetName: (api: any, id: string, name: string, delay?: boolean) => any;
15
14
  }
16
15
 
@@ -21,8 +20,7 @@ const AssetsTableNameCell: React.FC<IAssetsTableNameCell> = (props: IAssetsTable
21
20
  row: {
22
21
  original: { name, id, percent: uploadProgress }
23
22
  }
24
- },
25
- disabled
23
+ }
26
24
  } = props;
27
25
 
28
26
  const [localName, setLocalName] = useState(name);
@@ -60,7 +58,6 @@ const AssetsTableNameCell: React.FC<IAssetsTableNameCell> = (props: IAssetsTable
60
58
  <TextField
61
59
  value={localName}
62
60
  width={'100%'}
63
- disabled={disabled}
64
61
  onChange={(n) => onUpdate(n)}
65
62
  />
66
63
  );
@@ -29,7 +29,6 @@ interface IAssetsUploadMenuProps {
29
29
  assetUploads: any;
30
30
  assetTags: string[];
31
31
  api: any;
32
- editor: any;
33
32
  toggleAutoTag: (toggle: boolean) => any;
34
33
  toggleTagFileName: (toggle: boolean) => any;
35
34
  toggleAssignToStory: (toggle: boolean) => any;
@@ -63,8 +62,7 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
63
62
  tagManually,
64
63
  manualTags
65
64
  },
66
- assetTags,
67
- editor: { fromCrM }
65
+ assetTags
68
66
  } = this.props;
69
67
  let uploadsListInner;
70
68
  if (uploads.length > 0) {
@@ -165,15 +163,13 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
165
163
  value={tagByFileName}
166
164
  onChange={() => this.props.toggleTagFileName(!tagByFileName)}
167
165
  />
168
- {!fromCrM && (
169
- <CheckboxField
170
- width='50%'
171
- label={copy.uploads.assignToProjectInput}
172
- info={copy.uploads.assignToProjectInfo}
173
- value={assignToStory}
174
- onChange={() => this.props.toggleAssignToStory(!assignToStory)}
175
- />
176
- )}
166
+ <CheckboxField
167
+ width='50%'
168
+ label={copy.uploads.assignToProjectInput}
169
+ info={copy.uploads.assignToProjectInfo}
170
+ value={assignToStory}
171
+ onChange={() => this.props.toggleAssignToStory(!assignToStory)}
172
+ />
177
173
  </div>
178
174
  {tagsColumn}
179
175
  <div className='uploads-list'>{uploadsListInner}</div>
@@ -202,7 +198,6 @@ const mapDispatchToProps = (dispatch): any => {
202
198
  const mapStateToProps = (state): any => {
203
199
  return {
204
200
  assetUploads: state.assetUploads,
205
- editor: state.editor,
206
201
  assetTags: state.assetTags
207
202
  };
208
203
  };
@@ -5,18 +5,16 @@ import AuthService, { IIdentity } from '../../services/Auth0';
5
5
  import { connect } from 'react-redux';
6
6
  import { bindActionCreators } from 'redux';
7
7
  import { login } from '../../redux/actions/auth';
8
- import { setAccessData } from '../../redux/actions/access';
8
+ import { cacheAccessData } from '../../redux/actions/access';
9
9
 
10
10
  interface IAuthGateProps {
11
11
  auth0ClientId: string;
12
12
  auth0Domain: string;
13
13
  auth0Hash: string;
14
- onAuthenticated: (storyId, orgId) => any;
15
- storyId: string;
16
- organizationId: string;
14
+ onAuthenticated: () => any;
17
15
  baseUrl?: string;
18
- setAccessData(accessData: any): any;
19
16
  login: (id: IIdentity) => any;
17
+ cacheAccessData: (accessData: any) => any;
20
18
  }
21
19
 
22
20
  class AuthGate extends React.PureComponent<IAuthGateProps> {
@@ -36,16 +34,12 @@ class AuthGate extends React.PureComponent<IAuthGateProps> {
36
34
  } else {
37
35
  AuthService.parseIdFromHash(auth0Hash)
38
36
  .then((freshIdentity: IIdentity) => {
39
- // Use the cached org ID and story ID if it exists
40
- const orgId = SessionService.getCachedOrgId() || null;
41
- const storyId = SessionService.getCachedStoryId() || null;
42
-
43
- SessionService.getAccessData(freshIdentity.idToken, baseUrl, false, orgId)
37
+ SessionService.getAccessData(freshIdentity.idToken, baseUrl)
44
38
  .then((freshAccess: any) => {
45
39
  this.props.login(freshIdentity);
46
- this.props.setAccessData(freshAccess);
47
- SessionService.buildFreshSession(freshIdentity, orgId, storyId);
48
- onAuthenticated(storyId, orgId);
40
+ this.props.cacheAccessData(freshAccess);
41
+ SessionService.buildFreshSession(freshIdentity, freshAccess);
42
+ onAuthenticated();
49
43
  })
50
44
  .catch((e) => {
51
45
  AuthService.login();
@@ -70,7 +64,7 @@ const mapDispatchToProps = (dispatch) => {
70
64
  return bindActionCreators(
71
65
  {
72
66
  login,
73
- setAccessData
67
+ cacheAccessData
74
68
  },
75
69
  dispatch
76
70
  );
@@ -15,16 +15,12 @@ export interface IHeaderProps {
15
15
  activeOrganization: string;
16
16
  activeStory?: string;
17
17
  hideStoryPicker?: boolean;
18
- hideOrgPicker?: boolean;
19
18
  onOrganizationChange?: (orgId: any) => any;
20
19
  onStoryChange?: (story: any) => any;
21
20
  logout: (...args) => any;
22
- additionalButtons?: any[];
23
21
  auth: any;
24
22
  story: any;
25
23
  baseUrl: any;
26
- hideDocs?: boolean;
27
- showFTLogo?: boolean;
28
24
  access: any;
29
25
  }
30
26
 
@@ -310,7 +306,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
310
306
 
311
307
  this.setState({ dataLoading: true });
312
308
 
313
- // SessionService.getAccessData(idToken, baseUrl, true, activeOrganization)
314
309
  SessionService.getAccessData(idToken, baseUrl)
315
310
  .then((res) => {
316
311
  this.setState({ dataLoading: false, accessData: res }, () =>
@@ -323,17 +318,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
323
318
  };
324
319
 
325
320
  public render() {
326
- const {
327
- email,
328
- activeOrganization,
329
- activeStory,
330
- hideStoryPicker,
331
- story,
332
- hideOrgPicker,
333
- additionalButtons,
334
- showFTLogo,
335
- hideDocs
336
- } = this.props;
321
+ const { email, activeOrganization, activeStory, hideStoryPicker, story } = this.props;
337
322
  const {
338
323
  accessData,
339
324
  showAccountDropdown,
@@ -366,14 +351,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
366
351
  let serviceDropdownToggle: JSX.Element;
367
352
  let serviceDropdownMenu: JSX.Element;
368
353
 
369
- const btnLogout = (
370
- <button
371
- className='btn-logout'
372
- onClick={() => this.doLogout()}>
373
- {ImposiumHeader.LOGOUT_COPY}
374
- </button>
375
- );
376
-
377
354
  if (accessData) {
378
355
  activeService = servicesByOrganization.find((s: any) =>
379
356
  window.location.href.includes(s.url)
@@ -392,36 +369,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
392
369
  .filter((s: any) => !s.private && ImposiumHeader.PRIVATE_IDS.indexOf(s.id) > -1)
393
370
  .map((s: any) => this.renderServiceAnchor(s, activeOrganization, activeStory));
394
371
 
395
- const docsSection = !hideDocs ? (
396
- <section className='service-menu-section'>
397
- <div className='service-menu-heading'>{ImposiumHeader.DOCS_HEADER}</div>
398
-
399
- <div className='service-menu-anchors'>
400
- <div className='anchor-wrapper doc'>
401
- <a
402
- target='__blank'
403
- href={ImposiumHeader.API_DOCS_LINK}>
404
- <div className='icon-fixed'>
405
- <ServiceIcon iconName='FaCogs' />
406
- </div>
407
- {ImposiumHeader.API_DOCS_LINK_COPY}
408
- </a>
409
- </div>
410
-
411
- <div className='anchor-wrapper doc'>
412
- <a
413
- target='__blank'
414
- href={ImposiumHeader.SDK_DOCS_LINK}>
415
- <div className='icon-fixed'>
416
- <ServiceIcon iconName='FaJsSquare' />
417
- </div>
418
- {ImposiumHeader.SDK_DOCS_LINK_COPY}
419
- </a>
420
- </div>
421
- </div>
422
- </section>
423
- ) : null;
424
-
425
372
  serviceDropdownMenu = (
426
373
  <div className='service-menu'>
427
374
  <section className='service-menu-section'>
@@ -442,7 +389,33 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
442
389
  </section>
443
390
  )}
444
391
 
445
- {docsSection}
392
+ <section className='service-menu-section'>
393
+ <div className='service-menu-heading'>{ImposiumHeader.DOCS_HEADER}</div>
394
+
395
+ <div className='service-menu-anchors'>
396
+ <div className='anchor-wrapper doc'>
397
+ <a
398
+ target='__blank'
399
+ href={ImposiumHeader.API_DOCS_LINK}>
400
+ <div className='icon-fixed'>
401
+ <ServiceIcon iconName='FaCogs' />
402
+ </div>
403
+ {ImposiumHeader.API_DOCS_LINK_COPY}
404
+ </a>
405
+ </div>
406
+
407
+ <div className='anchor-wrapper doc'>
408
+ <a
409
+ target='__blank'
410
+ href={ImposiumHeader.SDK_DOCS_LINK}>
411
+ <div className='icon-fixed'>
412
+ <ServiceIcon iconName='FaJsSquare' />
413
+ </div>
414
+ {ImposiumHeader.SDK_DOCS_LINK_COPY}
415
+ </a>
416
+ </div>
417
+ </div>
418
+ </section>
446
419
  </div>
447
420
  );
448
421
 
@@ -464,7 +437,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
464
437
  </button>
465
438
  );
466
439
 
467
- accountDropdownToggle = !hideOrgPicker ? (
440
+ accountDropdownToggle = (
468
441
  <button
469
442
  id='btn-toggle-orgs'
470
443
  className='btn-toggle-orgs'
@@ -473,8 +446,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
473
446
  onClick={() => this.toggleAccountDropdown(!showAccountDropdown)}>
474
447
  {activeFirstChar}
475
448
  </button>
476
- ) : (
477
- btnLogout
478
449
  );
479
450
  }
480
451
 
@@ -567,19 +538,6 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
567
538
  );
568
539
  }
569
540
 
570
- const logo = showFTLogo ? (
571
- <>
572
- <div className='ft-logo' />
573
- &nbsp;&nbsp;|&nbsp;&nbsp;
574
- <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
575
- </>
576
- ) : (
577
- <>
578
- <div className='logo' />
579
- <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
580
- </>
581
- );
582
-
583
541
  return (
584
542
  <nav
585
543
  id='imposium-header'
@@ -587,13 +545,16 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
587
545
  style={headerBorder}>
588
546
  <div className='inner-content'>
589
547
  <span className='inner-left'>
590
- <div className='title'>{logo}</div>
548
+ <div className='title'>
549
+ <div className='logo' />
550
+ <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
551
+ </div>
552
+
591
553
  {serviceDropdownToggle}
592
554
  </span>
593
555
 
594
556
  <span className='inner-right'>
595
557
  {storyToggle}
596
- <div className='additional-buttons'>{additionalButtons}</div>
597
558
  {accountDropdownToggle}
598
559
  <a
599
560
  href='https://support.flashtalking.com/hc/en-us/sections/25515903148819-Imposium'
@@ -633,7 +594,11 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
633
594
 
634
595
  <div className='orgs-menu-footer'>
635
596
  <div className='email'>{email}</div>
636
- {btnLogout}
597
+ <button
598
+ className='btn-logout'
599
+ onClick={() => this.doLogout()}>
600
+ {ImposiumHeader.LOGOUT_COPY}
601
+ </button>
637
602
  </div>
638
603
  </div>
639
604
  </ImposiumDropdown>