@imposium-hub/components 2.9.0-14 → 2.9.0-2
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/Util.js +0 -6
- package/dist/cjs/Util.js.map +1 -1
- package/dist/cjs/components/app-wrapper/AppWrapper.js +0 -5
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableNameFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableNameFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +0 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.js +4 -7
- package/dist/cjs/components/assets/AssetsTablePreviewCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableTagsFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableTagsFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsUploadMenu.js +2 -4
- package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
- package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/cjs/components/confirm-modal/ConfirmModal.js +2 -3
- package/dist/cjs/components/confirm-modal/ConfirmModal.js.map +1 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +0 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.js +8 -10
- package/dist/cjs/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/cjs/components/header/Header.js +7 -10
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +0 -1
- package/dist/cjs/components/number-field/NumberField.js +2 -5
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +28 -61
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.d.ts +0 -1
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +12 -34
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +0 -2
- package/dist/cjs/components/slider-field/SliderField.js +8 -17
- package/dist/cjs/components/slider-field/SliderField.js.map +1 -1
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +3 -17
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.js +1 -2
- package/dist/cjs/components/tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/text-field/TextField.d.ts +0 -1
- package/dist/cjs/components/text-field/TextField.js +2 -2
- package/dist/cjs/components/text-field/TextField.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +1 -5
- package/dist/cjs/constants/copy.js +2 -6
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/icons.d.ts +0 -2
- package/dist/cjs/constants/icons.js +1 -3
- package/dist/cjs/constants/icons.js.map +1 -1
- package/dist/cjs/constants/publish.d.ts +0 -3
- package/dist/cjs/constants/publish.js +3 -5
- package/dist/cjs/constants/publish.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/asset-uploads.d.ts +1 -1
- package/dist/cjs/redux/actions/asset-uploads.js +119 -169
- package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
- package/dist/cjs/redux/actions/auth.d.ts +9 -0
- package/dist/cjs/redux/actions/auth.js +30 -0
- package/dist/cjs/redux/actions/auth.js.map +1 -0
- package/dist/cjs/redux/actions/publish.js +3 -11
- package/dist/cjs/redux/actions/publish.js.map +1 -1
- package/dist/cjs/redux/reducers/asset-uploads.js +1 -2
- package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/cjs/redux/reducers/auth.d.ts +3 -0
- package/dist/cjs/redux/reducers/auth.js +67 -0
- package/dist/cjs/redux/reducers/auth.js.map +1 -0
- package/dist/cjs/services/API.d.ts +10 -5
- package/dist/cjs/services/API.js +105 -36
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/cjs/services/Auth0.d.ts +18 -0
- package/dist/cjs/services/Auth0.js +102 -0
- package/dist/cjs/services/Auth0.js.map +1 -0
- package/dist/cjs/services/Session.d.ts +26 -0
- package/dist/cjs/services/Session.js +155 -0
- package/dist/cjs/services/Session.js.map +1 -0
- package/dist/cjs/utils/modal.d.ts +0 -1
- package/dist/cjs/utils/modal.js +2 -3
- package/dist/cjs/utils/modal.js.map +1 -1
- package/dist/esm/Util.js +0 -6
- package/dist/esm/Util.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.js +0 -5
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableNameFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableNameFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +0 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.js +5 -8
- package/dist/esm/components/assets/AssetsTablePreviewCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableTagsFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableTagsFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +3 -5
- package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/esm/components/auth-gate/AuthGate.js +59 -0
- package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/esm/components/confirm-modal/ConfirmModal.js +2 -3
- package/dist/esm/components/confirm-modal/ConfirmModal.js.map +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +0 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.js +8 -10
- package/dist/esm/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/esm/components/header/Header.js +5 -8
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +0 -1
- package/dist/esm/components/number-field/NumberField.js +2 -5
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +19 -52
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.d.ts +0 -1
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +12 -31
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +0 -2
- package/dist/esm/components/slider-field/SliderField.js +8 -17
- package/dist/esm/components/slider-field/SliderField.js.map +1 -1
- package/dist/esm/components/story-previewer/StoryPreviewer.js +4 -13
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.js +1 -2
- package/dist/esm/components/tabs/Tabs.js.map +1 -1
- package/dist/esm/components/text-field/TextField.d.ts +0 -1
- package/dist/esm/components/text-field/TextField.js +2 -2
- package/dist/esm/components/text-field/TextField.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +1 -5
- package/dist/esm/constants/copy.js +2 -6
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/icons.d.ts +0 -2
- package/dist/esm/constants/icons.js +1 -3
- package/dist/esm/constants/icons.js.map +1 -1
- package/dist/esm/constants/publish.d.ts +0 -3
- package/dist/esm/constants/publish.js +2 -4
- package/dist/esm/constants/publish.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/asset-uploads.d.ts +1 -1
- package/dist/esm/redux/actions/asset-uploads.js +115 -165
- package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
- package/dist/esm/redux/actions/auth.d.ts +9 -0
- package/dist/esm/redux/actions/auth.js +25 -0
- package/dist/esm/redux/actions/auth.js.map +1 -0
- package/dist/esm/redux/actions/publish.js +3 -11
- package/dist/esm/redux/actions/publish.js.map +1 -1
- package/dist/esm/redux/reducers/asset-uploads.js +1 -2
- package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/esm/redux/reducers/auth.d.ts +3 -0
- package/dist/esm/redux/reducers/auth.js +27 -0
- package/dist/esm/redux/reducers/auth.js.map +1 -0
- package/dist/esm/services/API.d.ts +10 -5
- package/dist/esm/services/API.js +50 -16
- package/dist/esm/services/API.js.map +1 -1
- package/dist/esm/services/Auth0.d.ts +18 -0
- package/dist/esm/services/Auth0.js +68 -0
- package/dist/esm/services/Auth0.js.map +1 -0
- package/dist/esm/services/Session.d.ts +26 -0
- package/dist/esm/services/Session.js +107 -0
- package/dist/esm/services/Session.js.map +1 -0
- package/dist/esm/utils/modal.d.ts +0 -1
- package/dist/esm/utils/modal.js +1 -2
- package/dist/esm/utils/modal.js.map +1 -1
- package/dist/styles.css +6 -101
- package/dist/styles.less +58 -91
- package/less/components/assets.less +39 -5
- package/less/components/button-menu.less +0 -1
- package/less/components/button.less +19 -57
- package/less/components/form-field.less +0 -27
- package/less/components/story-previewer.less +1 -1
- package/package.json +5 -5
- package/src/Util.ts +0 -9
- package/src/components/app-wrapper/AppWrapper.tsx +0 -6
- package/src/components/assets/AssetsTableAssetIdFilter.tsx +0 -1
- package/src/components/assets/AssetsTableNameFilter.tsx +0 -1
- package/src/components/assets/AssetsTablePreviewCell.tsx +14 -10
- package/src/components/assets/AssetsTableTagsFilter.tsx +0 -1
- package/src/components/assets/AssetsUploadMenu.tsx +11 -20
- package/src/components/confirm-modal/ConfirmModal.tsx +2 -3
- package/src/components/field-wrapper/FieldWrapper.tsx +12 -16
- package/src/components/header/Header.tsx +5 -8
- package/src/components/number-field/NumberField.tsx +2 -6
- package/src/components/publish-wizard/publish/EmailWorkflow.tsx +26 -77
- package/src/components/slider-field/SliderField.tsx +22 -44
- package/src/components/story-previewer/StoryPreviewer.tsx +8 -24
- package/src/components/tabs/Tabs.tsx +1 -2
- package/src/components/text-field/TextField.tsx +2 -5
- package/src/constants/copy.ts +2 -6
- package/src/constants/icons.tsx +1 -10
- package/src/constants/publish.ts +2 -7
- package/src/index.ts +1 -1
- package/src/redux/actions/asset-uploads.ts +162 -193
- package/src/redux/actions/publish.ts +3 -11
- package/src/redux/reducers/asset-uploads.ts +1 -2
- package/src/services/API.ts +82 -24
- package/src/utils/modal.ts +1 -3
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.d.ts +0 -8
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.js +0 -122
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.js.map +0 -1
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +0 -8
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +0 -104
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +0 -1
- package/dist/esm/components/edit-guide-modal/EditGuideModal.d.ts +0 -8
- package/dist/esm/components/edit-guide-modal/EditGuideModal.js +0 -65
- package/dist/esm/components/edit-guide-modal/EditGuideModal.js.map +0 -1
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +0 -8
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +0 -72
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +0 -1
|
@@ -46,7 +46,6 @@ interface ITextFieldProps {
|
|
|
46
46
|
labelWidth?: string | number;
|
|
47
47
|
className?: string;
|
|
48
48
|
maxLength?: number;
|
|
49
|
-
header?: boolean;
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
interface ITextFieldState {
|
|
@@ -488,8 +487,7 @@ class TextField extends React.PureComponent<ITextFieldProps, ITextFieldState> {
|
|
|
488
487
|
}
|
|
489
488
|
|
|
490
489
|
public render() {
|
|
491
|
-
const { label, width, tooltip, info, labelPosition, labelWidth, className
|
|
492
|
-
this.props;
|
|
490
|
+
const { label, width, tooltip, info, labelPosition, labelWidth, className } = this.props;
|
|
493
491
|
return (
|
|
494
492
|
<FieldWrapper
|
|
495
493
|
customClass={`text-field ${className}`}
|
|
@@ -499,8 +497,7 @@ class TextField extends React.PureComponent<ITextFieldProps, ITextFieldState> {
|
|
|
499
497
|
info={info}
|
|
500
498
|
labelPosition={labelPosition}
|
|
501
499
|
labelWidth={labelWidth}
|
|
502
|
-
width={width}
|
|
503
|
-
header={header}>
|
|
500
|
+
width={width}>
|
|
504
501
|
{this.renderInput()}
|
|
505
502
|
</FieldWrapper>
|
|
506
503
|
);
|
package/src/constants/copy.ts
CHANGED
|
@@ -28,11 +28,7 @@ export const assets = {
|
|
|
28
28
|
assignToProjectInfo:
|
|
29
29
|
'If selected, any assets uploaded will be available to use with all projects on the current organization.',
|
|
30
30
|
uploadButton: 'Upload',
|
|
31
|
-
cancelButton: 'Cancel'
|
|
32
|
-
title: `An asset named "[name]" already exists in this project. Do you want to replace it with the one you're uploading?`,
|
|
33
|
-
keepBoth: 'Keep Both',
|
|
34
|
-
replace: 'Replace',
|
|
35
|
-
applyAll: 'Apply To All'
|
|
31
|
+
cancelButton: 'Cancel'
|
|
36
32
|
},
|
|
37
33
|
tags: {
|
|
38
34
|
add: 'Add new tag',
|
|
@@ -127,7 +123,6 @@ export const compositions = {
|
|
|
127
123
|
};
|
|
128
124
|
|
|
129
125
|
export const publish = {
|
|
130
|
-
uploadAsAssets: 'Upload as Assets',
|
|
131
126
|
noVariablesError:
|
|
132
127
|
'No variables found on the project. Cannot proceed with publishing to Creative Manager until at least one variable is added to the project.',
|
|
133
128
|
publishInProgress: 'Publish to Creative Manager in progress',
|
|
@@ -135,6 +130,7 @@ export const publish = {
|
|
|
135
130
|
btnCrM: 'Creative Manager',
|
|
136
131
|
creativeLibraryId: 'Creative Library ID',
|
|
137
132
|
creativeId: 'Creative ID',
|
|
133
|
+
email: 'Notification Email',
|
|
138
134
|
missingFields: 'Please provide the missing fields and try again!',
|
|
139
135
|
crmPlacement: 'Creative Manager Placement Variables',
|
|
140
136
|
crmData: `If your CSV batch data doesn't contain the required Creative Manager placement variables, or you would like to override them, enter the values below before you upload the batch data.`,
|
package/src/constants/icons.tsx
CHANGED
|
@@ -73,12 +73,7 @@ import {
|
|
|
73
73
|
} from '@fortawesome/pro-light-svg-icons';
|
|
74
74
|
import { faCircleSmall } from '@fortawesome/pro-solid-svg-icons/faCircleSmall';
|
|
75
75
|
import { faClapperboardPlay } from '@fortawesome/pro-solid-svg-icons/faClapperboardPlay';
|
|
76
|
-
import {
|
|
77
|
-
faCloudArrowUp,
|
|
78
|
-
faFileCirclePlus,
|
|
79
|
-
faFilePen,
|
|
80
|
-
faFilters
|
|
81
|
-
} from '@fortawesome/pro-solid-svg-icons';
|
|
76
|
+
import { faCloudArrowUp, faFilters } from '@fortawesome/pro-solid-svg-icons';
|
|
82
77
|
import { faCircleExclamation } from '@fortawesome/free-solid-svg-icons';
|
|
83
78
|
|
|
84
79
|
export const ICON_VIDEO = <FontAwesomeIcon icon={faVideo} />;
|
|
@@ -228,7 +223,3 @@ export const ICON_UP_RIGHT_FROM_SQUARE = <FontAwesomeIcon icon={faUpRightFromSqu
|
|
|
228
223
|
export const ICON_FILE_UPLOAD = <FontAwesomeIcon icon={faCloudArrowUp} />;
|
|
229
224
|
|
|
230
225
|
export const ICON_FILE_ERROR = <FontAwesomeIcon icon={faCircleExclamation} />;
|
|
231
|
-
|
|
232
|
-
export const ICON_FILE_ADD = <FontAwesomeIcon icon={faFileCirclePlus} />;
|
|
233
|
-
|
|
234
|
-
export const ICON_FILE_REPLACE = <FontAwesomeIcon icon={faFilePen} />;
|
package/src/constants/publish.ts
CHANGED
|
@@ -14,16 +14,11 @@ export const CRM_PLACEMENT_OPTIONS = [
|
|
|
14
14
|
}
|
|
15
15
|
];
|
|
16
16
|
|
|
17
|
-
export const ASSET_NAME_VAR = 'asset-name';
|
|
18
|
-
|
|
19
17
|
export const CRM_PLACEMENT_VARS = [
|
|
20
18
|
'creative_library_id',
|
|
21
19
|
'creative_id',
|
|
22
20
|
'version-name',
|
|
23
21
|
'version-id',
|
|
24
|
-
'clickTag1'
|
|
22
|
+
'clickTag1',
|
|
23
|
+
'notificiaton_email'
|
|
25
24
|
];
|
|
26
|
-
|
|
27
|
-
export const ADSTUDIO_POST_RENDER_ACTION = 'crm-adstudio';
|
|
28
|
-
|
|
29
|
-
export const ASSETS_POST_RENDER_ACTION = 'crm-asset';
|
package/src/index.ts
CHANGED
|
@@ -154,6 +154,7 @@ import ContextMenuItem from './components/context-menu/ContextMenuItem';
|
|
|
154
154
|
import ContextMenuTrigger from './components/context-menu/ContextMenuTrigger';
|
|
155
155
|
import CopyPropIdButton from './components/copy-prop-id-button/CopyPropIdButton';
|
|
156
156
|
import Submenu from './components/context-menu/SubMenu';
|
|
157
|
+
import { ConfirmModal, IConfirmModalProps } from './components/confirm-modal/ConfirmModal';
|
|
157
158
|
import AssetsTableAssetIdCell from './components/assets/AssetsTableAssetIdCell';
|
|
158
159
|
import { resetStoryFilter, updateStoryFilter } from './redux/actions/story-filter';
|
|
159
160
|
import storyFilter from './redux/reducers/story-filter';
|
|
@@ -162,7 +163,6 @@ import { AppWrapper } from './components/app-wrapper/AppWrapper';
|
|
|
162
163
|
import { pushRoute, replaceRoute } from './utils/routing';
|
|
163
164
|
import { ProjectDropdown } from './components/header/ProjectDropdown';
|
|
164
165
|
import { openConfirmModal } from './utils/modal';
|
|
165
|
-
import { ConfirmModal, IConfirmModalProps } from './components/confirm-modal/ConfirmModal';
|
|
166
166
|
|
|
167
167
|
export {
|
|
168
168
|
ProjectDropdown,
|
|
@@ -4,7 +4,6 @@ import axios from 'axios';
|
|
|
4
4
|
|
|
5
5
|
const assetUploadsActions: any = {
|
|
6
6
|
ADD_UPLOAD: 'assetUploads/ADD_UPLOAD',
|
|
7
|
-
UPDATE_APPLY_ALL: 'assetUploads/UPDATE_APPY_ALL',
|
|
8
7
|
UPDATE_UPLOAD: 'assetUploads/UPDATE_UPLOAD',
|
|
9
8
|
UPDATE_PERCENT_UPLOADED: 'assetUploads/UPDATE_PERCENT_UPLOADED',
|
|
10
9
|
ADD_UPLOAD_ASSET_ID: 'assetUploads/ADD_UPLOAD_ASSET_ID',
|
|
@@ -17,35 +16,6 @@ const POLL_INTERVAL: number = 5000;
|
|
|
17
16
|
let uploadFiles: File[] = [];
|
|
18
17
|
let setBindToOverlay;
|
|
19
18
|
|
|
20
|
-
const getUploadMeta = (filename, file, editor) => {
|
|
21
|
-
const {
|
|
22
|
-
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
23
|
-
} = editor;
|
|
24
|
-
|
|
25
|
-
let tags = [];
|
|
26
|
-
let assetId;
|
|
27
|
-
|
|
28
|
-
const name = file.name.slice(0, file.name.lastIndexOf('.'));
|
|
29
|
-
|
|
30
|
-
if (file.assetId) {
|
|
31
|
-
assetId = file.assetId;
|
|
32
|
-
} else {
|
|
33
|
-
if (tagByFileName) {
|
|
34
|
-
tags = tags.concat(name);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (tagByDelimiter) {
|
|
38
|
-
const tag = name.split(delimiter);
|
|
39
|
-
tags = [...new Set([...tags, ...tag])];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (tagManually) {
|
|
43
|
-
tags = [...new Set([...tags, ...manualTags])];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return { filename, percent: 0, tags, assetId };
|
|
47
|
-
};
|
|
48
|
-
|
|
49
19
|
export const uploadAssets = (
|
|
50
20
|
api: IImposiumAPI,
|
|
51
21
|
files: File[],
|
|
@@ -54,14 +24,17 @@ export const uploadAssets = (
|
|
|
54
24
|
return (dispatch, getStore) => {
|
|
55
25
|
const {
|
|
56
26
|
assetUploads: { uploads },
|
|
57
|
-
editor
|
|
58
|
-
|
|
27
|
+
editor: {
|
|
28
|
+
showUploadsMenu,
|
|
29
|
+
showUploadsDropdown,
|
|
30
|
+
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
31
|
+
}
|
|
59
32
|
} = getStore();
|
|
60
33
|
|
|
61
34
|
uploadFiles.push(...files);
|
|
62
35
|
setBindToOverlay = bindToOverlay;
|
|
63
36
|
|
|
64
|
-
files.map((file:
|
|
37
|
+
files.map((file: File) => {
|
|
65
38
|
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
66
39
|
u.filename.includes(file.name)
|
|
67
40
|
);
|
|
@@ -70,7 +43,22 @@ export const uploadAssets = (
|
|
|
70
43
|
? `${file.name} (${uploadsWithSameName.length})`
|
|
71
44
|
: file.name;
|
|
72
45
|
|
|
73
|
-
|
|
46
|
+
let tags = [];
|
|
47
|
+
|
|
48
|
+
if (tagByFileName) {
|
|
49
|
+
tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (tagByDelimiter) {
|
|
53
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
54
|
+
tags = [...new Set([...tags, ...tag])];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (tagManually) {
|
|
58
|
+
tags = [...new Set([...tags, ...manualTags])];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
74
62
|
|
|
75
63
|
dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
|
|
76
64
|
});
|
|
@@ -83,13 +71,38 @@ export const uploadAssets = (
|
|
|
83
71
|
|
|
84
72
|
export const updateUploadTags = (): any => {
|
|
85
73
|
return (dispatch, getStore) => {
|
|
86
|
-
const {
|
|
74
|
+
const {
|
|
75
|
+
editor: {
|
|
76
|
+
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
77
|
+
}
|
|
78
|
+
} = getStore();
|
|
87
79
|
const uploadMetaArray = [];
|
|
88
80
|
|
|
89
81
|
if (uploadFiles.length > 0) {
|
|
90
|
-
uploadFiles.map((file:
|
|
82
|
+
uploadFiles.map((file: File) => {
|
|
91
83
|
const filename: string = file.name;
|
|
92
|
-
|
|
84
|
+
|
|
85
|
+
let tags = [];
|
|
86
|
+
|
|
87
|
+
if (tagByFileName) {
|
|
88
|
+
const tagsByFileName = tags.concat(
|
|
89
|
+
file.name.slice(0, file.name.lastIndexOf('.'))
|
|
90
|
+
);
|
|
91
|
+
const trimmedTags = tagsByFileName.map((str) => str.trim());
|
|
92
|
+
tags = [...new Set([...tags, ...trimmedTags])];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (tagByDelimiter) {
|
|
96
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
97
|
+
const trimmedTags = tag.map((str) => str.trim());
|
|
98
|
+
tags = [...new Set([...tags, ...trimmedTags])];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (tagManually) {
|
|
102
|
+
tags = [...new Set([...tags, ...manualTags])];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
93
106
|
|
|
94
107
|
uploadMetaArray.push(uploadMeta);
|
|
95
108
|
});
|
|
@@ -108,10 +121,16 @@ export const uploadingAsset = (api: IImposiumAPI): any => {
|
|
|
108
121
|
const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
109
122
|
const {
|
|
110
123
|
project: { storyId },
|
|
111
|
-
editor,
|
|
112
124
|
editor: {
|
|
113
125
|
fromCrM,
|
|
114
|
-
assetUploads: {
|
|
126
|
+
assetUploads: {
|
|
127
|
+
assignToStory,
|
|
128
|
+
tagByFileName,
|
|
129
|
+
tagByDelimiter,
|
|
130
|
+
delimiter,
|
|
131
|
+
tagManually,
|
|
132
|
+
manualTags
|
|
133
|
+
}
|
|
115
134
|
},
|
|
116
135
|
assetUploads: { uploads }
|
|
117
136
|
} = getStore();
|
|
@@ -123,9 +142,27 @@ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
|
123
142
|
const sId = (assignToStory || fromCrM) && storyId ? storyId : null;
|
|
124
143
|
|
|
125
144
|
if (uploadFiles.length > 0) {
|
|
126
|
-
const uploadBlobs: any[] = uploadFiles.map((file:
|
|
145
|
+
const uploadBlobs: any[] = uploadFiles.map((file: File) => {
|
|
127
146
|
const filename: string = file.name;
|
|
128
147
|
|
|
148
|
+
let tags = [];
|
|
149
|
+
|
|
150
|
+
if (tagByFileName) {
|
|
151
|
+
const tagsByFileName = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
152
|
+
const trimmedTags = tagsByFileName.map((str) => str.trim());
|
|
153
|
+
tags = [...new Set([...tags, ...trimmedTags])];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (tagByDelimiter) {
|
|
157
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
158
|
+
const trimmedTags = tag.map((str) => str.trim());
|
|
159
|
+
tags = [...new Set([...tags, ...trimmedTags])];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (tagManually) {
|
|
163
|
+
tags = [...new Set([...tags, ...manualTags])];
|
|
164
|
+
}
|
|
165
|
+
|
|
129
166
|
const onUploadProgress = (progress: any): void => {
|
|
130
167
|
dispatch({
|
|
131
168
|
type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
|
|
@@ -135,12 +172,10 @@ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
|
135
172
|
});
|
|
136
173
|
};
|
|
137
174
|
|
|
138
|
-
const uploadMeta: any =
|
|
175
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
139
176
|
|
|
140
177
|
uploadMetaArray.push(uploadMeta);
|
|
141
178
|
|
|
142
|
-
const { tags } = uploadMeta;
|
|
143
|
-
|
|
144
179
|
return { file, tags, filename, onUploadProgress };
|
|
145
180
|
});
|
|
146
181
|
|
|
@@ -154,155 +189,79 @@ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
|
154
189
|
const isUploading =
|
|
155
190
|
uploads.find((f) => f.filename === uploadBlobs[activeIndex].filename)?.percent > 0;
|
|
156
191
|
if (!isUploading) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
192
|
+
api.uploadAsset(
|
|
193
|
+
sId,
|
|
194
|
+
uploadBlobs[activeIndex].tags,
|
|
195
|
+
uploadBlobs[activeIndex].file,
|
|
196
|
+
uploadBlobs[activeIndex].onUploadProgress,
|
|
197
|
+
uploadBlobs[activeIndex].filename
|
|
198
|
+
)
|
|
199
|
+
.then((result) => {
|
|
200
|
+
const filename = uploadBlobs.find((b) =>
|
|
201
|
+
b.filename.includes(result[0].name)
|
|
202
|
+
).filename;
|
|
203
|
+
uploadFiles = uploadFiles.filter((f) => f.name !== filename);
|
|
204
|
+
dispatch({
|
|
205
|
+
type: assetUploadsActions.ADD_UPLOAD_ASSET_ID,
|
|
206
|
+
assetId: result[0].id,
|
|
207
|
+
filename
|
|
208
|
+
});
|
|
209
|
+
const currentOngoingJobs = () => {
|
|
210
|
+
if (setBindToOverlay) {
|
|
211
|
+
setBindToOverlay(result[0]);
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
footageId: result[0].id,
|
|
215
|
+
jobId: result[0].job_id,
|
|
216
|
+
filename: uploadBlobs[activeIndex].filename,
|
|
217
|
+
onProcessed: () => {
|
|
218
|
+
const fileName = ongoingJobs.filter(
|
|
219
|
+
(job: any) => job.jobId === result[0].job_id
|
|
220
|
+
)[0].filename;
|
|
221
|
+
dispatch({
|
|
222
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
223
|
+
filename: fileName
|
|
224
|
+
});
|
|
225
|
+
doAssetTableHydration(api, storyId);
|
|
178
226
|
}
|
|
179
|
-
return {
|
|
180
|
-
footageId: result.id,
|
|
181
|
-
jobId: result.job_id,
|
|
182
|
-
filename: uploadBlobs[activeIndex].filename,
|
|
183
|
-
onProcessed: () => {
|
|
184
|
-
const fileName = ongoingJobs.filter(
|
|
185
|
-
(job: any) => job.jobId === result.job_id
|
|
186
|
-
)[0].filename;
|
|
187
|
-
dispatch({
|
|
188
|
-
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
189
|
-
filename: fileName
|
|
190
|
-
});
|
|
191
|
-
doAssetTableHydration(api, storyId);
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
227
|
};
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return jobIdExists;
|
|
210
|
-
});
|
|
211
|
-
if (ongoingJobs.length > 0) {
|
|
212
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
228
|
+
};
|
|
229
|
+
ongoingJobs.push(currentOngoingJobs());
|
|
230
|
+
if (currentQueue !== queueLength - 1) {
|
|
231
|
+
currentQueue = currentQueue + 1;
|
|
232
|
+
createPromise(currentQueue);
|
|
233
|
+
} else {
|
|
234
|
+
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
235
|
+
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
236
|
+
if (!jobIdExists) {
|
|
237
|
+
dispatch({
|
|
238
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
239
|
+
filename: j.filename
|
|
240
|
+
});
|
|
241
|
+
doAssetTableHydration(api, storyId);
|
|
213
242
|
}
|
|
243
|
+
return jobIdExists;
|
|
244
|
+
});
|
|
245
|
+
if (ongoingJobs.length > 0) {
|
|
246
|
+
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
214
247
|
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
type: assetUploadsActions.ERROR,
|
|
225
|
-
filename: uploadBlobs[activeIndex].filename,
|
|
226
|
-
errorMsg
|
|
227
|
-
});
|
|
228
|
-
doAssetTableHydration(api, storyId);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
} else {
|
|
232
|
-
api.uploadAsset(
|
|
233
|
-
sId,
|
|
234
|
-
uploadBlobs[activeIndex].tags,
|
|
235
|
-
uploadBlobs[activeIndex].file,
|
|
236
|
-
uploadBlobs[activeIndex].onUploadProgress,
|
|
237
|
-
uploadBlobs[activeIndex].filename
|
|
238
|
-
)
|
|
239
|
-
.then((result) => {
|
|
240
|
-
const filename = uploadBlobs.find((b) =>
|
|
241
|
-
b.filename.includes(result[0].name)
|
|
242
|
-
).filename;
|
|
243
|
-
uploadFiles = uploadFiles.filter((f) => f.name !== filename);
|
|
248
|
+
}
|
|
249
|
+
})
|
|
250
|
+
.catch((e: Error[]) => {
|
|
251
|
+
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
252
|
+
currentQueue = currentQueue + 1;
|
|
253
|
+
createPromise(currentQueue);
|
|
254
|
+
} else {
|
|
255
|
+
const error: any = { ...e };
|
|
256
|
+
const errorMsg = error.response.data.error.split(':')[0];
|
|
244
257
|
dispatch({
|
|
245
|
-
type: assetUploadsActions.
|
|
246
|
-
|
|
247
|
-
|
|
258
|
+
type: assetUploadsActions.ERROR,
|
|
259
|
+
filename: uploadBlobs[activeIndex].filename,
|
|
260
|
+
errorMsg
|
|
248
261
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
253
|
-
return {
|
|
254
|
-
footageId: result[0].id,
|
|
255
|
-
jobId: result[0].job_id,
|
|
256
|
-
filename: uploadBlobs[activeIndex].filename,
|
|
257
|
-
onProcessed: () => {
|
|
258
|
-
const fileName = ongoingJobs.filter(
|
|
259
|
-
(job: any) => job.jobId === result[0].job_id
|
|
260
|
-
)[0].filename;
|
|
261
|
-
dispatch({
|
|
262
|
-
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
263
|
-
filename: fileName
|
|
264
|
-
});
|
|
265
|
-
doAssetTableHydration(api, storyId);
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
};
|
|
269
|
-
ongoingJobs.push(currentOngoingJobs());
|
|
270
|
-
if (currentQueue !== queueLength - 1) {
|
|
271
|
-
currentQueue = currentQueue + 1;
|
|
272
|
-
createPromise(currentQueue);
|
|
273
|
-
} else {
|
|
274
|
-
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
275
|
-
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
276
|
-
if (!jobIdExists) {
|
|
277
|
-
dispatch({
|
|
278
|
-
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
279
|
-
filename: j.filename
|
|
280
|
-
});
|
|
281
|
-
doAssetTableHydration(api, storyId);
|
|
282
|
-
}
|
|
283
|
-
return jobIdExists;
|
|
284
|
-
});
|
|
285
|
-
if (ongoingJobs.length > 0) {
|
|
286
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
})
|
|
290
|
-
.catch((e: Error[]) => {
|
|
291
|
-
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
292
|
-
currentQueue = currentQueue + 1;
|
|
293
|
-
createPromise(currentQueue);
|
|
294
|
-
} else {
|
|
295
|
-
const error: any = { ...e };
|
|
296
|
-
const errorMsg = error.response.data.error.split(':')[0];
|
|
297
|
-
dispatch({
|
|
298
|
-
type: assetUploadsActions.ERROR,
|
|
299
|
-
filename: uploadBlobs[activeIndex].filename,
|
|
300
|
-
errorMsg
|
|
301
|
-
});
|
|
302
|
-
doAssetTableHydration(api, storyId);
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
262
|
+
doAssetTableHydration(api, storyId);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
306
265
|
}
|
|
307
266
|
};
|
|
308
267
|
|
|
@@ -315,39 +274,49 @@ const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
|
315
274
|
|
|
316
275
|
export const replaceAsset = (
|
|
317
276
|
api: IImposiumAPI,
|
|
277
|
+
assetId: any,
|
|
318
278
|
files: File[],
|
|
319
279
|
storyId: string,
|
|
320
|
-
assetId?: any,
|
|
321
280
|
bindToOverlay?: (f: any) => any
|
|
322
281
|
): any => {
|
|
323
|
-
return (dispatch) => {
|
|
282
|
+
return (dispatch, getStore) => {
|
|
324
283
|
return new Promise<void>((resolve) => {
|
|
284
|
+
const {
|
|
285
|
+
assetUploads: { uploads }
|
|
286
|
+
} = getStore();
|
|
325
287
|
let currentQueue: number = 0;
|
|
326
288
|
let ongoingJobs: any[] = [];
|
|
327
289
|
const filesLength = files.length > 5 ? 4 : files.length - 1;
|
|
328
290
|
|
|
329
291
|
const replacedFileBlobs: any[] = files.map((file: File) => {
|
|
330
|
-
const
|
|
292
|
+
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
293
|
+
u.filename.includes(file.name)
|
|
294
|
+
);
|
|
295
|
+
const filename: string =
|
|
296
|
+
uploadsWithSameName.length > 0
|
|
297
|
+
? `${file.name} (${uploadsWithSameName.length})`
|
|
298
|
+
: file.name;
|
|
299
|
+
|
|
300
|
+
const uploadMeta: any = { filename, percent: 0 };
|
|
331
301
|
|
|
332
302
|
const onUploadProgress = (progress: any): void => {
|
|
333
303
|
dispatch({
|
|
334
304
|
type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
|
|
335
305
|
percent: Math.floor((progress.loaded * 100) / progress.total),
|
|
336
|
-
filename
|
|
306
|
+
filename
|
|
337
307
|
});
|
|
338
308
|
};
|
|
339
309
|
|
|
340
310
|
dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
|
|
341
311
|
|
|
342
|
-
return { file, filename
|
|
312
|
+
return { file, filename, onUploadProgress };
|
|
343
313
|
});
|
|
344
314
|
|
|
345
315
|
const createPromise = (activeIndex: number) => {
|
|
346
316
|
const queueLength: number = replacedFileBlobs.length;
|
|
347
317
|
const processingTimeout: number = -1;
|
|
348
|
-
const id = assetId ? assetId : replacedFileBlobs[activeIndex].file.assetId;
|
|
349
318
|
api.replaceAsset(
|
|
350
|
-
|
|
319
|
+
assetId,
|
|
351
320
|
replacedFileBlobs[activeIndex].file,
|
|
352
321
|
replacedFileBlobs[activeIndex].onUploadProgress,
|
|
353
322
|
replacedFileBlobs[activeIndex].filename
|
|
@@ -17,7 +17,7 @@ export const getStoryPublishStatus = (api: IImposiumAPI, storyId: string): any =
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
dispatch({ type: publish.UPDATE_PUBLISH_STATUS, data: resStatus });
|
|
20
|
-
|
|
20
|
+
resolve(resStatus);
|
|
21
21
|
if (resStatus.publishing) {
|
|
22
22
|
const jobId = resStatus.job_id;
|
|
23
23
|
api.pollJob(jobId)
|
|
@@ -38,14 +38,12 @@ export const getStoryPublishStatus = (api: IImposiumAPI, storyId: string): any =
|
|
|
38
38
|
reject(copy.header.publishPollError);
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
|
-
} else {
|
|
42
|
-
resolve(resStatus);
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
})
|
|
46
44
|
.catch((e) => {
|
|
47
45
|
// 404 = no published version = using working copy
|
|
48
|
-
if (e?.response?.status !== 404
|
|
46
|
+
if (e?.response?.status !== 404) {
|
|
49
47
|
console.error(e);
|
|
50
48
|
reject(copy.header.publishPollError);
|
|
51
49
|
}
|
|
@@ -79,15 +77,9 @@ export const publishVersion = (api: IImposiumAPI, storyId: string) => {
|
|
|
79
77
|
return new Promise((resolve, reject) => {
|
|
80
78
|
api.runPublish(storyId, '')
|
|
81
79
|
.then((d) => {
|
|
82
|
-
dispatch(getStoryPublishStatus(api, storyId))
|
|
83
|
-
.then()
|
|
84
|
-
.catch((error) => {
|
|
85
|
-
dispatch({ type: publish.CLEAR_PUBLISH_STATUS });
|
|
86
|
-
reject(error);
|
|
87
|
-
});
|
|
80
|
+
return dispatch(getStoryPublishStatus(api, storyId));
|
|
88
81
|
})
|
|
89
82
|
.catch((e) => {
|
|
90
|
-
dispatch({ type: publish.CLEAR_PUBLISH_STATUS });
|
|
91
83
|
if (e) {
|
|
92
84
|
reject(e);
|
|
93
85
|
} else {
|