mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 16: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) {
|
for (final message in widget.messages) {
|
||||||
if (icons.length == 2) break;
|
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;
|
if (kindsAlreadyShown.contains(message.kind)) continue;
|
||||||
kindsAlreadyShown.add(message.kind);
|
kindsAlreadyShown.add(message.kind);
|
||||||
|
|
||||||
Widget icon = Placeholder();
|
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) {
|
switch (state) {
|
||||||
case MessageSendState.receivedOpened:
|
case MessageSendState.receivedOpened:
|
||||||
icon = Icon(Icons.crop_square, size: 14, color: color);
|
icon = Icon(Icons.crop_square, size: 14, color: color);
|
||||||
|
|
|
||||||
|
|
@ -54,11 +54,25 @@ class TwonlyDatabase extends _$TwonlyDatabase {
|
||||||
|
|
||||||
Stream<List<Message>> watchAllMessagesFrom(int contactId) {
|
Stream<List<Message>> watchAllMessagesFrom(int contactId) {
|
||||||
return (select(messages)
|
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)]))
|
..orderBy([(t) => OrderingTerm.desc(t.sendAt)]))
|
||||||
.watch();
|
.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() {
|
Future<List<Message>> getAllMessagesPendingDownloading() {
|
||||||
return (select(messages)
|
return (select(messages)
|
||||||
..where(
|
..where(
|
||||||
|
|
@ -201,28 +215,12 @@ class TwonlyDatabase extends _$TwonlyDatabase {
|
||||||
flameCounter: Value(flameCounter),
|
flameCounter: Value(flameCounter),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// twonlyDatabase.updateContact(
|
|
||||||
// fromUserId,
|
|
||||||
// ContactsCompanion(
|
|
||||||
// lastMessageReceived: Value(message.timestamp),
|
|
||||||
// ),
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SingleOrNullSelectable<Contact> getContactByUserId(int userId) {
|
SingleOrNullSelectable<Contact> getContactByUserId(int userId) {
|
||||||
return select(contacts)..where((t) => t.userId.equals(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) {
|
Future deleteContactByUserId(int userId) {
|
||||||
return (delete(contacts)..where((t) => t.userId.equals(userId))).go();
|
return (delete(contacts)..where((t) => t.userId.equals(userId))).go();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -158,6 +158,7 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future initStreams() async {
|
Future initStreams() async {
|
||||||
|
await twonlyDatabase.removeOldMessages();
|
||||||
Stream<Contact> contact = twonlyDatabase.watchContact(widget.userid);
|
Stream<Contact> contact = twonlyDatabase.watchContact(widget.userid);
|
||||||
userSub = contact.listen((contact) {
|
userSub = contact.listen((contact) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue