aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandrewdkim <adkim414@gmail.com>2019-11-05 17:01:38 -0500
committerandrewdkim <adkim414@gmail.com>2019-11-05 17:01:38 -0500
commit40676ec39b9ad706c926b0a07e6d0dcbf9ae9ba5 (patch)
tree490d64f8da20ec4c14fcf4fb82740dfc04cca4d7
parent59e0e66dd7054f0770690c2e098e8e59b99ef463 (diff)
parentbcc45bf8d448e56935172398a52327c68ff6117e (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into webcam_mohammad
-rw-r--r--src/client/util/Import & Export/DirectoryImportBox.tsx6
-rw-r--r--src/server/apis/google/GooglePhotosUploadUtils.ts17
-rw-r--r--src/server/index.ts17
3 files changed, 20 insertions, 20 deletions
diff --git a/src/client/util/Import & Export/DirectoryImportBox.tsx b/src/client/util/Import & Export/DirectoryImportBox.tsx
index f27d05487..5904088fc 100644
--- a/src/client/util/Import & Export/DirectoryImportBox.tsx
+++ b/src/client/util/Import & Export/DirectoryImportBox.tsx
@@ -108,7 +108,8 @@ export default class DirectoryImportBox extends React.Component<FieldViewProps>
runInAction(() => this.phase = `Internal: uploading ${this.quota - this.completed} files to Dash...`);
- const uploads = await BatchedArray.from(validated, { batchSize: 15 }).batchedMapAsync(async batch => {
+ const batched = BatchedArray.from(validated, { batchSize: 15 });
+ const uploads = await batched.batchedMapAsync<ImageUploadResponse>(async (batch, collector) => {
const formData = new FormData();
batch.forEach(file => {
@@ -117,9 +118,8 @@ export default class DirectoryImportBox extends React.Component<FieldViewProps>
formData.append(Utils.GenerateGuid(), file);
});
- const responses = await Identified.PostFormDataToServer(RouteStore.upload, formData);
+ collector.push(...(await Identified.PostFormDataToServer(RouteStore.upload, formData)));
runInAction(() => this.completed += batch.length);
- return responses as ImageUploadResponse[];
});
await Promise.all(uploads.map(async upload => {
diff --git a/src/server/apis/google/GooglePhotosUploadUtils.ts b/src/server/apis/google/GooglePhotosUploadUtils.ts
index 4a67e57cc..36256822c 100644
--- a/src/server/apis/google/GooglePhotosUploadUtils.ts
+++ b/src/server/apis/google/GooglePhotosUploadUtils.ts
@@ -1,7 +1,8 @@
+
import request = require('request-promise');
import { GoogleApiServerUtils } from './GoogleApiServerUtils';
import * as path from 'path';
-import { MediaItemCreationResult } from './SharedTypes';
+import { MediaItemCreationResult, NewMediaItemResult } from './SharedTypes';
import { NewMediaItem } from "../../index";
import { BatchedArray, TimeUnit } from 'array-batcher';
import { DashUploadUtils } from '../../DashUploadUtils';
@@ -56,10 +57,11 @@ export namespace GooglePhotosUploadUtils {
}));
};
- export const CreateMediaItems = async (newMediaItems: NewMediaItem[], album?: { id: string }): Promise<MediaItemCreationResult> => {
- const newMediaItemResults = await BatchedArray.from(newMediaItems, { batchSize: 50 }).batchedMapPatientInterval(
+ export const CreateMediaItems = async (newMediaItems: NewMediaItem[], album?: { id: string }): Promise<NewMediaItemResult[]> => {
+ const batched = BatchedArray.from(newMediaItems, { batchSize: 50 });
+ return batched.batchedMapPatientInterval(
{ magnitude: 100, unit: TimeUnit.Milliseconds },
- async (batch: NewMediaItem[]) => {
+ async (batch, collector) => {
const parameters = {
method: 'POST',
headers: headers('json'),
@@ -68,18 +70,17 @@ export namespace GooglePhotosUploadUtils {
json: true
};
album && (parameters.body.albumId = album.id);
- return (await new Promise<MediaItemCreationResult>((resolve, reject) => {
+ collector.push(...(await new Promise<NewMediaItemResult[]>((resolve, reject) => {
request(parameters, (error, _response, body) => {
if (error) {
reject(error);
} else {
- resolve(body);
+ resolve(body.newMediaItemResults);
}
});
- })).newMediaItemResults;
+ })));
}
);
- return { newMediaItemResults };
};
} \ No newline at end of file
diff --git a/src/server/index.ts b/src/server/index.ts
index 428ebace7..e33fd4b71 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -1097,23 +1097,22 @@ addSecureRoute({
let failed: number[] = [];
- const newMediaItems = await BatchedArray.from<GooglePhotosUploadUtils.MediaInput>(media, { batchSize: 25 }).batchedMapPatientInterval(
+ const batched = BatchedArray.from<GooglePhotosUploadUtils.MediaInput>(media, { batchSize: 25 });
+ const newMediaItems = await batched.batchedMapPatientInterval<NewMediaItem>(
{ magnitude: 100, unit: TimeUnit.Milliseconds },
- async (batch: GooglePhotosUploadUtils.MediaInput[]) => {
- const newMediaItems: NewMediaItem[] = [];
+ async (batch, collector) => {
for (let index = 0; index < batch.length; index++) {
- const element = batch[index];
- const uploadToken = await GooglePhotosUploadUtils.DispatchGooglePhotosUpload(element.url);
+ const { url, description } = batch[index];
+ const uploadToken = await GooglePhotosUploadUtils.DispatchGooglePhotosUpload(url);
if (!uploadToken) {
failed.push(index);
} else {
- newMediaItems.push({
- description: element.description,
+ collector.push({
+ description,
simpleMediaItem: { uploadToken }
});
}
}
- return newMediaItems;
}
);
@@ -1123,7 +1122,7 @@ addSecureRoute({
}
GooglePhotosUploadUtils.CreateMediaItems(newMediaItems, req.body.album).then(
- result => _success(res, { results: result.newMediaItemResults, failed }),
+ results => _success(res, { results, failed }),
error => _error(res, mediaError, error)
);
}