@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.
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +2 -1
- package/dist/cjs/components/app-wrapper/AppWrapper.js +79 -71
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableNameCell.js +2 -2
- package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +1 -1
- package/dist/cjs/components/assets/AssetsUploadMenu.js +2 -3
- package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/cjs/components/auth-gate/AuthGate.js +5 -8
- package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
- package/dist/cjs/components/button/Button.d.ts +1 -1
- package/dist/cjs/components/button/Button.stories.d.ts +5 -6
- package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
- package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +1 -2
- package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/cjs/components/card/Card.stories.d.ts +1 -2
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
- package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
- package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +1 -2
- package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
- package/dist/cjs/components/context-menu/AnimateComponent.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenu.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +1 -2
- package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +1 -2
- package/dist/cjs/components/context-menu/SubMenu.d.ts +1 -2
- package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +1 -2
- package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
- package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/cjs/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/cjs/components/dropdown/dropdown.stories.js +1 -1
- package/dist/cjs/components/dropdown/dropdown.stories.js.map +1 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
- package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/cjs/components/h-rule/HRule.d.ts +1 -2
- package/dist/cjs/components/h-rule/HRule.stories.d.ts +2 -3
- package/dist/cjs/components/header/Header.d.ts +0 -4
- package/dist/cjs/components/header/Header.js +19 -27
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/list-field/ListField.d.ts +1 -1
- package/dist/cjs/components/list-field/ListField.stories.d.ts +1 -2
- package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.stories.d.ts +1 -2
- package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
- package/dist/cjs/components/number-field/NumberField.stories.d.ts +1 -2
- package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
- package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
- package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
- package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
- package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
- package/dist/cjs/components/publish-wizard/PublishWizard.js +59 -119
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/cjs/components/section/Section.d.ts +1 -2
- package/dist/cjs/components/section/Section.stories.d.ts +2 -3
- package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
- package/dist/cjs/components/select-field/SelectField.stories.d.ts +1 -2
- package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
- package/dist/cjs/components/slider-field/SliderField.stories.d.ts +1 -2
- package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -1
- package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +1 -2
- package/dist/cjs/components/text-field/TextField.d.ts +1 -1
- package/dist/cjs/components/text-field/TextField.stories.d.ts +1 -2
- package/dist/cjs/constants/copy.d.ts +0 -5
- package/dist/cjs/constants/copy.js +0 -5
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/icons.d.ts +70 -72
- package/dist/cjs/constants/icons.js +1 -3
- package/dist/cjs/constants/icons.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/access.d.ts +3 -1
- package/dist/cjs/redux/actions/access.js +43 -10
- package/dist/cjs/redux/actions/access.js.map +1 -1
- package/dist/cjs/redux/actions/publish.js +3 -4
- package/dist/cjs/redux/actions/publish.js.map +1 -1
- package/dist/cjs/redux/reducers/access.js +30 -7
- package/dist/cjs/redux/reducers/access.js.map +1 -1
- package/dist/cjs/services/Session.d.ts +8 -9
- package/dist/cjs/services/Session.js +127 -31
- package/dist/cjs/services/Session.js.map +1 -1
- package/dist/cjs/utils/assets.d.ts +0 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.d.ts +2 -1
- package/dist/esm/components/app-wrapper/AppWrapper.js +79 -69
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableNameCell.js +2 -2
- package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +2 -3
- package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/esm/components/auth-gate/AuthGate.js +6 -9
- package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.d.ts +5 -6
- package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +1 -2
- package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/esm/components/card/Card.stories.d.ts +1 -2
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +1 -2
- package/dist/esm/components/color-field/ColorField.d.ts +1 -1
- package/dist/esm/components/color-field/ColorFiled.stories.d.ts +1 -2
- package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenu.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +1 -2
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +1 -2
- package/dist/esm/components/context-menu/SubMenu.d.ts +1 -2
- package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +1 -2
- package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
- package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/esm/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/esm/components/dropdown/dropdown.stories.js +1 -1
- package/dist/esm/components/dropdown/dropdown.stories.js.map +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +1 -2
- package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/esm/components/h-rule/HRule.d.ts +1 -2
- package/dist/esm/components/h-rule/HRule.stories.d.ts +2 -3
- package/dist/esm/components/header/Header.d.ts +0 -4
- package/dist/esm/components/header/Header.js +19 -27
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/list-field/ListField.d.ts +1 -1
- package/dist/esm/components/list-field/ListField.stories.d.ts +1 -2
- package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/esm/components/modal/Modal.d.ts +1 -1
- package/dist/esm/components/modal/Modal.stories.d.ts +1 -2
- package/dist/esm/components/number-field/NumberField.d.ts +1 -1
- package/dist/esm/components/number-field/NumberField.stories.d.ts +1 -2
- package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
- package/dist/esm/components/players/AudioPreview.d.ts +1 -1
- package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
- package/dist/esm/components/players/ImagePreview.d.ts +1 -1
- package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPreview.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
- package/dist/esm/components/publish-wizard/PublishWizard.js +60 -119
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/esm/components/section/Section.d.ts +1 -2
- package/dist/esm/components/section/Section.stories.d.ts +2 -3
- package/dist/esm/components/select-field/SelectField.d.ts +1 -1
- package/dist/esm/components/select-field/SelectField.stories.d.ts +1 -2
- package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.stories.d.ts +1 -2
- package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +1 -2
- package/dist/esm/components/text-field/TextField.d.ts +1 -1
- package/dist/esm/components/text-field/TextField.stories.d.ts +1 -2
- package/dist/esm/constants/copy.d.ts +0 -5
- package/dist/esm/constants/copy.js +0 -5
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/icons.d.ts +70 -72
- package/dist/esm/constants/icons.js +0 -2
- package/dist/esm/constants/icons.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/access.d.ts +3 -1
- package/dist/esm/redux/actions/access.js +37 -8
- package/dist/esm/redux/actions/access.js.map +1 -1
- package/dist/esm/redux/actions/publish.js +3 -4
- package/dist/esm/redux/actions/publish.js.map +1 -1
- package/dist/esm/redux/reducers/access.js +8 -5
- package/dist/esm/redux/reducers/access.js.map +1 -1
- package/dist/esm/services/Session.d.ts +8 -9
- package/dist/esm/services/Session.js +102 -29
- package/dist/esm/services/Session.js.map +1 -1
- package/dist/esm/utils/assets.d.ts +0 -1
- package/dist/styles.css +0 -23
- package/dist/styles.less +0 -26
- package/less/components/header.less +0 -13
- package/less/components/publish-wizard.less +0 -13
- package/package.json +1 -1
- package/src/components/app-wrapper/AppWrapper.tsx +120 -79
- package/src/components/assets/AssetsTableNameCell.tsx +1 -4
- package/src/components/assets/AssetsUploadMenu.tsx +8 -13
- package/src/components/auth-gate/AuthGate.tsx +8 -14
- package/src/components/header/Header.tsx +39 -74
- package/src/components/publish-wizard/PublishWizard.tsx +87 -172
- package/src/constants/copy.ts +0 -6
- package/src/constants/icons.tsx +0 -3
- package/src/index.ts +10 -1
- package/src/redux/actions/access.ts +67 -5
- package/src/redux/actions/publish.ts +3 -6
- package/src/redux/reducers/access.ts +8 -5
- package/src/services/Session.ts +120 -34
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
- package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
- package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
- package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
- package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
- package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
- package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
- package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
- package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
- package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
- package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
- package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
- package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
- package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
- package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
- package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
- package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
- package/dist/esm/components/header/Header_BASE_73021.js +0 -322
- package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
- package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
- package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
- package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
- package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
- package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
- package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
- /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
|
-
//
|
|
88
|
-
|
|
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 = (
|
|
137
|
-
const {
|
|
138
|
-
|
|
139
|
-
let
|
|
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 (
|
|
173
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
286
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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 {
|
|
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: (
|
|
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
|
-
|
|
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.
|
|
47
|
-
SessionService.buildFreshSession(freshIdentity,
|
|
48
|
-
onAuthenticated(
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
|
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'>
|
|
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
|
-
|
|
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>
|