Merge pull request #743 from ente-io/clear-object-urls-after-use

Clear object urls after use
This commit is contained in:
Abhinav Kumar 2022-10-18 18:04:38 +05:30 committed by GitHub
commit 3c028f5655
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 18 deletions

View file

@ -62,8 +62,7 @@ export async function updateFileCreationDateInEXIF(
updatedDate: Date
) {
try {
const fileURL = URL.createObjectURL(fileBlob);
let imageDataURL = await convertImageToDataURL(reader, fileURL);
let imageDataURL = await convertImageToDataURL(reader, fileBlob);
imageDataURL =
'data:image/jpeg;base64' +
imageDataURL.slice(imageDataURL.indexOf(','));
@ -83,8 +82,7 @@ export async function updateFileCreationDateInEXIF(
}
}
async function convertImageToDataURL(reader: FileReader, url: string) {
const blob = await fetch(url).then((r) => r.blob());
async function convertImageToDataURL(reader: FileReader, blob: Blob) {
const dataURL = await new Promise<string>((resolve) => {
reader.onload = () => resolve(reader.result as string);
reader.readAsDataURL(blob);

View file

@ -117,6 +117,7 @@ export async function generateImageThumbnail(file: File, isHEIC: boolean) {
await new Promise((resolve, reject) => {
image.onload = () => {
try {
URL.revokeObjectURL(imageURL);
const imageDimension = {
width: image.width,
height: image.height,
@ -165,6 +166,7 @@ export async function generateVideoThumbnail(file: File) {
videoURL = URL.createObjectURL(file);
video.addEventListener('loadeddata', function () {
try {
URL.revokeObjectURL(videoURL);
if (!video) {
throw Error('video load failed');
}

View file

@ -32,16 +32,8 @@ export function downloadAsFile(filename: string, content: string) {
const file = new Blob([content], {
type: 'text/plain',
});
const a = document.createElement('a');
a.href = URL.createObjectURL(file);
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
a.remove();
const fileURL = URL.createObjectURL(file);
downloadUsingAnchor(fileURL, filename);
}
export async function downloadFile(
@ -116,10 +108,6 @@ export async function downloadFile(
tempURL = URL.createObjectURL(fileBlob);
downloadUsingAnchor(tempURL, file.metadata.title);
}
tempURL && URL.revokeObjectURL(tempURL);
tempImageURL && URL.revokeObjectURL(tempImageURL);
tempVideoURL && URL.revokeObjectURL(tempVideoURL);
}
function downloadUsingAnchor(link: string, name: string) {
@ -129,6 +117,7 @@ function downloadUsingAnchor(link: string, name: string) {
a.download = name;
document.body.appendChild(a);
a.click();
URL.revokeObjectURL(link);
a.remove();
}