mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 12:48:41 +00:00
delete messages after 24h
This commit is contained in:
parent
9097318b52
commit
8fbb5b001c
3 changed files with 30 additions and 24 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue