From db9748f380dc04bf7b452e087bb07a17c4ffb8f9 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Sat, 13 May 2023 08:22:11 -0500 Subject: [PATCH] WebXDC file sent with no thread is just a file Don't try to get updates from the non-thread and crash. --- .../eu/siacs/conversations/persistance/DatabaseBackend.java | 5 +++++ .../eu/siacs/conversations/ui/adapter/MessageAdapter.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index 26557c1df6a82a32fc6023be8789789d54bb1a0f..c7d9189e903a16734a47138deaeadeaeea86073f 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -867,6 +867,11 @@ public class DatabaseBackend extends SQLiteOpenHelper { } public WebxdcUpdate findLastWebxdcUpdate(Message message) { + if (message.getThread() == null) { + Log.w(Config.LOGTAG, "WebXDC message with no thread!"); + return null; + } + SQLiteDatabase db = this.getReadableDatabase(); String[] selectionArgs = {message.getConversation().getUuid(), message.getThread().getContent()}; Cursor cursor = db.query("cheogram.webxdc_updates", null, diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 97531f8057f68f001b85bbc4821c36b2001ed30b..476224069339229d37cc0e0b7aae778c592dddd0 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -1040,7 +1040,7 @@ public class MessageAdapter extends ArrayAdapter { displayMediaPreviewMessage(viewHolder, message, darkBackground, type); } else if (message.getFileParams().runtime > 0) { displayAudioMessage(viewHolder, message, darkBackground, type); - } else if ("application/xdc+zip".equals(message.getFileParams().getMediaType()) && message.getConversation() instanceof Conversation) { + } else if ("application/xdc+zip".equals(message.getFileParams().getMediaType()) && message.getConversation() instanceof Conversation && message.getThread() != null) { displayWebxdcMessage(viewHolder, message, darkBackground, type); } else { displayOpenableMessage(viewHolder, message, darkBackground, type);