filter reuploaded images

This commit is contained in:
otsmr 2026-07-07 22:44:20 +02:00
parent 511490b649
commit 43390871c2

View file

@ -91,19 +91,28 @@ class MessagesDao extends DatabaseAccessor<TwonlyDB> with _$MessagesDaoMixin {
milliseconds: group!.deleteMessagesAfterMilliseconds, milliseconds: group!.deleteMessagesAfterMilliseconds,
), ),
); );
return (select(messages) final query = select(messages).join([
leftOuterJoin(
mediaFiles,
mediaFiles.mediaId.equalsExp(messages.mediaId),
),
])
..where( ..where(
(t) => messages.groupId.equals(groupId) &
t.groupId.equals(groupId) &
// messages in groups will only be removed in case all members have received it... // messages in groups will only be removed in case all members have received it...
// so ensuring that this message is not shown in the messages anymore // so ensuring that this message is not shown in the messages anymore
(t.openedAt.isBiggerThanValue(deletionTime) | (messages.openedAt.isBiggerThanValue(deletionTime) |
t.openedAt.isNull() | messages.openedAt.isNull() |
t.mediaStored.equals(true)), messages.mediaStored.equals(true)) &
(mediaFiles.downloadState
.equals(DownloadState.reuploadRequested.name)
.not() |
mediaFiles.downloadState.isNull()),
) )
..orderBy([(t) => OrderingTerm.desc(t.createdAt)]) ..orderBy([OrderingTerm.desc(messages.createdAt)])
..limit(1)) ..limit(1);
.watchSingleOrNull();
return query.map((row) => row.readTable(messages)).watchSingleOrNull();
} }
Future<Stream<List<Message>>> watchByGroupId(String groupId) async { Future<Stream<List<Message>>> watchByGroupId(String groupId) async {