exifData = await readExifFromBytes(imageData);
final int orientation =
exifData['Image Orientation']?.values.firstAsInt() ?? 1;
+ final format = imagePath.split('.').last.toLowerCase();
if (orientation > 1 && includeRgbaBytes) {
- _logger.severe("Image EXIF orientation $orientation is not supported");
- throw Exception(
- 'UnhandledExifOrientation: exif orientation $orientation',
- );
+ if (format == 'heic' || format == 'heif') {
+ _logger
+ .info("Decoding HEIC/HEIF image with EXIF orientation $orientation");
+ } else {
+ _logger.warning(
+ "Decoding image with EXIF orientation $orientation, for format $format",
+ );
+ }
}
late Image image;
try {
image = await decodeImageFromData(imageData);
} catch (e, s) {
- final format = imagePath.split('.').last;
_logger.info(
'Cannot decode $format on ${Platform.isAndroid ? "Android" : "iOS"}, converting to jpeg',
);
diff --git a/web/.prettierrc.json b/web/.prettierrc.json
index 61cbc54727..bac8f0c074 100644
--- a/web/.prettierrc.json
+++ b/web/.prettierrc.json
@@ -1,6 +1,5 @@
{
"tabWidth": 4,
- "proseWrap": "always",
"objectWrap": "collapse",
"plugins": [
"prettier-plugin-organize-imports",
diff --git a/web/packages/base/locales/lt-LT/translation.json b/web/packages/base/locales/lt-LT/translation.json
index 63c2068b73..b26aebb96d 100644
--- a/web/packages/base/locales/lt-LT/translation.json
+++ b/web/packages/base/locales/lt-LT/translation.json
@@ -162,7 +162,7 @@
"ok": "Gerai",
"success": "Pavyko",
"error": "Klaida",
- "note": "",
+ "note": "Pastaba",
"offline_message": "Esate neprisijungę. Rodomi prisiminimai iš podėlio.",
"install": "Diegti",
"install_mobile_app": "Įdiekite mūsų „Android“ arba „iOS“ programą, kad automatiškai sukurtumėte atsargines visų nuotraukų kopijas",
@@ -685,5 +685,5 @@
"person_favorites": "{{name}} mėgstami",
"shared_favorites": "Bendrinami mėgstami",
"added_by_name": "Įtraukė {{name}}",
- "unowned_files_not_processed": ""
+ "unowned_files_not_processed": "Kiti naudotojai pridėti failai nebuvo apdoroti"
}
diff --git a/web/packages/base/locales/vi-VN/translation.json b/web/packages/base/locales/vi-VN/translation.json
index d4a6197a5a..f3dec27f76 100644
--- a/web/packages/base/locales/vi-VN/translation.json
+++ b/web/packages/base/locales/vi-VN/translation.json
@@ -283,7 +283,7 @@
"disable_maps_confirm_message": "Ảnh của bạn sẽ thôi hiển thị trên bản đồ thế giới.
Bạn có thể bật tính năng này bất cứ lúc nào từ Cài đặt.
",
"details": "Chi tiết",
"view_exif": "Xem thông số Exif",
- "no_exif": "No Exif data",
+ "no_exif": "Không có Exif",
"exif": "Exif",
"two_factor": "Xác thực 2 bước",
"two_factor_authentication": "Xác thực 2 bước",
diff --git a/web/packages/media/magic-metadata.ts b/web/packages/media/magic-metadata.ts
index f5c308e7af..6e2857f97f 100644
--- a/web/packages/media/magic-metadata.ts
+++ b/web/packages/media/magic-metadata.ts
@@ -1,4 +1,5 @@
import { decryptMetadataJSON, encryptMetadataJSON } from "ente-base/crypto";
+import { nullishToZero } from "ente-utils/transform";
import { z } from "zod/v4";
/**
@@ -10,7 +11,7 @@ import { z } from "zod/v4";
*/
export const RemoteMagicMetadata = z.object({
version: z.number(),
- count: z.number(),
+ count: z.number().nullish().transform(nullishToZero),
data: z.string(),
header: z.string(),
});