@imposium-hub/components 2.3.5 → 2.3.6
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/assets/AssetField.js +2 -2
- package/dist/cjs/components/assets/AssetField.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableGlobalCell.js +1 -1
- package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableNameCell.js +2 -1
- package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
- package/dist/cjs/components/assets/AssetsUploadMenu.js +157 -33
- package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/cjs/components/color-field/ColorField.js +2 -2
- package/dist/cjs/components/color-field/ColorField.js.map +1 -1
- package/dist/cjs/components/data-table/DataTable.js +2 -2
- package/dist/cjs/components/data-table/DataTable.js.map +1 -1
- package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
- package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.js +4 -0
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +28 -5
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +7 -2
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +1 -0
- package/dist/cjs/constants/copy.js +4 -3
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -10
- package/dist/cjs/redux/actions/asset-uploads.js +262 -182
- package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
- package/dist/cjs/redux/reducers/asset-uploads.js +8 -24
- package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/esm/components/assets/AssetField.js +2 -2
- package/dist/esm/components/assets/AssetField.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.js +1 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableNameCell.js +2 -1
- package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +138 -33
- package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/esm/components/color-field/ColorField.js +2 -2
- package/dist/esm/components/color-field/ColorField.js.map +1 -1
- package/dist/esm/components/data-table/DataTable.js +2 -2
- package/dist/esm/components/data-table/DataTable.js.map +1 -1
- package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
- package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.js +4 -0
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +28 -5
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/esm/components/story-previewer/StoryPreviewer.js +7 -2
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +1 -0
- package/dist/esm/constants/copy.js +4 -3
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/asset-uploads.d.ts +5 -10
- package/dist/esm/redux/actions/asset-uploads.js +224 -167
- package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
- package/dist/esm/redux/reducers/asset-uploads.js +11 -48
- package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/styles.css +146 -2
- package/dist/styles.less +274 -73
- package/less/components/assets.less +237 -63
- package/less/components/data-table.less +17 -11
- package/less/components/publish-wizard.less +20 -0
- package/less/components/story-previewer.less +1 -0
- package/package.json +5 -5
- package/src/components/assets/AssetField.tsx +3 -8
- package/src/components/assets/AssetsTableGlobalCell.tsx +15 -0
- package/src/components/assets/AssetsTableNameCell.tsx +2 -1
- package/src/components/assets/AssetsTableRateCell.tsx +0 -1
- package/src/components/assets/AssetsUploadMenu.tsx +275 -97
- package/src/components/color-field/ColorField.tsx +2 -2
- package/src/components/data-table/DataTable.tsx +2 -2
- package/src/components/publish-wizard/PublishWizard.tsx +15 -8
- package/src/components/publish-wizard/publish/EmailWorkflow.tsx +42 -10
- package/src/components/story-previewer/StoryPreviewer.tsx +10 -6
- package/src/constants/copy.ts +4 -3
- package/src/index.ts +3 -7
- package/src/redux/actions/asset-uploads.ts +305 -205
- package/src/redux/reducers/asset-uploads.ts +13 -48
- 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/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
- /package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
- /package/src/components/dropdown/{dropdown.stories.tsx → Dropdown.stories.tsx} +0 -0
package/src/constants/copy.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const assets = {
|
|
2
2
|
tooltipFilter: 'Filter by Asset type',
|
|
3
3
|
previewNotAvailable: 'Preview Not Available for this Asset Type',
|
|
4
|
+
dropAsset: 'Drop file(s) here.',
|
|
4
5
|
iconTypes: {
|
|
5
6
|
filter: 'Filter By Type',
|
|
6
7
|
lut: 'LUT',
|
|
@@ -17,15 +18,15 @@ export const assets = {
|
|
|
17
18
|
after_effects: 'After Effects'
|
|
18
19
|
},
|
|
19
20
|
uploads: {
|
|
20
|
-
noUploads: '
|
|
21
|
+
noUploads: 'No files selected, drag and drop files here to begin.',
|
|
21
22
|
preparePhase: 'Preparing asset...',
|
|
22
23
|
autoTagFilname: 'Tag by file name',
|
|
23
24
|
autoTagDelimiter: 'Tag by Delimiter',
|
|
24
25
|
delimiterOptions: 'Delimiter Options',
|
|
25
26
|
manualTagging: 'Tag Manually',
|
|
26
|
-
assignToProjectInput: '
|
|
27
|
+
assignToProjectInput: 'Make Global',
|
|
27
28
|
assignToProjectInfo:
|
|
28
|
-
'If selected, any assets uploaded will
|
|
29
|
+
'If selected, any assets uploaded will be available to use with all projects on the current organization.',
|
|
29
30
|
uploadButton: 'Upload',
|
|
30
31
|
cancelButton: 'Cancel'
|
|
31
32
|
},
|
package/src/index.ts
CHANGED
|
@@ -46,6 +46,7 @@ import AssetsTableTagsFilter from './components/assets/AssetsTableTagsFilter';
|
|
|
46
46
|
import AssetsTableTagsPivot from './components/assets/AssetsTableTagsPivot';
|
|
47
47
|
import AssetsTableComplexTagCell from './components/assets/AssetsTableComplexTagCell';
|
|
48
48
|
import AssetsTableTypeCell from './components/assets/AssetsTableTypeCell';
|
|
49
|
+
import AssetsTableGlobalCell from './components/assets/AssetsTableGlobalCell';
|
|
49
50
|
import AssetsTableStatusCell from './components/assets/AssetsTableStatusCell';
|
|
50
51
|
import AssetsTableTypeFilter from './components/assets/AssetsTableTypeFilter';
|
|
51
52
|
import AssetsTypeIcon from './components/assets/AssetsTypeIcon';
|
|
@@ -103,12 +104,7 @@ import {
|
|
|
103
104
|
updateAssetStory
|
|
104
105
|
} from './redux/actions/asset-list';
|
|
105
106
|
import { getAssetTagList, addAssetTagToList } from './redux/actions/asset-tags';
|
|
106
|
-
import {
|
|
107
|
-
cancelAssetUpload,
|
|
108
|
-
toggleTagFileName,
|
|
109
|
-
uploadAssets,
|
|
110
|
-
replaceAsset
|
|
111
|
-
} from './redux/actions/asset-uploads';
|
|
107
|
+
import { cancelAssetUpload, uploadAssets, replaceAsset } from './redux/actions/asset-uploads';
|
|
112
108
|
import { selectAsset, deselectAsset, resetSelection } from './redux/actions/selected-assets';
|
|
113
109
|
import assetFilters from './redux/reducers/asset-filters';
|
|
114
110
|
import assetList from './redux/reducers/asset-list';
|
|
@@ -217,6 +213,7 @@ export {
|
|
|
217
213
|
AssetsTableSelectCell,
|
|
218
214
|
AssetsTableTypeFilter,
|
|
219
215
|
AssetsTableTypeCell,
|
|
216
|
+
AssetsTableGlobalCell,
|
|
220
217
|
AssetsTableStatusCell,
|
|
221
218
|
AssetsTableNameFilter,
|
|
222
219
|
AssetsTableNameCell,
|
|
@@ -252,7 +249,6 @@ export {
|
|
|
252
249
|
updateAssetName,
|
|
253
250
|
updateAssetData,
|
|
254
251
|
doAssetTableHydration,
|
|
255
|
-
toggleTagFileName,
|
|
256
252
|
uploadAssets,
|
|
257
253
|
replaceAsset,
|
|
258
254
|
selectAsset,
|
|
@@ -3,84 +3,36 @@ import { doAssetTableHydration } from './asset-list';
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
|
|
5
5
|
const assetUploadsActions: any = {
|
|
6
|
-
TOGGLE_AUTO_TAG: 'assetUploads/TOGGLE_AUTO_TAG',
|
|
7
|
-
TOGGLE_TAG_BY_FILENAME: 'assetUploads/TOGGLE_TAG_BY_FILENAME',
|
|
8
|
-
TOGGLE_TAG_BY_DELIMITER: 'assetUploads/TOGGLE_TAG_BY_DELIMITER',
|
|
9
|
-
SET_DELIMITER: 'assetUploads/SET_DELIMITER',
|
|
10
|
-
TOGGLE_MANUAL_TAGGING: 'assetUploads/TOGGLE_MANUAL_TAGGING',
|
|
11
|
-
ADD_MANUAL_TAG: 'assetUploads/ADD_MANUAL_TAG',
|
|
12
|
-
DELETE_MANUAL_TAG: 'assetUploads/DELETE_MANUAL_TAG',
|
|
13
|
-
DELETE_MANUAL_TAGS: 'assetUploads/DELETE_MANUAL_TAGS',
|
|
14
|
-
TOGGLE_ASSIGN_TO_STORY: 'assetUploads/TOGGLE_ASSIGN_TO_STORY',
|
|
15
6
|
ADD_UPLOAD: 'assetUploads/ADD_UPLOAD',
|
|
7
|
+
UPDATE_UPLOAD: 'assetUploads/UPDATE_UPLOAD',
|
|
16
8
|
UPDATE_PERCENT_UPLOADED: 'assetUploads/UPDATE_PERCENT_UPLOADED',
|
|
9
|
+
ADD_UPLOAD_ASSET_ID: 'assetUploads/ADD_UPLOAD_ASSET_ID',
|
|
17
10
|
REMOVE_UPLOAD: 'assetUploads/REMOVE_UPLOAD'
|
|
18
11
|
};
|
|
19
12
|
|
|
20
13
|
const POLL_INTERVAL: number = 5000;
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
toggle
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
export const toggleAssignToStory = (toggle: boolean): any => ({
|
|
28
|
-
type: assetUploadsActions.TOGGLE_ASSIGN_TO_STORY,
|
|
29
|
-
toggle
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
export const toggleTagDelimiter = (toggle: boolean): any => ({
|
|
33
|
-
type: assetUploadsActions.TOGGLE_TAG_BY_DELIMITER,
|
|
34
|
-
toggle
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export const setDelimiter = (delimiter: string): any => ({
|
|
38
|
-
type: assetUploadsActions.SET_DELIMITER,
|
|
39
|
-
delimiter
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
export const toggleManualTagging = (toggle: boolean): any => ({
|
|
43
|
-
type: assetUploadsActions.TOGGLE_MANUAL_TAGGING,
|
|
44
|
-
toggle
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
export const addManualTag = (tag: string): any => ({
|
|
48
|
-
type: assetUploadsActions.ADD_MANUAL_TAG,
|
|
49
|
-
tag
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
export const deleteManualTag = (tag: string): any => ({
|
|
53
|
-
type: assetUploadsActions.DELETE_MANUAL_TAG,
|
|
54
|
-
tag
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
export const deleteManualTags = (): any => ({
|
|
58
|
-
type: assetUploadsActions.DELETE_MANUAL_TAGS
|
|
59
|
-
});
|
|
15
|
+
let uploadFiles: File[] = [];
|
|
16
|
+
let setBindToOverlay;
|
|
60
17
|
|
|
61
18
|
export const uploadAssets = (
|
|
62
19
|
api: IImposiumAPI,
|
|
63
20
|
files: File[],
|
|
64
|
-
storyId: string,
|
|
65
21
|
bindToOverlay?: (f: any) => any
|
|
66
22
|
): any => {
|
|
67
23
|
return (dispatch, getStore) => {
|
|
68
24
|
const {
|
|
69
|
-
assetUploads: {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
tagByFileName,
|
|
73
|
-
tagByDelimiter,
|
|
74
|
-
delimiter,
|
|
75
|
-
tagManually,
|
|
76
|
-
manualTags
|
|
25
|
+
assetUploads: { uploads },
|
|
26
|
+
editor: {
|
|
27
|
+
showUploadsMenu,
|
|
28
|
+
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
77
29
|
}
|
|
78
30
|
} = getStore();
|
|
79
|
-
let currentQueue: number = 0;
|
|
80
|
-
let ongoingJobs: any[] = [];
|
|
81
|
-
const filesLength = files.length > 5 ? 4 : files.length - 1;
|
|
82
31
|
|
|
83
|
-
|
|
32
|
+
uploadFiles.push(...files);
|
|
33
|
+
setBindToOverlay = bindToOverlay;
|
|
34
|
+
|
|
35
|
+
files.map((file: File) => {
|
|
84
36
|
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
85
37
|
u.filename.includes(file.name)
|
|
86
38
|
);
|
|
@@ -92,11 +44,11 @@ export const uploadAssets = (
|
|
|
92
44
|
let tags = [];
|
|
93
45
|
|
|
94
46
|
if (tagByFileName) {
|
|
95
|
-
tags = tags.concat(file.name.
|
|
47
|
+
tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
96
48
|
}
|
|
97
49
|
|
|
98
50
|
if (tagByDelimiter) {
|
|
99
|
-
const tag = file.name.
|
|
51
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
100
52
|
tags = [...new Set([...tags, ...tag])];
|
|
101
53
|
}
|
|
102
54
|
|
|
@@ -104,7 +56,100 @@ export const uploadAssets = (
|
|
|
104
56
|
tags = [...new Set([...tags, ...manualTags])];
|
|
105
57
|
}
|
|
106
58
|
|
|
107
|
-
const uploadMeta: any = { filename, percent: 0 };
|
|
59
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
60
|
+
|
|
61
|
+
dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (!showUploadsMenu) {
|
|
65
|
+
uploadAssetHandler(api, dispatch, getStore);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const updateUploadTags = (): any => {
|
|
71
|
+
return (dispatch, getStore) => {
|
|
72
|
+
const {
|
|
73
|
+
editor: {
|
|
74
|
+
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
75
|
+
}
|
|
76
|
+
} = getStore();
|
|
77
|
+
const uploadMetaArray = [];
|
|
78
|
+
|
|
79
|
+
if (uploadFiles) {
|
|
80
|
+
uploadFiles.map((file: File) => {
|
|
81
|
+
const filename: string = file.name;
|
|
82
|
+
|
|
83
|
+
let tags = [];
|
|
84
|
+
|
|
85
|
+
if (tagByFileName) {
|
|
86
|
+
tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (tagByDelimiter) {
|
|
90
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
91
|
+
tags = [...new Set([...tags, ...tag])];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (tagManually) {
|
|
95
|
+
tags = [...new Set([...tags, ...manualTags])];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
99
|
+
|
|
100
|
+
uploadMetaArray.push(uploadMeta);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const uploadingAsset = (api: IImposiumAPI): any => {
|
|
109
|
+
return (dispatch, getStore) => {
|
|
110
|
+
uploadAssetHandler(api, dispatch, getStore);
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const uploadAssetHandler = (api: IImposiumAPI, dispatch, getStore) => {
|
|
115
|
+
const {
|
|
116
|
+
project: { storyId },
|
|
117
|
+
editor: {
|
|
118
|
+
assetUploads: {
|
|
119
|
+
assignToStory,
|
|
120
|
+
tagByFileName,
|
|
121
|
+
tagByDelimiter,
|
|
122
|
+
delimiter,
|
|
123
|
+
tagManually,
|
|
124
|
+
manualTags
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
assetUploads: { uploads }
|
|
128
|
+
} = getStore();
|
|
129
|
+
|
|
130
|
+
let currentQueue: number = 0;
|
|
131
|
+
let ongoingJobs: any[] = [];
|
|
132
|
+
|
|
133
|
+
const uploadMetaArray = [];
|
|
134
|
+
|
|
135
|
+
if (uploadFiles) {
|
|
136
|
+
const uploadBlobs: any[] = uploadFiles.map((file: File) => {
|
|
137
|
+
const filename: string = file.name;
|
|
138
|
+
|
|
139
|
+
let tags = [];
|
|
140
|
+
|
|
141
|
+
if (tagByFileName) {
|
|
142
|
+
tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (tagByDelimiter) {
|
|
146
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
147
|
+
tags = [...new Set([...tags, ...tag])];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (tagManually) {
|
|
151
|
+
tags = [...new Set([...tags, ...manualTags])];
|
|
152
|
+
}
|
|
108
153
|
|
|
109
154
|
const onUploadProgress = (progress: any): void => {
|
|
110
155
|
dispatch({
|
|
@@ -114,76 +159,96 @@ export const uploadAssets = (
|
|
|
114
159
|
});
|
|
115
160
|
};
|
|
116
161
|
|
|
117
|
-
|
|
162
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
163
|
+
|
|
164
|
+
uploadMetaArray.push(uploadMeta);
|
|
118
165
|
|
|
119
166
|
return { file, tags, filename, onUploadProgress };
|
|
120
167
|
});
|
|
121
168
|
|
|
169
|
+
dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
|
|
170
|
+
|
|
171
|
+
const filesLength = uploadFiles.length > 5 ? 4 : uploadFiles.length - 1;
|
|
172
|
+
|
|
122
173
|
const createPromise = (activeIndex: number) => {
|
|
123
174
|
const queueLength: number = uploadBlobs.length;
|
|
124
175
|
const sId = assignToStory && storyId ? storyId : null;
|
|
125
176
|
const processingTimeout: number = -1;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
});
|
|
150
|
-
doAssetTableHydration(api, storyId);
|
|
177
|
+
const isUploading =
|
|
178
|
+
uploads.find((f) => f.filename === uploadBlobs[activeIndex].filename)?.percent > 0;
|
|
179
|
+
if (!isUploading) {
|
|
180
|
+
api.uploadAsset(
|
|
181
|
+
sId,
|
|
182
|
+
uploadBlobs[activeIndex].tags,
|
|
183
|
+
uploadBlobs[activeIndex].file,
|
|
184
|
+
uploadBlobs[activeIndex].onUploadProgress,
|
|
185
|
+
uploadBlobs[activeIndex].filename
|
|
186
|
+
)
|
|
187
|
+
.then((result) => {
|
|
188
|
+
const filename = uploadBlobs.find((b) =>
|
|
189
|
+
b.filename.includes(result[0].name)
|
|
190
|
+
).filename;
|
|
191
|
+
uploadFiles = uploadFiles.filter((f) => f.name !== filename);
|
|
192
|
+
dispatch({
|
|
193
|
+
type: assetUploadsActions.ADD_UPLOAD_ASSET_ID,
|
|
194
|
+
assetId: result[0].id,
|
|
195
|
+
filename
|
|
196
|
+
});
|
|
197
|
+
const currentOngoingJobs = () => {
|
|
198
|
+
if (setBindToOverlay) {
|
|
199
|
+
setBindToOverlay(result[0]);
|
|
151
200
|
}
|
|
201
|
+
return {
|
|
202
|
+
footageId: result[0].id,
|
|
203
|
+
jobId: result[0].job_id,
|
|
204
|
+
filename: uploadBlobs[activeIndex].filename,
|
|
205
|
+
onProcessed: () => {
|
|
206
|
+
const fileName = ongoingJobs.filter(
|
|
207
|
+
(job: any) => job.jobId === result[0].job_id
|
|
208
|
+
)[0].filename;
|
|
209
|
+
dispatch({
|
|
210
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
211
|
+
filename: fileName
|
|
212
|
+
});
|
|
213
|
+
doAssetTableHydration(api, storyId);
|
|
214
|
+
}
|
|
215
|
+
};
|
|
152
216
|
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
217
|
+
ongoingJobs.push(currentOngoingJobs());
|
|
218
|
+
if (currentQueue !== queueLength - 1) {
|
|
219
|
+
currentQueue = currentQueue + 1;
|
|
220
|
+
createPromise(currentQueue);
|
|
221
|
+
} else {
|
|
222
|
+
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
223
|
+
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
224
|
+
if (!jobIdExists) {
|
|
225
|
+
dispatch({
|
|
226
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
227
|
+
filename: j.filename
|
|
228
|
+
});
|
|
229
|
+
doAssetTableHydration(api, storyId);
|
|
230
|
+
}
|
|
231
|
+
return jobIdExists;
|
|
232
|
+
});
|
|
233
|
+
if (ongoingJobs.length > 0) {
|
|
234
|
+
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
167
235
|
}
|
|
168
|
-
return jobIdExists;
|
|
169
|
-
});
|
|
170
|
-
if (ongoingJobs.length > 0) {
|
|
171
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
172
236
|
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
237
|
+
})
|
|
238
|
+
.catch((e: Error[]) => {
|
|
239
|
+
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
240
|
+
currentQueue = currentQueue + 1;
|
|
241
|
+
createPromise(currentQueue);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
181
245
|
};
|
|
246
|
+
|
|
182
247
|
for (let i = 0; i <= filesLength; i++) {
|
|
183
248
|
createPromise(i);
|
|
184
249
|
currentQueue = i;
|
|
185
250
|
}
|
|
186
|
-
}
|
|
251
|
+
}
|
|
187
252
|
};
|
|
188
253
|
|
|
189
254
|
export const replaceAsset = (
|
|
@@ -193,95 +258,103 @@ export const replaceAsset = (
|
|
|
193
258
|
storyId: string
|
|
194
259
|
): any => {
|
|
195
260
|
return (dispatch, getStore) => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
261
|
+
return new Promise<void>((resolve) => {
|
|
262
|
+
const {
|
|
263
|
+
assetUploads: { uploads }
|
|
264
|
+
} = getStore();
|
|
265
|
+
let currentQueue: number = 0;
|
|
266
|
+
let ongoingJobs: any[] = [];
|
|
267
|
+
const filesLength = files.length > 5 ? 4 : files.length - 1;
|
|
268
|
+
|
|
269
|
+
const replacedFileBlobs: any[] = files.map((file: File) => {
|
|
270
|
+
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
271
|
+
u.filename.includes(file.name)
|
|
272
|
+
);
|
|
273
|
+
const filename: string =
|
|
274
|
+
uploadsWithSameName.length > 0
|
|
275
|
+
? `${file.name} (${uploadsWithSameName.length})`
|
|
276
|
+
: file.name;
|
|
277
|
+
|
|
278
|
+
const uploadMeta: any = { filename, percent: 0 };
|
|
279
|
+
|
|
280
|
+
const onUploadProgress = (progress: any): void => {
|
|
281
|
+
dispatch({
|
|
282
|
+
type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
|
|
283
|
+
percent: Math.floor((progress.loaded * 100) / progress.total),
|
|
284
|
+
filename
|
|
285
|
+
});
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
|
|
289
|
+
|
|
290
|
+
return { file, filename, onUploadProgress };
|
|
291
|
+
});
|
|
202
292
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
293
|
+
const createPromise = (activeIndex: number) => {
|
|
294
|
+
const queueLength: number = replacedFileBlobs.length;
|
|
295
|
+
const processingTimeout: number = -1;
|
|
296
|
+
api.replaceAsset(
|
|
297
|
+
assetId,
|
|
298
|
+
replacedFileBlobs[activeIndex].file,
|
|
299
|
+
replacedFileBlobs[activeIndex].onUploadProgress,
|
|
300
|
+
replacedFileBlobs[activeIndex].filename
|
|
301
|
+
)
|
|
302
|
+
.then((result) => {
|
|
303
|
+
const currentOngoingJobs = () => {
|
|
304
|
+
return {
|
|
305
|
+
filename: replacedFileBlobs[activeIndex].filename,
|
|
306
|
+
onProcessed: () => {
|
|
307
|
+
const fileName = ongoingJobs.filter(
|
|
308
|
+
(job: any) => job.jobId === result[0].job_id
|
|
309
|
+
)[0].filename;
|
|
310
|
+
dispatch({
|
|
311
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
312
|
+
filename: fileName
|
|
313
|
+
});
|
|
314
|
+
doAssetTableHydration(api, storyId);
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
};
|
|
211
318
|
|
|
212
|
-
|
|
319
|
+
ongoingJobs.push(currentOngoingJobs());
|
|
320
|
+
|
|
321
|
+
if (currentQueue !== queueLength - 1) {
|
|
322
|
+
currentQueue = currentQueue + 1;
|
|
323
|
+
createPromise(currentQueue);
|
|
324
|
+
} else {
|
|
325
|
+
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
326
|
+
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
327
|
+
|
|
328
|
+
if (!jobIdExists) {
|
|
329
|
+
dispatch({
|
|
330
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
331
|
+
filename: j.filename
|
|
332
|
+
});
|
|
333
|
+
doAssetTableHydration(api, storyId);
|
|
334
|
+
}
|
|
335
|
+
return jobIdExists;
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
if (ongoingJobs.length > 0) {
|
|
339
|
+
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
213
342
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
343
|
+
resolve(result);
|
|
344
|
+
})
|
|
345
|
+
.catch((e: Error[]) => {
|
|
346
|
+
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
347
|
+
currentQueue = currentQueue + 1;
|
|
348
|
+
createPromise(currentQueue);
|
|
349
|
+
}
|
|
350
|
+
});
|
|
220
351
|
};
|
|
221
352
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
353
|
+
for (let i = 0; i <= filesLength; i++) {
|
|
354
|
+
createPromise(i);
|
|
355
|
+
currentQueue = i;
|
|
356
|
+
}
|
|
225
357
|
});
|
|
226
|
-
|
|
227
|
-
const createPromise = (activeIndex: number) => {
|
|
228
|
-
const queueLength: number = uploadBlobs.length;
|
|
229
|
-
const processingTimeout: number = -1;
|
|
230
|
-
api.replaceAsset(
|
|
231
|
-
assetId,
|
|
232
|
-
uploadBlobs[activeIndex].file,
|
|
233
|
-
uploadBlobs[activeIndex].onUploadProgress,
|
|
234
|
-
uploadBlobs[activeIndex].filename
|
|
235
|
-
)
|
|
236
|
-
.then((result) => {
|
|
237
|
-
const currentOngoingJobs = () => {
|
|
238
|
-
return {
|
|
239
|
-
filename: uploadBlobs[activeIndex].filename,
|
|
240
|
-
onProcessed: () => {
|
|
241
|
-
const fileName = ongoingJobs.filter(
|
|
242
|
-
(job: any) => job.jobId === result[0].job_id
|
|
243
|
-
)[0].filename;
|
|
244
|
-
dispatch({
|
|
245
|
-
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
246
|
-
filename: fileName
|
|
247
|
-
});
|
|
248
|
-
doAssetTableHydration(api, storyId);
|
|
249
|
-
}
|
|
250
|
-
};
|
|
251
|
-
};
|
|
252
|
-
ongoingJobs.push(currentOngoingJobs());
|
|
253
|
-
if (currentQueue !== queueLength - 1) {
|
|
254
|
-
currentQueue = currentQueue + 1;
|
|
255
|
-
createPromise(currentQueue);
|
|
256
|
-
} else {
|
|
257
|
-
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
258
|
-
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
259
|
-
if (!jobIdExists) {
|
|
260
|
-
dispatch({
|
|
261
|
-
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
262
|
-
filename: j.filename
|
|
263
|
-
});
|
|
264
|
-
doAssetTableHydration(api, storyId);
|
|
265
|
-
}
|
|
266
|
-
return jobIdExists;
|
|
267
|
-
});
|
|
268
|
-
if (ongoingJobs.length > 0) {
|
|
269
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
})
|
|
273
|
-
.catch((e: Error[]) => {
|
|
274
|
-
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
275
|
-
currentQueue = currentQueue + 1;
|
|
276
|
-
createPromise(currentQueue);
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
for (let i = 0; i <= filesLength; i++) {
|
|
282
|
-
createPromise(i);
|
|
283
|
-
currentQueue = i;
|
|
284
|
-
}
|
|
285
358
|
};
|
|
286
359
|
};
|
|
287
360
|
|
|
@@ -322,13 +395,40 @@ const pollAssetJobs = (api, ongoingJobs: any[], timeout: number): void => {
|
|
|
322
395
|
}, POLL_INTERVAL);
|
|
323
396
|
};
|
|
324
397
|
|
|
325
|
-
|
|
398
|
+
const removeUploadHander = (fileName: string, api: IImposiumAPI, dispatch): any => {
|
|
399
|
+
uploadFiles = uploadFiles.filter((f) => f.name !== fileName);
|
|
400
|
+
api.cancelUploadAssets(fileName);
|
|
401
|
+
dispatch({
|
|
402
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
403
|
+
filename: fileName
|
|
404
|
+
});
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export const cancelAssetUpload = (fileName: string, api: IImposiumAPI, assetId: string): any => {
|
|
326
408
|
return (dispatch) => {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
409
|
+
if (assetId) {
|
|
410
|
+
api.deleteAsset(assetId)
|
|
411
|
+
.then()
|
|
412
|
+
.catch((e) => console.error(e));
|
|
413
|
+
}
|
|
414
|
+
removeUploadHander(fileName, api, dispatch);
|
|
415
|
+
};
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
export const cancelNonUploadedAssets = (api: IImposiumAPI): any => {
|
|
419
|
+
return (dispatch, getStore) => {
|
|
420
|
+
const {
|
|
421
|
+
assetUploads: { uploads }
|
|
422
|
+
} = getStore();
|
|
423
|
+
|
|
424
|
+
if (uploads.length > 0) {
|
|
425
|
+
for (const file of uploads) {
|
|
426
|
+
const upload = uploads.find((f) => f.filename === file.filename);
|
|
427
|
+
if (upload.percent === 0) {
|
|
428
|
+
removeUploadHander(file.filename, api, dispatch);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
332
432
|
};
|
|
333
433
|
};
|
|
334
434
|
|