@imposium-hub/components 2.2.44-2 → 2.2.44-4
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/AssetsUploadMenu.js +129 -25
- 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/constants/copy.d.ts +1 -0
- package/dist/cjs/constants/copy.js +2 -1
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -2
- package/dist/cjs/redux/actions/asset-uploads.js +258 -138
- package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
- package/dist/cjs/redux/reducers/asset-uploads.js +10 -0
- package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +124 -25
- 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/constants/copy.d.ts +1 -0
- package/dist/esm/constants/copy.js +2 -1
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/redux/actions/asset-uploads.d.ts +5 -2
- package/dist/esm/redux/actions/asset-uploads.js +221 -131
- package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
- package/dist/esm/redux/reducers/asset-uploads.js +16 -0
- package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/styles.css +81 -2
- package/dist/styles.less +154 -62
- package/less/components/assets.less +154 -63
- package/package.json +4 -4
- package/src/components/assets/AssetsUploadMenu.tsx +247 -66
- package/src/components/color-field/ColorField.tsx +2 -2
- package/src/constants/copy.ts +2 -1
- package/src/redux/actions/asset-uploads.ts +299 -152
- package/src/redux/reducers/asset-uploads.ts +18 -0
|
@@ -3,38 +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
|
|
|
15
|
+
const uploadFiles: File[] = [];
|
|
16
|
+
let setBindToOverlay;
|
|
17
|
+
|
|
22
18
|
export const uploadAssets = (
|
|
23
19
|
api: IImposiumAPI,
|
|
24
20
|
files: File[],
|
|
25
|
-
storyId: string,
|
|
26
21
|
bindToOverlay?: (f: any) => any
|
|
27
22
|
): any => {
|
|
28
23
|
return (dispatch, getStore) => {
|
|
29
24
|
const {
|
|
30
|
-
assetUploads: { uploads
|
|
31
|
-
editor: {
|
|
25
|
+
assetUploads: { uploads },
|
|
26
|
+
editor: {
|
|
27
|
+
showUploadsMenu,
|
|
28
|
+
assetUploads: { tagByFileName, tagByDelimiter, delimiter, tagManually, manualTags }
|
|
29
|
+
}
|
|
32
30
|
} = getStore();
|
|
33
|
-
let currentQueue: number = 0;
|
|
34
|
-
let ongoingJobs: any[] = [];
|
|
35
|
-
const filesLength = files.length > 5 ? 4 : files.length - 1;
|
|
36
31
|
|
|
37
|
-
|
|
32
|
+
uploadFiles.push(...files);
|
|
33
|
+
setBindToOverlay = bindToOverlay;
|
|
34
|
+
|
|
35
|
+
files.map((file: File) => {
|
|
38
36
|
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
39
37
|
u.filename.includes(file.name)
|
|
40
38
|
);
|
|
@@ -46,11 +44,11 @@ export const uploadAssets = (
|
|
|
46
44
|
let tags = [];
|
|
47
45
|
|
|
48
46
|
if (tagByFileName) {
|
|
49
|
-
tags = tags.concat(file.name.
|
|
47
|
+
tags = tags.concat(file.name.slice(0, file.name.lastIndexOf('.')));
|
|
50
48
|
}
|
|
51
49
|
|
|
52
50
|
if (tagByDelimiter) {
|
|
53
|
-
const tag = file.name.
|
|
51
|
+
const tag = file.name.slice(0, file.name.lastIndexOf('.')).split(delimiter);
|
|
54
52
|
tags = [...new Set([...tags, ...tag])];
|
|
55
53
|
}
|
|
56
54
|
|
|
@@ -58,7 +56,100 @@ export const uploadAssets = (
|
|
|
58
56
|
tags = [...new Set([...tags, ...manualTags])];
|
|
59
57
|
}
|
|
60
58
|
|
|
61
|
-
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
|
+
}
|
|
62
153
|
|
|
63
154
|
const onUploadProgress = (progress: any): void => {
|
|
64
155
|
dispatch({
|
|
@@ -68,76 +159,95 @@ export const uploadAssets = (
|
|
|
68
159
|
});
|
|
69
160
|
};
|
|
70
161
|
|
|
71
|
-
|
|
162
|
+
const uploadMeta: any = { filename, percent: 0, tags };
|
|
163
|
+
|
|
164
|
+
uploadMetaArray.push(uploadMeta);
|
|
72
165
|
|
|
73
166
|
return { file, tags, filename, onUploadProgress };
|
|
74
167
|
});
|
|
75
168
|
|
|
169
|
+
dispatch({ type: assetUploadsActions.UPDATE_UPLOAD, uploadMetaArray });
|
|
170
|
+
|
|
171
|
+
const filesLength = uploadFiles.length > 5 ? 4 : uploadFiles.length - 1;
|
|
172
|
+
|
|
76
173
|
const createPromise = (activeIndex: number) => {
|
|
77
174
|
const queueLength: number = uploadBlobs.length;
|
|
78
175
|
const sId = assignToStory && storyId ? storyId : null;
|
|
79
176
|
const processingTimeout: number = -1;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
filename: fileName
|
|
103
|
-
});
|
|
104
|
-
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
|
+
dispatch({
|
|
192
|
+
type: assetUploadsActions.ADD_UPLOAD_ASSET_ID,
|
|
193
|
+
assetId: result[0].id,
|
|
194
|
+
filename
|
|
195
|
+
});
|
|
196
|
+
const currentOngoingJobs = () => {
|
|
197
|
+
if (setBindToOverlay) {
|
|
198
|
+
setBindToOverlay(result[0]);
|
|
105
199
|
}
|
|
200
|
+
return {
|
|
201
|
+
footageId: result[0].id,
|
|
202
|
+
jobId: result[0].job_id,
|
|
203
|
+
filename: uploadBlobs[activeIndex].filename,
|
|
204
|
+
onProcessed: () => {
|
|
205
|
+
const fileName = ongoingJobs.filter(
|
|
206
|
+
(job: any) => job.jobId === result[0].job_id
|
|
207
|
+
)[0].filename;
|
|
208
|
+
dispatch({
|
|
209
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
210
|
+
filename: fileName
|
|
211
|
+
});
|
|
212
|
+
doAssetTableHydration(api, storyId);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
106
215
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
216
|
+
ongoingJobs.push(currentOngoingJobs());
|
|
217
|
+
if (currentQueue !== queueLength - 1) {
|
|
218
|
+
currentQueue = currentQueue + 1;
|
|
219
|
+
createPromise(currentQueue);
|
|
220
|
+
} else {
|
|
221
|
+
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
222
|
+
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
223
|
+
if (!jobIdExists) {
|
|
224
|
+
dispatch({
|
|
225
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
226
|
+
filename: j.filename
|
|
227
|
+
});
|
|
228
|
+
doAssetTableHydration(api, storyId);
|
|
229
|
+
}
|
|
230
|
+
return jobIdExists;
|
|
231
|
+
});
|
|
232
|
+
if (ongoingJobs.length > 0) {
|
|
233
|
+
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
121
234
|
}
|
|
122
|
-
return jobIdExists;
|
|
123
|
-
});
|
|
124
|
-
if (ongoingJobs.length > 0) {
|
|
125
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
126
235
|
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
236
|
+
})
|
|
237
|
+
.catch((e: Error[]) => {
|
|
238
|
+
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
239
|
+
currentQueue = currentQueue + 1;
|
|
240
|
+
createPromise(currentQueue);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
135
244
|
};
|
|
245
|
+
|
|
136
246
|
for (let i = 0; i <= filesLength; i++) {
|
|
137
247
|
createPromise(i);
|
|
138
248
|
currentQueue = i;
|
|
139
249
|
}
|
|
140
|
-
}
|
|
250
|
+
}
|
|
141
251
|
};
|
|
142
252
|
|
|
143
253
|
export const replaceAsset = (
|
|
@@ -147,95 +257,103 @@ export const replaceAsset = (
|
|
|
147
257
|
storyId: string
|
|
148
258
|
): any => {
|
|
149
259
|
return (dispatch, getStore) => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
260
|
+
return new Promise<void>((resolve) => {
|
|
261
|
+
const {
|
|
262
|
+
assetUploads: { uploads }
|
|
263
|
+
} = getStore();
|
|
264
|
+
let currentQueue: number = 0;
|
|
265
|
+
let ongoingJobs: any[] = [];
|
|
266
|
+
const filesLength = files.length > 5 ? 4 : files.length - 1;
|
|
156
267
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
268
|
+
const replacedFileBlobs: any[] = files.map((file: File) => {
|
|
269
|
+
const uploadsWithSameName: any[] = uploads.filter((u: any) =>
|
|
270
|
+
u.filename.includes(file.name)
|
|
271
|
+
);
|
|
272
|
+
const filename: string =
|
|
273
|
+
uploadsWithSameName.length > 0
|
|
274
|
+
? `${file.name} (${uploadsWithSameName.length})`
|
|
275
|
+
: file.name;
|
|
165
276
|
|
|
166
|
-
|
|
277
|
+
const uploadMeta: any = { filename, percent: 0 };
|
|
167
278
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
279
|
+
const onUploadProgress = (progress: any): void => {
|
|
280
|
+
dispatch({
|
|
281
|
+
type: assetUploadsActions.UPDATE_PERCENT_UPLOADED,
|
|
282
|
+
percent: Math.floor((progress.loaded * 100) / progress.total),
|
|
283
|
+
filename
|
|
284
|
+
});
|
|
285
|
+
};
|
|
175
286
|
|
|
176
|
-
|
|
287
|
+
dispatch({ type: assetUploadsActions.ADD_UPLOAD, uploadMeta });
|
|
177
288
|
|
|
178
|
-
|
|
179
|
-
|
|
289
|
+
return { file, filename, onUploadProgress };
|
|
290
|
+
});
|
|
180
291
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
292
|
+
const createPromise = (activeIndex: number) => {
|
|
293
|
+
const queueLength: number = replacedFileBlobs.length;
|
|
294
|
+
const processingTimeout: number = -1;
|
|
295
|
+
api.replaceAsset(
|
|
296
|
+
assetId,
|
|
297
|
+
replacedFileBlobs[activeIndex].file,
|
|
298
|
+
replacedFileBlobs[activeIndex].onUploadProgress,
|
|
299
|
+
replacedFileBlobs[activeIndex].filename
|
|
300
|
+
)
|
|
301
|
+
.then((result) => {
|
|
302
|
+
const currentOngoingJobs = () => {
|
|
303
|
+
return {
|
|
304
|
+
filename: replacedFileBlobs[activeIndex].filename,
|
|
305
|
+
onProcessed: () => {
|
|
306
|
+
const fileName = ongoingJobs.filter(
|
|
307
|
+
(job: any) => job.jobId === result[0].job_id
|
|
308
|
+
)[0].filename;
|
|
309
|
+
dispatch({
|
|
310
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
311
|
+
filename: fileName
|
|
312
|
+
});
|
|
313
|
+
doAssetTableHydration(api, storyId);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
204
316
|
};
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
currentQueue
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
317
|
+
|
|
318
|
+
ongoingJobs.push(currentOngoingJobs());
|
|
319
|
+
|
|
320
|
+
if (currentQueue !== queueLength - 1) {
|
|
321
|
+
currentQueue = currentQueue + 1;
|
|
322
|
+
createPromise(currentQueue);
|
|
323
|
+
} else {
|
|
324
|
+
ongoingJobs = ongoingJobs.filter((j: any, i: number) => {
|
|
325
|
+
const jobIdExists: boolean = typeof j.jobId === 'string';
|
|
326
|
+
|
|
327
|
+
if (!jobIdExists) {
|
|
328
|
+
dispatch({
|
|
329
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
330
|
+
filename: j.filename
|
|
331
|
+
});
|
|
332
|
+
doAssetTableHydration(api, storyId);
|
|
333
|
+
}
|
|
334
|
+
return jobIdExists;
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
if (ongoingJobs.length > 0) {
|
|
338
|
+
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
219
339
|
}
|
|
220
|
-
return jobIdExists;
|
|
221
|
-
});
|
|
222
|
-
if (ongoingJobs.length > 0) {
|
|
223
|
-
pollAssetJobs(api, ongoingJobs, processingTimeout);
|
|
224
340
|
}
|
|
225
|
-
}
|
|
226
|
-
})
|
|
227
|
-
.catch((e: Error[]) => {
|
|
228
|
-
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
229
|
-
currentQueue = currentQueue + 1;
|
|
230
|
-
createPromise(currentQueue);
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
};
|
|
234
341
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
342
|
+
resolve(result);
|
|
343
|
+
})
|
|
344
|
+
.catch((e: Error[]) => {
|
|
345
|
+
if (axios.isCancel(e) && currentQueue !== queueLength - 1) {
|
|
346
|
+
currentQueue = currentQueue + 1;
|
|
347
|
+
createPromise(currentQueue);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
for (let i = 0; i <= filesLength; i++) {
|
|
353
|
+
createPromise(i);
|
|
354
|
+
currentQueue = i;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
239
357
|
};
|
|
240
358
|
};
|
|
241
359
|
|
|
@@ -276,9 +394,17 @@ const pollAssetJobs = (api, ongoingJobs: any[], timeout: number): void => {
|
|
|
276
394
|
}, POLL_INTERVAL);
|
|
277
395
|
};
|
|
278
396
|
|
|
279
|
-
export const cancelAssetUpload = (fileName: string, api: IImposiumAPI): any => {
|
|
397
|
+
export const cancelAssetUpload = (fileName: string, api: IImposiumAPI, assetId: string): any => {
|
|
280
398
|
return (dispatch) => {
|
|
399
|
+
uploadFiles.filter((f) => {
|
|
400
|
+
return f.name !== fileName;
|
|
401
|
+
});
|
|
281
402
|
api.cancelUploadAssets(fileName);
|
|
403
|
+
if (assetId) {
|
|
404
|
+
api.deleteAsset(assetId)
|
|
405
|
+
.then()
|
|
406
|
+
.catch((e) => console.error(e));
|
|
407
|
+
}
|
|
282
408
|
dispatch({
|
|
283
409
|
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
284
410
|
filename: fileName
|
|
@@ -286,4 +412,25 @@ export const cancelAssetUpload = (fileName: string, api: IImposiumAPI): any => {
|
|
|
286
412
|
};
|
|
287
413
|
};
|
|
288
414
|
|
|
415
|
+
export const cancelNonUploadedAssets = (api: IImposiumAPI): any => {
|
|
416
|
+
return (dispatch, getStore) => {
|
|
417
|
+
const {
|
|
418
|
+
assetUploads: { uploads }
|
|
419
|
+
} = getStore();
|
|
420
|
+
|
|
421
|
+
if (uploadFiles.length > 0) {
|
|
422
|
+
for (const file of uploadFiles) {
|
|
423
|
+
const percent = uploads.find((f) => f.filename === file.name).percent;
|
|
424
|
+
if (percent === 0) {
|
|
425
|
+
api.cancelUploadAssets(file.name);
|
|
426
|
+
dispatch({
|
|
427
|
+
type: assetUploadsActions.REMOVE_UPLOAD,
|
|
428
|
+
filename: file.name
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
};
|
|
435
|
+
|
|
289
436
|
export default assetUploadsActions;
|
|
@@ -11,6 +11,11 @@ const assetUploads = (state = initialState, action): any => {
|
|
|
11
11
|
...state,
|
|
12
12
|
uploads: [...state.uploads, action.uploadMeta]
|
|
13
13
|
};
|
|
14
|
+
case assetUploadsActions.UPDATE_UPLOAD:
|
|
15
|
+
return {
|
|
16
|
+
...state,
|
|
17
|
+
uploads: action.uploadMetaArray
|
|
18
|
+
};
|
|
14
19
|
case assetUploadsActions.UPDATE_PERCENT_UPLOADED:
|
|
15
20
|
const newUploads = state.uploads.map((u: any) => {
|
|
16
21
|
if (u.filename === action.filename) {
|
|
@@ -24,6 +29,19 @@ const assetUploads = (state = initialState, action): any => {
|
|
|
24
29
|
...state,
|
|
25
30
|
uploads: newUploads
|
|
26
31
|
};
|
|
32
|
+
case assetUploadsActions.ADD_UPLOAD_ASSET_ID:
|
|
33
|
+
const updateUploads = state.uploads.map((u: any) => {
|
|
34
|
+
if (u.filename === action.filename) {
|
|
35
|
+
return { ...u, assetId: action.assetId };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return u;
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
...state,
|
|
43
|
+
uploads: updateUploads
|
|
44
|
+
};
|
|
27
45
|
case assetUploadsActions.REMOVE_UPLOAD:
|
|
28
46
|
return {
|
|
29
47
|
...state,
|