From d04cb12e009c58c9e0416bc7a47de34aaab7907d Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 2 Sep 2023 20:34:15 +0200 Subject: [PATCH] minor fix --- .../aves/model/provider/ContentImageProvider.kt | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ContentImageProvider.kt b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ContentImageProvider.kt index 368035721..4e86af1e8 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ContentImageProvider.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/model/provider/ContentImageProvider.kt @@ -38,11 +38,6 @@ internal class ContentImageProvider : ImageProvider() { } val mimeType = extractorMimeType ?: sourceMimeType - if (mimeType == null) { - callback.onFailure(Exception("MIME type is null for uri=$uri")) - return - } - val fields: FieldMap = hashMapOf( "origin" to SourceEntry.ORIGIN_UNKNOWN_CONTENT, "uri" to uri.toString(), @@ -57,6 +52,8 @@ internal class ContentImageProvider : ImageProvider() { cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME).let { if (it != -1) fields["title"] = cursor.getString(it) } cursor.getColumnIndex(OpenableColumns.SIZE).let { if (it != -1) fields["sizeBytes"] = cursor.getLong(it) } cursor.getColumnIndex(MediaStore.MediaColumns.DATA).let { if (it != -1) fields["path"] = cursor.getString(it) } + // mime type fallback if it was not provided and not found via `metadata-extractor` + cursor.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE).let { if (it != -1 && mimeType == null) fields["sourceMimeType"] = cursor.getString(it) } cursor.close() } } catch (e: Exception) { @@ -64,6 +61,11 @@ internal class ContentImageProvider : ImageProvider() { return } + if (fields["sourceMimeType"] == null) { + callback.onFailure(Exception("Failed to find MIME type for uri=$uri")) + return + } + val entry = SourceEntry(fields).fillPreCatalogMetadata(context) if (entry.isSized || entry.isSvg || entry.isVideo) { callback.onSuccess(entry.toMap())