delete messages after 24h

This commit is contained in:
otsmr 2025-03-16 18:50:54 +01:00
parent 9097318b52
commit 8fbb5b001c
3 changed files with 30 additions and 24 deletions

View file

@ -85,18 +85,25 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
for (final message in widget.messages) {
if (icons.length == 2) break;
if (message.contentJson == null) continue;
MessageSendState state = messageSendStateFromMessage(message);
late Color color;
if (message.contentJson == null) {
color =
getMessageColorFromType(TextMessageContent(text: ""), twonlyColor);
} else {
MessageContent? content = MessageContent.fromJson(
message.kind, jsonDecode(message.contentJson!));
if (content == null) continue;
color = getMessageColorFromType(content, twonlyColor);
}
if (kindsAlreadyShown.contains(message.kind)) continue;
kindsAlreadyShown.add(message.kind);
Widget icon = Placeholder();
MessageSendState state = messageSendStateFromMessage(message);
MessageContent? content = MessageContent.fromJson(
message.kind, jsonDecode(message.contentJson!));
if (content == null) continue;
Color color = getMessageColorFromType(content, twonlyColor);
switch (state) {
case MessageSendState.receivedOpened:
icon = Icon(Icons.crop_square, size: 14, color: color);

View file

@ -54,11 +54,25 @@ class TwonlyDatabase extends _$TwonlyDatabase {
Stream<List<Message>> watchAllMessagesFrom(int contactId) {
return (select(messages)
..where((t) => t.contactId.equals(contactId))
..where((t) =>
t.contactId.equals(contactId) &
t.contentJson.isNotNull() &
(t.openedAt.isNull() |
t.openedAt.isBiggerThanValue(
DateTime.now().subtract(Duration(days: 1)))))
..orderBy([(t) => OrderingTerm.desc(t.sendAt)]))
.watch();
}
Future removeOldMessages() {
return (update(messages)
..where((t) =>
t.openedAt.isSmallerThanValue(
DateTime.now().subtract(Duration(days: 1))) &
t.kind.equals(MessageKind.textMessage.name)))
.write(MessagesCompanion(contentJson: Value(null)));
}
Future<List<Message>> getAllMessagesPendingDownloading() {
return (select(messages)
..where(
@ -201,28 +215,12 @@ class TwonlyDatabase extends _$TwonlyDatabase {
flameCounter: Value(flameCounter),
),
);
// twonlyDatabase.updateContact(
// fromUserId,
// ContactsCompanion(
// lastMessageReceived: Value(message.timestamp),
// ),
// );
}
SingleOrNullSelectable<Contact> getContactByUserId(int userId) {
return select(contacts)..where((t) => t.userId.equals(userId));
}
// Stream<int> getMaxTotalMediaCounter() {
// return customSelect(
// 'SELECT MAX(totalMediaCounter) AS maxTotal FROM contacts',
// readsFrom: {contacts},
// ).watchSingle().asyncMap((result) {
// return result.read<int>('maxTotal');
// });
// }
Future deleteContactByUserId(int userId) {
return (delete(contacts)..where((t) => t.userId.equals(userId))).go();
}

View file

@ -158,6 +158,7 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
}
Future initStreams() async {
await twonlyDatabase.removeOldMessages();
Stream<Contact> contact = twonlyDatabase.watchContact(widget.userid);
userSub = contact.listen((contact) {
setState(() {