aboutsummaryrefslogtreecommitdiff
path: root/libdino/src
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src')
-rw-r--r--libdino/src/service/database.vala14
1 files changed, 8 insertions, 6 deletions
diff --git a/libdino/src/service/database.vala b/libdino/src/service/database.vala
index 953fa0b1..29c6f3ee 100644
--- a/libdino/src/service/database.vala
+++ b/libdino/src/service/database.vala
@@ -282,15 +282,19 @@ public class Database : Qlite.Database {
public bool contains_message(Message query_message, Account account) {
int jid_id = get_jid_id(query_message.counterpart);
- return message.select()
+ QueryBuilder builder = message.select()
.with(message.account_id, "=", account.id)
- .with(message.stanza_id, "=", query_message.stanza_id)
.with(message.counterpart_id, "=", jid_id)
.with(message.counterpart_resource, "=", query_message.counterpart.resourcepart)
.with(message.body, "=", query_message.body)
.with(message.time, "<", (long) query_message.time.add_minutes(1).to_unix())
- .with(message.time, ">", (long) query_message.time.add_minutes(-1).to_unix())
- .count() > 0;
+ .with(message.time, ">", (long) query_message.time.add_minutes(-1).to_unix());
+ if (query_message.stanza_id != null) {
+ builder.with(message.stanza_id, "=", query_message.stanza_id);
+ } else {
+ builder.with_null(message.stanza_id);
+ }
+ return builder.count() > 0;
}
public bool contains_message_by_stanza_id(string stanza_id, Account account) {
@@ -347,8 +351,6 @@ public class Database : Qlite.Database {
.value(conversation.active, new_conversation.active);
if (new_conversation.last_active != null) {
insert.value(conversation.last_active, (long) new_conversation.last_active.to_unix());
- } else {
- insert.value_null(conversation.last_active);
}
new_conversation.id = (int) insert.perform();
new_conversation.notify.connect(on_conversation_update);