mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-09-01 07:04:07 +00:00
fix time issue
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run
This commit is contained in:
parent
3171541b6a
commit
dafa7603d8
3 changed files with 35 additions and 16 deletions
|
|
@ -340,6 +340,24 @@ class GroupsDao extends DatabaseAccessor<TwonlyDB> with _$GroupsDaoMixin {
|
||||||
.write(GroupsCompanion(lastMessageExchange: Value(clampedLastMessage)));
|
.write(GroupsCompanion(lastMessageExchange: Value(clampedLastMessage)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> increaseMemberLastMessage(
|
||||||
|
String groupId,
|
||||||
|
int contactId,
|
||||||
|
DateTime newLastMessage,
|
||||||
|
) async {
|
||||||
|
final now = clock.now();
|
||||||
|
final clampedLastMessage =
|
||||||
|
newLastMessage.isAfter(now) ? now : newLastMessage;
|
||||||
|
await (update(groupMembers)..where(
|
||||||
|
(t) =>
|
||||||
|
t.groupId.equals(groupId) &
|
||||||
|
t.contactId.equals(contactId) &
|
||||||
|
(t.lastMessage.isNull() |
|
||||||
|
t.lastMessage.isSmallerThanValue(clampedLastMessage)),
|
||||||
|
))
|
||||||
|
.write(GroupMembersCompanion(lastMessage: Value(clampedLastMessage)));
|
||||||
|
}
|
||||||
|
|
||||||
Stream<List<Group>> watchNonDirectGroupsForMember(int contactId) {
|
Stream<List<Group>> watchNonDirectGroupsForMember(int contactId) {
|
||||||
final query =
|
final query =
|
||||||
select(groups).join([
|
select(groups).join([
|
||||||
|
|
|
||||||
|
|
@ -489,22 +489,28 @@ class MessagesDao extends DatabaseAccessor<TwonlyDB> with _$MessagesDaoMixin {
|
||||||
|
|
||||||
await into(messages).insertOnConflictUpdate(insertMessage);
|
await into(messages).insertOnConflictUpdate(insertMessage);
|
||||||
|
|
||||||
|
final msgTime = insertMessage.createdAt.present
|
||||||
|
? insertMessage.createdAt.value
|
||||||
|
: clock.now();
|
||||||
|
|
||||||
await twonlyDB.groupsDao.updateGroup(
|
await twonlyDB.groupsDao.updateGroup(
|
||||||
message.groupId.value,
|
message.groupId.value,
|
||||||
GroupsCompanion(
|
const GroupsCompanion(
|
||||||
lastMessageExchange: Value(clock.now()),
|
archived: Value(false),
|
||||||
archived: const Value(false),
|
deletedContent: Value(false),
|
||||||
deletedContent: const Value(false),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (message.senderId.present) {
|
await twonlyDB.groupsDao.increaseLastMessageExchange(
|
||||||
await twonlyDB.groupsDao.updateMember(
|
message.groupId.value,
|
||||||
|
msgTime,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (message.senderId.present && message.senderId.value != null) {
|
||||||
|
await twonlyDB.groupsDao.increaseMemberLastMessage(
|
||||||
message.groupId.value,
|
message.groupId.value,
|
||||||
message.senderId.value!,
|
message.senderId.value!,
|
||||||
GroupMembersCompanion(
|
msgTime,
|
||||||
lastMessage: Value(clock.now()),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import 'dart:async';
|
||||||
|
|
||||||
import 'package:clock/clock.dart';
|
import 'package:clock/clock.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:twonly/locator.dart';
|
|
||||||
import 'package:twonly/src/database/twonly.db.dart';
|
import 'package:twonly/src/database/twonly.db.dart';
|
||||||
import 'package:twonly/src/utils/misc.dart';
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
|
|
@ -42,12 +41,8 @@ class _LastMessageTimeCompState extends State<LastMessageTimeComp> {
|
||||||
_actionSubscription = null;
|
_actionSubscription = null;
|
||||||
|
|
||||||
if (widget.message != null) {
|
if (widget.message != null) {
|
||||||
_actionSubscription = twonlyDB.messagesDao
|
targetTime = widget.message!.openedAt ?? widget.message!.createdAt;
|
||||||
.watchLastMessageAction(widget.message!.messageId)
|
_updateSeconds();
|
||||||
.listen((lastAction) {
|
|
||||||
targetTime = lastAction?.actionAt ?? widget.message!.createdAt;
|
|
||||||
_updateSeconds();
|
|
||||||
});
|
|
||||||
} else if (widget.dateTime != null) {
|
} else if (widget.dateTime != null) {
|
||||||
targetTime = widget.dateTime;
|
targetTime = widget.dateTime;
|
||||||
_updateSeconds();
|
_updateSeconds();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue