moved snapImage logic inside loadeddata callback
This commit is contained in:
parent
b375992d80
commit
18b089ccf5
|
@ -5,6 +5,7 @@ import EXIF from 'exif-js';
|
||||||
import { fileAttribute } from './fileService';
|
import { fileAttribute } from './fileService';
|
||||||
import { collection, CollectionAndItsLatestFile } from './collectionService';
|
import { collection, CollectionAndItsLatestFile } from './collectionService';
|
||||||
import { FILE_TYPE } from 'pages/gallery';
|
import { FILE_TYPE } from 'pages/gallery';
|
||||||
|
import { error } from 'console';
|
||||||
const CryptoWorker: any =
|
const CryptoWorker: any =
|
||||||
typeof window !== 'undefined' &&
|
typeof window !== 'undefined' &&
|
||||||
Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' }));
|
Comlink.wrap(new Worker('worker/crypto.worker.js', { type: 'module' }));
|
||||||
|
@ -446,20 +447,7 @@ class UploadService {
|
||||||
await new Promise(async (resolve) => {
|
await new Promise(async (resolve) => {
|
||||||
let video = document.createElement('video');
|
let video = document.createElement('video');
|
||||||
imageURL = URL.createObjectURL(file);
|
imageURL = URL.createObjectURL(file);
|
||||||
var timeupdate = function () {
|
|
||||||
if (snapImage()) {
|
|
||||||
video.removeEventListener('timeupdate', timeupdate);
|
|
||||||
video.pause();
|
|
||||||
resolve(null);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
video.addEventListener('loadeddata', function () {
|
video.addEventListener('loadeddata', function () {
|
||||||
if (snapImage()) {
|
|
||||||
video.removeEventListener('timeupdate', timeupdate);
|
|
||||||
resolve(null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var snapImage = function () {
|
|
||||||
canvas.width = THUMBNAIL_WIDTH;
|
canvas.width = THUMBNAIL_WIDTH;
|
||||||
canvas.height = THUMBNAIL_HEIGHT;
|
canvas.height = THUMBNAIL_HEIGHT;
|
||||||
canvas_CTX.drawImage(
|
canvas_CTX.drawImage(
|
||||||
|
@ -469,11 +457,8 @@ class UploadService {
|
||||||
THUMBNAIL_WIDTH,
|
THUMBNAIL_WIDTH,
|
||||||
THUMBNAIL_HEIGHT
|
THUMBNAIL_HEIGHT
|
||||||
);
|
);
|
||||||
var image = canvas.toDataURL();
|
resolve(null);
|
||||||
var success = image.length;
|
});
|
||||||
return success;
|
|
||||||
};
|
|
||||||
video.addEventListener('timeupdate', timeupdate);
|
|
||||||
video.preload = 'metadata';
|
video.preload = 'metadata';
|
||||||
video.src = imageURL;
|
video.src = imageURL;
|
||||||
// Load video in Safari / IE11
|
// Load video in Safari / IE11
|
||||||
|
@ -483,6 +468,9 @@ class UploadService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
URL.revokeObjectURL(imageURL);
|
URL.revokeObjectURL(imageURL);
|
||||||
|
if (canvas.toDataURL().length == 0) {
|
||||||
|
throw new Error('');
|
||||||
|
}
|
||||||
let thumbnailBlob: Blob = file,
|
let thumbnailBlob: Blob = file,
|
||||||
attempts = 0;
|
attempts = 0;
|
||||||
let quality = 1;
|
let quality = 1;
|
||||||
|
@ -506,7 +494,7 @@ class UploadService {
|
||||||
const thumbnail = this.getUint8ArrayView(thumbnailBlob);
|
const thumbnail = this.getUint8ArrayView(thumbnailBlob);
|
||||||
return thumbnail;
|
return thumbnail;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error generatin thumbnail ' + e);
|
console.log('Error generating thumbnail ' + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue