diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 4d46d0c8b1db1d13363a901a6d58d3abc5b66639..cf525bfa1dd0fdce3b903d94f7606aa78609ac80 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -77,6 +77,11 @@ import java.util.Date; import java.util.List; import java.util.Locale; import java.util.UUID; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import org.tomlj.Toml; +import org.tomlj.TomlTable; import io.ipfs.cid.Cid; @@ -2061,6 +2066,19 @@ public class FileBackend { } else if (audio) { fileParams.runtime = getMediaRuntime(file); } + if ("application/xdc+zip".equals(mime)) { + try { + final var zip = new ZipFile(file); + final ZipEntry manifestEntry = zip == null ? null : zip.getEntry("manifest.toml"); + if (manifestEntry != null) { + final var manifest = Toml.parse(zip.getInputStream(manifestEntry)); + if (manifest != null) { + final var name = manifest.getString("name"); + if (name != null) fileParams.setName(name); + } + } + } catch (final IOException e2) { } + } try { Bitmap thumb = getThumbnailBitmap(file, mXmppConnectionService.getResources(), 100, file.getAbsolutePath() + " x 100"); if (thumb != null) {