refactor(chat): unify media types and viewer (#1328, #1329) (#1353)

This commit is contained in:
m57 authored and GitHub committed 2026-09-28 12:25:57 +03:00
1 parent af0c508c1f
commit 15bc0e21c7
4 files changed
+64 -64

No files matched your search

@@ -35,6 +35,11 @@ class ImageBytesResolverTest {
assertEquals("heic", ImageBytesResolver.extensionForMime("image/heic"))
assertEquals("svg", ImageBytesResolver.extensionForMime("image/svg+xml"))
assertEquals("img", ImageBytesResolver.extensionForMime("image/unknown"))
assertEquals("heic", ImageBytesResolver.extensionForMime("image/heif"))
assertEquals("bmp", ImageBytesResolver.extensionForMime("image/bmp"))
// Non-image content types stay `.img`, not `.bin`/`.pdf`.
assertEquals("img", ImageBytesResolver.extensionForMime("application/pdf"))
assertEquals("img", ImageBytesResolver.extensionForMime("text/html"))
}
@Test
@@ -30,6 +30,30 @@ class MediaTypesTest {
assertEquals("application/octet-stream", mediaMimeForPath("/tmp/x.weird"))
}
@Test
fun `extension for mime uses one table plus aliases`() {
// Table entries, including params and case.
assertEquals("png", extensionForMime("image/png"))
assertEquals("png", extensionForMime(" IMAGE/PNG; charset=binary"))
assertEquals("ogg", extensionForMime("audio/ogg; codecs=opus"))
assertEquals("mkv", extensionForMime("video/x-matroska"))
assertEquals("pdf", extensionForMime("application/pdf"))
// Aliases win over first-table-match.
assertEquals("jpg", extensionForMime("image/jpeg"))
assertEquals("jpg", extensionForMime("image/jpg"))
assertEquals("heic", extensionForMime("image/heif"))
assertEquals("mp3", extensionForMime("audio/mp3"))
assertEquals("m4a", extensionForMime("audio/x-m4a"))
assertEquals("wav", extensionForMime("audio/wave"))
assertEquals("flac", extensionForMime("application/x-flac"))
assertEquals("ogg", extensionForMime("application/ogg"))
// Family fallbacks.
assertEquals("mp4", extensionForMime("video/unknown"))
assertEquals("mp3", extensionForMime("audio/unknown"))
assertEquals("img", extensionForMime("image/unknown"))
assertEquals("bin", extensionForMime("application/unknown"))
}
@Test
fun `name extraction handles urls and paths`() {
assertEquals("report.pdf", mediaNameFromPath("https://gw/api/files/download?path=%2Ftmp%2Freport.pdf"))