fix: handle invalid GIF dimensions gracefully

Fix NaN aspectRatio when rehydrating GIFs from drafts by:

1. Adding validation in parseTenorGif to reject invalid dimensions
   (NaN, zero, or negative values)
2. Adding defensive checks in GifEmbed to fallback to 1:1 aspect
   ratio if dimensions are invalid
3. Adding defensive checks in composer ExternalEmbedGif to fallback
   to 16:9 if gif.media_formats.gif.dims is missing or invalid

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Samuel Newman
2026-01-16 11:52:39 +02:00
parent 5a67dc9110
commit f396bac685
4 changed files with 334 additions and 6 deletions
+7 -1
View File
@@ -37,7 +37,13 @@ export const ExternalEmbedGif = ({
)
const loadingStyle: ViewStyle = {
aspectRatio: gif.media_formats.gif.dims[0] / gif.media_formats.gif.dims[1],
aspectRatio: (() => {
const dims = gif.media_formats.gif?.dims
if (dims && dims[0] > 0 && dims[1] > 0) {
return dims[0] / dims[1]
}
return 16 / 9 // Default aspect ratio
})(),
width: '100%',
}