aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service/content_item_store.vala
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2019-12-22 04:10:53 +0100
committerMarvin W <git@larma.de>2019-12-23 16:58:53 +0100
commita0a956ee0878d24bd06be7f5d75dc4ccd4e7901d (patch)
treecbb079649066c2001b6d6881137108e70eed9d3f /libdino/src/service/content_item_store.vala
parent3218dc0211ac717230fe03fad82681a626d968b5 (diff)
downloaddino-a0a956ee0878d24bd06be7f5d75dc4ccd4e7901d.tar.gz
dino-a0a956ee0878d24bd06be7f5d75dc4ccd4e7901d.zip
Properly check Jids everywhere
Diffstat (limited to 'libdino/src/service/content_item_store.vala')
-rw-r--r--libdino/src/service/content_item_store.vala24
1 files changed, 17 insertions, 7 deletions
diff --git a/libdino/src/service/content_item_store.vala b/libdino/src/service/content_item_store.vala
index 7baba1fd..03278b4b 100644
--- a/libdino/src/service/content_item_store.vala
+++ b/libdino/src/service/content_item_store.vala
@@ -49,19 +49,29 @@ public class ContentItemStore : StreamInteractionModule, Object {
case 1:
RowOption row_option = db.message.select().with(db.message.id, "=", foreign_id).row();
if (row_option.is_present()) {
- Message message = stream_interactor.get_module(MessageStorage.IDENTITY).get_message_by_id(foreign_id, conversation);
+ Message? message = stream_interactor.get_module(MessageStorage.IDENTITY).get_message_by_id(foreign_id, conversation);
if (message == null) {
- message = new Message.from_row(db, row_option.inner);
+ try {
+ message = new Message.from_row(db, row_option.inner);
+ } catch (InvalidJidError e) {
+ warning("Ignoring message with invalid Jid: %s", e.message);
+ }
+ }
+ if (message != null) {
+ items.add(new MessageItem(message, conversation, row[db.content_item.id]));
}
- items.add(new MessageItem(message, conversation, row[db.content_item.id]));
}
break;
case 2:
RowOption row_option = db.file_transfer.select().with(db.file_transfer.id, "=", foreign_id).row();
if (row_option.is_present()) {
- string storage_dir = FileManager.get_storage_dir();
- FileTransfer file_transfer = new FileTransfer.from_row(db, row_option.inner, storage_dir);
- items.add(new FileItem(file_transfer, row[db.content_item.id]));
+ try {
+ string storage_dir = FileManager.get_storage_dir();
+ FileTransfer file_transfer = new FileTransfer.from_row(db, row_option.inner, storage_dir);
+ items.add(new FileItem(file_transfer, row[db.content_item.id]));
+ } catch (InvalidJidError e) {
+ warning("Ignoring file transfer with invalid Jid: %s", e.message);
+ }
}
break;
}
@@ -256,7 +266,7 @@ public class FileItem : ContentItem {
public Conversation conversation;
public FileItem(FileTransfer file_transfer, int id) {
- Jid jid = file_transfer.direction == FileTransfer.DIRECTION_SENT ? file_transfer.account.bare_jid.with_resource(file_transfer.account.resourcepart) : file_transfer.counterpart;
+ Jid jid = file_transfer.direction == FileTransfer.DIRECTION_SENT ? file_transfer.account.full_jid : file_transfer.counterpart;
Entities.Message.Marked mark = Entities.Message.Marked.NONE;
if (file_transfer.direction == FileTransfer.DIRECTION_SENT) {
mark = file_to_message_state(file_transfer.state);