Fix profile picture preview under CSP

This commit is contained in:
Rafael Foster
2026-04-27 09:04:54 -03:00
parent 7e4db48a9f
commit 2dd38bfae3
+6 -7
View File
@@ -100,8 +100,9 @@ function readImageAsDataUrl(file) {
return reject(new Error(t('settings.profilePictureFileTooLarge'))); return reject(new Error(t('settings.profilePictureFileTooLarge')));
} }
const reader = new FileReader();
reader.onload = () => {
const img = new Image(); const img = new Image();
const objectUrl = URL.createObjectURL(file);
img.onload = () => { img.onload = () => {
try { try {
const maxSize = 512; const maxSize = 512;
@@ -114,22 +115,20 @@ function readImageAsDataUrl(file) {
const ctx = canvas.getContext('2d'); const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, width, height); ctx.drawImage(img, 0, 0, width, height);
const dataUrl = canvas.toDataURL('image/jpeg', 0.86); const dataUrl = canvas.toDataURL('image/jpeg', 0.86);
URL.revokeObjectURL(objectUrl);
if (dataUrl.length > MAX_AVATAR_DATA_LENGTH) { if (dataUrl.length > MAX_AVATAR_DATA_LENGTH) {
reject(new Error(t('settings.profilePictureTooLarge'))); reject(new Error(t('settings.profilePictureTooLarge')));
} else { } else {
resolve(dataUrl); resolve(dataUrl);
} }
} catch (err) { } catch (err) {
URL.revokeObjectURL(objectUrl);
reject(err); reject(err);
} }
}; };
img.onerror = () => { img.onerror = () => reject(new Error(t('settings.profilePictureReadError')));
URL.revokeObjectURL(objectUrl); img.src = reader.result;
reject(new Error(t('settings.profilePictureReadError')));
}; };
img.src = objectUrl; reader.onerror = () => reject(new Error(t('settings.profilePictureReadError')));
reader.readAsDataURL(file);
}); });
} }