mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 20:58:41 +00:00
show multiple received messages stacked
This commit is contained in:
parent
0b084f795a
commit
644e5125d8
6 changed files with 178 additions and 67 deletions
|
|
@ -149,7 +149,17 @@ class _MessageSendStateIconState extends State<MessageSendStateIcon> {
|
||||||
|
|
||||||
if (icons.length == 2) {
|
if (icons.length == 2) {
|
||||||
icon = Stack(
|
icon = Stack(
|
||||||
children: icons,
|
alignment: Alignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
// First icon (bottom icon)
|
||||||
|
icons[0],
|
||||||
|
Positioned(
|
||||||
|
top: 5.0,
|
||||||
|
left: 5.0,
|
||||||
|
child: icons[1],
|
||||||
|
),
|
||||||
|
// Second icon (top icon, slightly offset)
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,13 +42,13 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
|
|
||||||
Value<DateTime?> lastMessageSend = Value.absent();
|
Value<DateTime?> lastMessageSend = Value.absent();
|
||||||
Value<DateTime?> lastMessageReceived = Value.absent();
|
Value<DateTime?> lastMessageReceived = Value.absent();
|
||||||
Value<DateTime?> lastMessage = Value.absent();
|
Value<DateTime?> lastFlameCounterChange = Value.absent();
|
||||||
|
|
||||||
if (contact.lastMessage != null) {
|
if (contact.lastFlameCounterChange != null) {
|
||||||
final now = DateTime.now();
|
final now = DateTime.now();
|
||||||
final startOfToday = DateTime(now.year, now.month, now.day);
|
final startOfToday = DateTime(now.year, now.month, now.day);
|
||||||
|
|
||||||
if (contact.lastMessage!.isBefore(startOfToday)) {
|
if (contact.lastFlameCounterChange!.isBefore(startOfToday)) {
|
||||||
// last flame update was yesterday. check if it can be updated.
|
// last flame update was yesterday. check if it can be updated.
|
||||||
bool updateFlame = false;
|
bool updateFlame = false;
|
||||||
if (received) {
|
if (received) {
|
||||||
|
|
@ -62,12 +62,12 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
}
|
}
|
||||||
if (updateFlame) {
|
if (updateFlame) {
|
||||||
flameCounter += 1;
|
flameCounter += 1;
|
||||||
lastMessage = Value(timestamp);
|
lastFlameCounterChange = Value(timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// There where no message until no...
|
// There where no message until no...
|
||||||
lastMessage = Value(timestamp);
|
lastFlameCounterChange = Value(timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (received) {
|
if (received) {
|
||||||
|
|
@ -79,7 +79,7 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
return (update(contacts)..where((t) => t.userId.equals(contactId))).write(
|
return (update(contacts)..where((t) => t.userId.equals(contactId))).write(
|
||||||
ContactsCompanion(
|
ContactsCompanion(
|
||||||
totalMediaCounter: Value(totalMediaCounter),
|
totalMediaCounter: Value(totalMediaCounter),
|
||||||
lastMessage: lastMessage,
|
lastFlameCounterChange: lastFlameCounterChange,
|
||||||
lastMessageReceived: lastMessageReceived,
|
lastMessageReceived: lastMessageReceived,
|
||||||
lastMessageSend: lastMessageSend,
|
lastMessageSend: lastMessageSend,
|
||||||
flameCounter: Value(flameCounter),
|
flameCounter: Value(flameCounter),
|
||||||
|
|
@ -100,6 +100,11 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
.write(updatedValues);
|
.write(updatedValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future newMessageExchange(int userId) {
|
||||||
|
return updateContact(
|
||||||
|
userId, ContactsCompanion(lastMessageExchange: Value(DateTime.now())));
|
||||||
|
}
|
||||||
|
|
||||||
Stream<List<Contact>> watchNotAcceptedContacts() {
|
Stream<List<Contact>> watchNotAcceptedContacts() {
|
||||||
return (select(contacts)..where((t) => t.accepted.equals(false))).watch();
|
return (select(contacts)..where((t) => t.accepted.equals(false))).watch();
|
||||||
// return (select(contacts)).watch();
|
// return (select(contacts)).watch();
|
||||||
|
|
@ -113,7 +118,7 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
Stream<List<Contact>> watchContactsForChatList() {
|
Stream<List<Contact>> watchContactsForChatList() {
|
||||||
return (select(contacts)
|
return (select(contacts)
|
||||||
..where((t) => t.accepted.equals(true) & t.blocked.equals(false))
|
..where((t) => t.accepted.equals(true) & t.blocked.equals(false))
|
||||||
..orderBy([(t) => OrderingTerm.desc(t.lastMessage)]))
|
..orderBy([(t) => OrderingTerm.desc(t.lastMessageExchange)]))
|
||||||
.watch();
|
.watch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:drift/drift.dart';
|
import 'package:drift/drift.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
|
import 'package:twonly/globals.dart';
|
||||||
import 'package:twonly/src/database/tables/messages_table.dart';
|
import 'package:twonly/src/database/tables/messages_table.dart';
|
||||||
import 'package:twonly/src/database/twonly_database.dart';
|
import 'package:twonly/src/database/twonly_database.dart';
|
||||||
import 'package:twonly/src/json_models/message.dart';
|
import 'package:twonly/src/json_models/message.dart';
|
||||||
|
|
@ -110,6 +111,8 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
|
||||||
|
|
||||||
Future<int?> insertMessage(MessagesCompanion message) async {
|
Future<int?> insertMessage(MessagesCompanion message) async {
|
||||||
try {
|
try {
|
||||||
|
await twonlyDatabase.contactsDao
|
||||||
|
.newMessageExchange(message.contactId.value);
|
||||||
return await into(messages).insert(message);
|
return await into(messages).insert(message);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Logger("twonlyDatabase").shout("Error while inserting message: $e");
|
Logger("twonlyDatabase").shout("Error while inserting message: $e");
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,9 @@ class Contacts extends Table {
|
||||||
|
|
||||||
DateTimeColumn get lastMessageSend => dateTime().nullable()();
|
DateTimeColumn get lastMessageSend => dateTime().nullable()();
|
||||||
DateTimeColumn get lastMessageReceived => dateTime().nullable()();
|
DateTimeColumn get lastMessageReceived => dateTime().nullable()();
|
||||||
DateTimeColumn get lastMessage => dateTime().nullable()();
|
DateTimeColumn get lastFlameCounterChange => dateTime().nullable()();
|
||||||
|
DateTimeColumn get lastMessageExchange =>
|
||||||
|
dateTime().withDefault(currentDateAndTime)();
|
||||||
|
|
||||||
IntColumn get flameCounter => integer().withDefault(Constant(0))();
|
IntColumn get flameCounter => integer().withDefault(Constant(0))();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -101,12 +101,20 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
||||||
late final GeneratedColumn<DateTime> lastMessageReceived =
|
late final GeneratedColumn<DateTime> lastMessageReceived =
|
||||||
GeneratedColumn<DateTime>('last_message_received', aliasedName, true,
|
GeneratedColumn<DateTime>('last_message_received', aliasedName, true,
|
||||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||||
static const VerificationMeta _lastMessageMeta =
|
static const VerificationMeta _lastFlameCounterChangeMeta =
|
||||||
const VerificationMeta('lastMessage');
|
const VerificationMeta('lastFlameCounterChange');
|
||||||
@override
|
@override
|
||||||
late final GeneratedColumn<DateTime> lastMessage = GeneratedColumn<DateTime>(
|
late final GeneratedColumn<DateTime> lastFlameCounterChange =
|
||||||
'last_message', aliasedName, true,
|
GeneratedColumn<DateTime>('last_flame_counter_change', aliasedName, true,
|
||||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||||
|
static const VerificationMeta _lastMessageExchangeMeta =
|
||||||
|
const VerificationMeta('lastMessageExchange');
|
||||||
|
@override
|
||||||
|
late final GeneratedColumn<DateTime> lastMessageExchange =
|
||||||
|
GeneratedColumn<DateTime>('last_message_exchange', aliasedName, false,
|
||||||
|
type: DriftSqlType.dateTime,
|
||||||
|
requiredDuringInsert: false,
|
||||||
|
defaultValue: currentDateAndTime);
|
||||||
static const VerificationMeta _flameCounterMeta =
|
static const VerificationMeta _flameCounterMeta =
|
||||||
const VerificationMeta('flameCounter');
|
const VerificationMeta('flameCounter');
|
||||||
@override
|
@override
|
||||||
|
|
@ -129,7 +137,8 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
||||||
totalMediaCounter,
|
totalMediaCounter,
|
||||||
lastMessageSend,
|
lastMessageSend,
|
||||||
lastMessageReceived,
|
lastMessageReceived,
|
||||||
lastMessage,
|
lastFlameCounterChange,
|
||||||
|
lastMessageExchange,
|
||||||
flameCounter
|
flameCounter
|
||||||
];
|
];
|
||||||
@override
|
@override
|
||||||
|
|
@ -200,11 +209,17 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
||||||
lastMessageReceived.isAcceptableOrUnknown(
|
lastMessageReceived.isAcceptableOrUnknown(
|
||||||
data['last_message_received']!, _lastMessageReceivedMeta));
|
data['last_message_received']!, _lastMessageReceivedMeta));
|
||||||
}
|
}
|
||||||
if (data.containsKey('last_message')) {
|
if (data.containsKey('last_flame_counter_change')) {
|
||||||
context.handle(
|
context.handle(
|
||||||
_lastMessageMeta,
|
_lastFlameCounterChangeMeta,
|
||||||
lastMessage.isAcceptableOrUnknown(
|
lastFlameCounterChange.isAcceptableOrUnknown(
|
||||||
data['last_message']!, _lastMessageMeta));
|
data['last_flame_counter_change']!, _lastFlameCounterChangeMeta));
|
||||||
|
}
|
||||||
|
if (data.containsKey('last_message_exchange')) {
|
||||||
|
context.handle(
|
||||||
|
_lastMessageExchangeMeta,
|
||||||
|
lastMessageExchange.isAcceptableOrUnknown(
|
||||||
|
data['last_message_exchange']!, _lastMessageExchangeMeta));
|
||||||
}
|
}
|
||||||
if (data.containsKey('flame_counter')) {
|
if (data.containsKey('flame_counter')) {
|
||||||
context.handle(
|
context.handle(
|
||||||
|
|
@ -246,8 +261,12 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
||||||
lastMessageReceived: attachedDatabase.typeMapping.read(
|
lastMessageReceived: attachedDatabase.typeMapping.read(
|
||||||
DriftSqlType.dateTime,
|
DriftSqlType.dateTime,
|
||||||
data['${effectivePrefix}last_message_received']),
|
data['${effectivePrefix}last_message_received']),
|
||||||
lastMessage: attachedDatabase.typeMapping
|
lastFlameCounterChange: attachedDatabase.typeMapping.read(
|
||||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}last_message']),
|
DriftSqlType.dateTime,
|
||||||
|
data['${effectivePrefix}last_flame_counter_change']),
|
||||||
|
lastMessageExchange: attachedDatabase.typeMapping.read(
|
||||||
|
DriftSqlType.dateTime,
|
||||||
|
data['${effectivePrefix}last_message_exchange'])!,
|
||||||
flameCounter: attachedDatabase.typeMapping
|
flameCounter: attachedDatabase.typeMapping
|
||||||
.read(DriftSqlType.int, data['${effectivePrefix}flame_counter'])!,
|
.read(DriftSqlType.int, data['${effectivePrefix}flame_counter'])!,
|
||||||
);
|
);
|
||||||
|
|
@ -272,7 +291,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
final int totalMediaCounter;
|
final int totalMediaCounter;
|
||||||
final DateTime? lastMessageSend;
|
final DateTime? lastMessageSend;
|
||||||
final DateTime? lastMessageReceived;
|
final DateTime? lastMessageReceived;
|
||||||
final DateTime? lastMessage;
|
final DateTime? lastFlameCounterChange;
|
||||||
|
final DateTime lastMessageExchange;
|
||||||
final int flameCounter;
|
final int flameCounter;
|
||||||
const Contact(
|
const Contact(
|
||||||
{required this.userId,
|
{required this.userId,
|
||||||
|
|
@ -287,7 +307,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
required this.totalMediaCounter,
|
required this.totalMediaCounter,
|
||||||
this.lastMessageSend,
|
this.lastMessageSend,
|
||||||
this.lastMessageReceived,
|
this.lastMessageReceived,
|
||||||
this.lastMessage,
|
this.lastFlameCounterChange,
|
||||||
|
required this.lastMessageExchange,
|
||||||
required this.flameCounter});
|
required this.flameCounter});
|
||||||
@override
|
@override
|
||||||
Map<String, Expression> toColumns(bool nullToAbsent) {
|
Map<String, Expression> toColumns(bool nullToAbsent) {
|
||||||
|
|
@ -312,9 +333,11 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
if (!nullToAbsent || lastMessageReceived != null) {
|
if (!nullToAbsent || lastMessageReceived != null) {
|
||||||
map['last_message_received'] = Variable<DateTime>(lastMessageReceived);
|
map['last_message_received'] = Variable<DateTime>(lastMessageReceived);
|
||||||
}
|
}
|
||||||
if (!nullToAbsent || lastMessage != null) {
|
if (!nullToAbsent || lastFlameCounterChange != null) {
|
||||||
map['last_message'] = Variable<DateTime>(lastMessage);
|
map['last_flame_counter_change'] =
|
||||||
|
Variable<DateTime>(lastFlameCounterChange);
|
||||||
}
|
}
|
||||||
|
map['last_message_exchange'] = Variable<DateTime>(lastMessageExchange);
|
||||||
map['flame_counter'] = Variable<int>(flameCounter);
|
map['flame_counter'] = Variable<int>(flameCounter);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
@ -341,9 +364,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
lastMessageReceived: lastMessageReceived == null && nullToAbsent
|
lastMessageReceived: lastMessageReceived == null && nullToAbsent
|
||||||
? const Value.absent()
|
? const Value.absent()
|
||||||
: Value(lastMessageReceived),
|
: Value(lastMessageReceived),
|
||||||
lastMessage: lastMessage == null && nullToAbsent
|
lastFlameCounterChange: lastFlameCounterChange == null && nullToAbsent
|
||||||
? const Value.absent()
|
? const Value.absent()
|
||||||
: Value(lastMessage),
|
: Value(lastFlameCounterChange),
|
||||||
|
lastMessageExchange: Value(lastMessageExchange),
|
||||||
flameCounter: Value(flameCounter),
|
flameCounter: Value(flameCounter),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -365,7 +389,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
lastMessageSend: serializer.fromJson<DateTime?>(json['lastMessageSend']),
|
lastMessageSend: serializer.fromJson<DateTime?>(json['lastMessageSend']),
|
||||||
lastMessageReceived:
|
lastMessageReceived:
|
||||||
serializer.fromJson<DateTime?>(json['lastMessageReceived']),
|
serializer.fromJson<DateTime?>(json['lastMessageReceived']),
|
||||||
lastMessage: serializer.fromJson<DateTime?>(json['lastMessage']),
|
lastFlameCounterChange:
|
||||||
|
serializer.fromJson<DateTime?>(json['lastFlameCounterChange']),
|
||||||
|
lastMessageExchange:
|
||||||
|
serializer.fromJson<DateTime>(json['lastMessageExchange']),
|
||||||
flameCounter: serializer.fromJson<int>(json['flameCounter']),
|
flameCounter: serializer.fromJson<int>(json['flameCounter']),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -385,7 +412,9 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
'totalMediaCounter': serializer.toJson<int>(totalMediaCounter),
|
'totalMediaCounter': serializer.toJson<int>(totalMediaCounter),
|
||||||
'lastMessageSend': serializer.toJson<DateTime?>(lastMessageSend),
|
'lastMessageSend': serializer.toJson<DateTime?>(lastMessageSend),
|
||||||
'lastMessageReceived': serializer.toJson<DateTime?>(lastMessageReceived),
|
'lastMessageReceived': serializer.toJson<DateTime?>(lastMessageReceived),
|
||||||
'lastMessage': serializer.toJson<DateTime?>(lastMessage),
|
'lastFlameCounterChange':
|
||||||
|
serializer.toJson<DateTime?>(lastFlameCounterChange),
|
||||||
|
'lastMessageExchange': serializer.toJson<DateTime>(lastMessageExchange),
|
||||||
'flameCounter': serializer.toJson<int>(flameCounter),
|
'flameCounter': serializer.toJson<int>(flameCounter),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -403,7 +432,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
int? totalMediaCounter,
|
int? totalMediaCounter,
|
||||||
Value<DateTime?> lastMessageSend = const Value.absent(),
|
Value<DateTime?> lastMessageSend = const Value.absent(),
|
||||||
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
||||||
Value<DateTime?> lastMessage = const Value.absent(),
|
Value<DateTime?> lastFlameCounterChange = const Value.absent(),
|
||||||
|
DateTime? lastMessageExchange,
|
||||||
int? flameCounter}) =>
|
int? flameCounter}) =>
|
||||||
Contact(
|
Contact(
|
||||||
userId: userId ?? this.userId,
|
userId: userId ?? this.userId,
|
||||||
|
|
@ -422,7 +452,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
lastMessageReceived: lastMessageReceived.present
|
lastMessageReceived: lastMessageReceived.present
|
||||||
? lastMessageReceived.value
|
? lastMessageReceived.value
|
||||||
: this.lastMessageReceived,
|
: this.lastMessageReceived,
|
||||||
lastMessage: lastMessage.present ? lastMessage.value : this.lastMessage,
|
lastFlameCounterChange: lastFlameCounterChange.present
|
||||||
|
? lastFlameCounterChange.value
|
||||||
|
: this.lastFlameCounterChange,
|
||||||
|
lastMessageExchange: lastMessageExchange ?? this.lastMessageExchange,
|
||||||
flameCounter: flameCounter ?? this.flameCounter,
|
flameCounter: flameCounter ?? this.flameCounter,
|
||||||
);
|
);
|
||||||
Contact copyWithCompanion(ContactsCompanion data) {
|
Contact copyWithCompanion(ContactsCompanion data) {
|
||||||
|
|
@ -446,8 +479,12 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
lastMessageReceived: data.lastMessageReceived.present
|
lastMessageReceived: data.lastMessageReceived.present
|
||||||
? data.lastMessageReceived.value
|
? data.lastMessageReceived.value
|
||||||
: this.lastMessageReceived,
|
: this.lastMessageReceived,
|
||||||
lastMessage:
|
lastFlameCounterChange: data.lastFlameCounterChange.present
|
||||||
data.lastMessage.present ? data.lastMessage.value : this.lastMessage,
|
? data.lastFlameCounterChange.value
|
||||||
|
: this.lastFlameCounterChange,
|
||||||
|
lastMessageExchange: data.lastMessageExchange.present
|
||||||
|
? data.lastMessageExchange.value
|
||||||
|
: this.lastMessageExchange,
|
||||||
flameCounter: data.flameCounter.present
|
flameCounter: data.flameCounter.present
|
||||||
? data.flameCounter.value
|
? data.flameCounter.value
|
||||||
: this.flameCounter,
|
: this.flameCounter,
|
||||||
|
|
@ -469,7 +506,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
..write('totalMediaCounter: $totalMediaCounter, ')
|
..write('totalMediaCounter: $totalMediaCounter, ')
|
||||||
..write('lastMessageSend: $lastMessageSend, ')
|
..write('lastMessageSend: $lastMessageSend, ')
|
||||||
..write('lastMessageReceived: $lastMessageReceived, ')
|
..write('lastMessageReceived: $lastMessageReceived, ')
|
||||||
..write('lastMessage: $lastMessage, ')
|
..write('lastFlameCounterChange: $lastFlameCounterChange, ')
|
||||||
|
..write('lastMessageExchange: $lastMessageExchange, ')
|
||||||
..write('flameCounter: $flameCounter')
|
..write('flameCounter: $flameCounter')
|
||||||
..write(')'))
|
..write(')'))
|
||||||
.toString();
|
.toString();
|
||||||
|
|
@ -489,7 +527,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
totalMediaCounter,
|
totalMediaCounter,
|
||||||
lastMessageSend,
|
lastMessageSend,
|
||||||
lastMessageReceived,
|
lastMessageReceived,
|
||||||
lastMessage,
|
lastFlameCounterChange,
|
||||||
|
lastMessageExchange,
|
||||||
flameCounter);
|
flameCounter);
|
||||||
@override
|
@override
|
||||||
bool operator ==(Object other) =>
|
bool operator ==(Object other) =>
|
||||||
|
|
@ -507,7 +546,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
||||||
other.totalMediaCounter == this.totalMediaCounter &&
|
other.totalMediaCounter == this.totalMediaCounter &&
|
||||||
other.lastMessageSend == this.lastMessageSend &&
|
other.lastMessageSend == this.lastMessageSend &&
|
||||||
other.lastMessageReceived == this.lastMessageReceived &&
|
other.lastMessageReceived == this.lastMessageReceived &&
|
||||||
other.lastMessage == this.lastMessage &&
|
other.lastFlameCounterChange == this.lastFlameCounterChange &&
|
||||||
|
other.lastMessageExchange == this.lastMessageExchange &&
|
||||||
other.flameCounter == this.flameCounter);
|
other.flameCounter == this.flameCounter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -524,7 +564,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
final Value<int> totalMediaCounter;
|
final Value<int> totalMediaCounter;
|
||||||
final Value<DateTime?> lastMessageSend;
|
final Value<DateTime?> lastMessageSend;
|
||||||
final Value<DateTime?> lastMessageReceived;
|
final Value<DateTime?> lastMessageReceived;
|
||||||
final Value<DateTime?> lastMessage;
|
final Value<DateTime?> lastFlameCounterChange;
|
||||||
|
final Value<DateTime> lastMessageExchange;
|
||||||
final Value<int> flameCounter;
|
final Value<int> flameCounter;
|
||||||
const ContactsCompanion({
|
const ContactsCompanion({
|
||||||
this.userId = const Value.absent(),
|
this.userId = const Value.absent(),
|
||||||
|
|
@ -539,7 +580,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
this.totalMediaCounter = const Value.absent(),
|
this.totalMediaCounter = const Value.absent(),
|
||||||
this.lastMessageSend = const Value.absent(),
|
this.lastMessageSend = const Value.absent(),
|
||||||
this.lastMessageReceived = const Value.absent(),
|
this.lastMessageReceived = const Value.absent(),
|
||||||
this.lastMessage = const Value.absent(),
|
this.lastFlameCounterChange = const Value.absent(),
|
||||||
|
this.lastMessageExchange = const Value.absent(),
|
||||||
this.flameCounter = const Value.absent(),
|
this.flameCounter = const Value.absent(),
|
||||||
});
|
});
|
||||||
ContactsCompanion.insert({
|
ContactsCompanion.insert({
|
||||||
|
|
@ -555,7 +597,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
this.totalMediaCounter = const Value.absent(),
|
this.totalMediaCounter = const Value.absent(),
|
||||||
this.lastMessageSend = const Value.absent(),
|
this.lastMessageSend = const Value.absent(),
|
||||||
this.lastMessageReceived = const Value.absent(),
|
this.lastMessageReceived = const Value.absent(),
|
||||||
this.lastMessage = const Value.absent(),
|
this.lastFlameCounterChange = const Value.absent(),
|
||||||
|
this.lastMessageExchange = const Value.absent(),
|
||||||
this.flameCounter = const Value.absent(),
|
this.flameCounter = const Value.absent(),
|
||||||
}) : username = Value(username);
|
}) : username = Value(username);
|
||||||
static Insertable<Contact> custom({
|
static Insertable<Contact> custom({
|
||||||
|
|
@ -571,7 +614,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
Expression<int>? totalMediaCounter,
|
Expression<int>? totalMediaCounter,
|
||||||
Expression<DateTime>? lastMessageSend,
|
Expression<DateTime>? lastMessageSend,
|
||||||
Expression<DateTime>? lastMessageReceived,
|
Expression<DateTime>? lastMessageReceived,
|
||||||
Expression<DateTime>? lastMessage,
|
Expression<DateTime>? lastFlameCounterChange,
|
||||||
|
Expression<DateTime>? lastMessageExchange,
|
||||||
Expression<int>? flameCounter,
|
Expression<int>? flameCounter,
|
||||||
}) {
|
}) {
|
||||||
return RawValuesInsertable({
|
return RawValuesInsertable({
|
||||||
|
|
@ -588,7 +632,10 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
if (lastMessageSend != null) 'last_message_send': lastMessageSend,
|
if (lastMessageSend != null) 'last_message_send': lastMessageSend,
|
||||||
if (lastMessageReceived != null)
|
if (lastMessageReceived != null)
|
||||||
'last_message_received': lastMessageReceived,
|
'last_message_received': lastMessageReceived,
|
||||||
if (lastMessage != null) 'last_message': lastMessage,
|
if (lastFlameCounterChange != null)
|
||||||
|
'last_flame_counter_change': lastFlameCounterChange,
|
||||||
|
if (lastMessageExchange != null)
|
||||||
|
'last_message_exchange': lastMessageExchange,
|
||||||
if (flameCounter != null) 'flame_counter': flameCounter,
|
if (flameCounter != null) 'flame_counter': flameCounter,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -606,7 +653,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
Value<int>? totalMediaCounter,
|
Value<int>? totalMediaCounter,
|
||||||
Value<DateTime?>? lastMessageSend,
|
Value<DateTime?>? lastMessageSend,
|
||||||
Value<DateTime?>? lastMessageReceived,
|
Value<DateTime?>? lastMessageReceived,
|
||||||
Value<DateTime?>? lastMessage,
|
Value<DateTime?>? lastFlameCounterChange,
|
||||||
|
Value<DateTime>? lastMessageExchange,
|
||||||
Value<int>? flameCounter}) {
|
Value<int>? flameCounter}) {
|
||||||
return ContactsCompanion(
|
return ContactsCompanion(
|
||||||
userId: userId ?? this.userId,
|
userId: userId ?? this.userId,
|
||||||
|
|
@ -621,7 +669,9 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
totalMediaCounter: totalMediaCounter ?? this.totalMediaCounter,
|
totalMediaCounter: totalMediaCounter ?? this.totalMediaCounter,
|
||||||
lastMessageSend: lastMessageSend ?? this.lastMessageSend,
|
lastMessageSend: lastMessageSend ?? this.lastMessageSend,
|
||||||
lastMessageReceived: lastMessageReceived ?? this.lastMessageReceived,
|
lastMessageReceived: lastMessageReceived ?? this.lastMessageReceived,
|
||||||
lastMessage: lastMessage ?? this.lastMessage,
|
lastFlameCounterChange:
|
||||||
|
lastFlameCounterChange ?? this.lastFlameCounterChange,
|
||||||
|
lastMessageExchange: lastMessageExchange ?? this.lastMessageExchange,
|
||||||
flameCounter: flameCounter ?? this.flameCounter,
|
flameCounter: flameCounter ?? this.flameCounter,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -666,8 +716,13 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
map['last_message_received'] =
|
map['last_message_received'] =
|
||||||
Variable<DateTime>(lastMessageReceived.value);
|
Variable<DateTime>(lastMessageReceived.value);
|
||||||
}
|
}
|
||||||
if (lastMessage.present) {
|
if (lastFlameCounterChange.present) {
|
||||||
map['last_message'] = Variable<DateTime>(lastMessage.value);
|
map['last_flame_counter_change'] =
|
||||||
|
Variable<DateTime>(lastFlameCounterChange.value);
|
||||||
|
}
|
||||||
|
if (lastMessageExchange.present) {
|
||||||
|
map['last_message_exchange'] =
|
||||||
|
Variable<DateTime>(lastMessageExchange.value);
|
||||||
}
|
}
|
||||||
if (flameCounter.present) {
|
if (flameCounter.present) {
|
||||||
map['flame_counter'] = Variable<int>(flameCounter.value);
|
map['flame_counter'] = Variable<int>(flameCounter.value);
|
||||||
|
|
@ -690,7 +745,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
||||||
..write('totalMediaCounter: $totalMediaCounter, ')
|
..write('totalMediaCounter: $totalMediaCounter, ')
|
||||||
..write('lastMessageSend: $lastMessageSend, ')
|
..write('lastMessageSend: $lastMessageSend, ')
|
||||||
..write('lastMessageReceived: $lastMessageReceived, ')
|
..write('lastMessageReceived: $lastMessageReceived, ')
|
||||||
..write('lastMessage: $lastMessage, ')
|
..write('lastFlameCounterChange: $lastFlameCounterChange, ')
|
||||||
|
..write('lastMessageExchange: $lastMessageExchange, ')
|
||||||
..write('flameCounter: $flameCounter')
|
..write('flameCounter: $flameCounter')
|
||||||
..write(')'))
|
..write(')'))
|
||||||
.toString();
|
.toString();
|
||||||
|
|
@ -2400,7 +2456,8 @@ typedef $$ContactsTableCreateCompanionBuilder = ContactsCompanion Function({
|
||||||
Value<int> totalMediaCounter,
|
Value<int> totalMediaCounter,
|
||||||
Value<DateTime?> lastMessageSend,
|
Value<DateTime?> lastMessageSend,
|
||||||
Value<DateTime?> lastMessageReceived,
|
Value<DateTime?> lastMessageReceived,
|
||||||
Value<DateTime?> lastMessage,
|
Value<DateTime?> lastFlameCounterChange,
|
||||||
|
Value<DateTime> lastMessageExchange,
|
||||||
Value<int> flameCounter,
|
Value<int> flameCounter,
|
||||||
});
|
});
|
||||||
typedef $$ContactsTableUpdateCompanionBuilder = ContactsCompanion Function({
|
typedef $$ContactsTableUpdateCompanionBuilder = ContactsCompanion Function({
|
||||||
|
|
@ -2416,7 +2473,8 @@ typedef $$ContactsTableUpdateCompanionBuilder = ContactsCompanion Function({
|
||||||
Value<int> totalMediaCounter,
|
Value<int> totalMediaCounter,
|
||||||
Value<DateTime?> lastMessageSend,
|
Value<DateTime?> lastMessageSend,
|
||||||
Value<DateTime?> lastMessageReceived,
|
Value<DateTime?> lastMessageReceived,
|
||||||
Value<DateTime?> lastMessage,
|
Value<DateTime?> lastFlameCounterChange,
|
||||||
|
Value<DateTime> lastMessageExchange,
|
||||||
Value<int> flameCounter,
|
Value<int> flameCounter,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -2488,8 +2546,13 @@ class $$ContactsTableFilterComposer
|
||||||
column: $table.lastMessageReceived,
|
column: $table.lastMessageReceived,
|
||||||
builder: (column) => ColumnFilters(column));
|
builder: (column) => ColumnFilters(column));
|
||||||
|
|
||||||
ColumnFilters<DateTime> get lastMessage => $composableBuilder(
|
ColumnFilters<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||||
column: $table.lastMessage, builder: (column) => ColumnFilters(column));
|
column: $table.lastFlameCounterChange,
|
||||||
|
builder: (column) => ColumnFilters(column));
|
||||||
|
|
||||||
|
ColumnFilters<DateTime> get lastMessageExchange => $composableBuilder(
|
||||||
|
column: $table.lastMessageExchange,
|
||||||
|
builder: (column) => ColumnFilters(column));
|
||||||
|
|
||||||
ColumnFilters<int> get flameCounter => $composableBuilder(
|
ColumnFilters<int> get flameCounter => $composableBuilder(
|
||||||
column: $table.flameCounter, builder: (column) => ColumnFilters(column));
|
column: $table.flameCounter, builder: (column) => ColumnFilters(column));
|
||||||
|
|
@ -2564,8 +2627,13 @@ class $$ContactsTableOrderingComposer
|
||||||
column: $table.lastMessageReceived,
|
column: $table.lastMessageReceived,
|
||||||
builder: (column) => ColumnOrderings(column));
|
builder: (column) => ColumnOrderings(column));
|
||||||
|
|
||||||
ColumnOrderings<DateTime> get lastMessage => $composableBuilder(
|
ColumnOrderings<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||||
column: $table.lastMessage, builder: (column) => ColumnOrderings(column));
|
column: $table.lastFlameCounterChange,
|
||||||
|
builder: (column) => ColumnOrderings(column));
|
||||||
|
|
||||||
|
ColumnOrderings<DateTime> get lastMessageExchange => $composableBuilder(
|
||||||
|
column: $table.lastMessageExchange,
|
||||||
|
builder: (column) => ColumnOrderings(column));
|
||||||
|
|
||||||
ColumnOrderings<int> get flameCounter => $composableBuilder(
|
ColumnOrderings<int> get flameCounter => $composableBuilder(
|
||||||
column: $table.flameCounter,
|
column: $table.flameCounter,
|
||||||
|
|
@ -2617,8 +2685,11 @@ class $$ContactsTableAnnotationComposer
|
||||||
GeneratedColumn<DateTime> get lastMessageReceived => $composableBuilder(
|
GeneratedColumn<DateTime> get lastMessageReceived => $composableBuilder(
|
||||||
column: $table.lastMessageReceived, builder: (column) => column);
|
column: $table.lastMessageReceived, builder: (column) => column);
|
||||||
|
|
||||||
GeneratedColumn<DateTime> get lastMessage => $composableBuilder(
|
GeneratedColumn<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||||
column: $table.lastMessage, builder: (column) => column);
|
column: $table.lastFlameCounterChange, builder: (column) => column);
|
||||||
|
|
||||||
|
GeneratedColumn<DateTime> get lastMessageExchange => $composableBuilder(
|
||||||
|
column: $table.lastMessageExchange, builder: (column) => column);
|
||||||
|
|
||||||
GeneratedColumn<int> get flameCounter => $composableBuilder(
|
GeneratedColumn<int> get flameCounter => $composableBuilder(
|
||||||
column: $table.flameCounter, builder: (column) => column);
|
column: $table.flameCounter, builder: (column) => column);
|
||||||
|
|
@ -2680,7 +2751,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
||||||
Value<int> totalMediaCounter = const Value.absent(),
|
Value<int> totalMediaCounter = const Value.absent(),
|
||||||
Value<DateTime?> lastMessageSend = const Value.absent(),
|
Value<DateTime?> lastMessageSend = const Value.absent(),
|
||||||
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
||||||
Value<DateTime?> lastMessage = const Value.absent(),
|
Value<DateTime?> lastFlameCounterChange = const Value.absent(),
|
||||||
|
Value<DateTime> lastMessageExchange = const Value.absent(),
|
||||||
Value<int> flameCounter = const Value.absent(),
|
Value<int> flameCounter = const Value.absent(),
|
||||||
}) =>
|
}) =>
|
||||||
ContactsCompanion(
|
ContactsCompanion(
|
||||||
|
|
@ -2696,7 +2768,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
||||||
totalMediaCounter: totalMediaCounter,
|
totalMediaCounter: totalMediaCounter,
|
||||||
lastMessageSend: lastMessageSend,
|
lastMessageSend: lastMessageSend,
|
||||||
lastMessageReceived: lastMessageReceived,
|
lastMessageReceived: lastMessageReceived,
|
||||||
lastMessage: lastMessage,
|
lastFlameCounterChange: lastFlameCounterChange,
|
||||||
|
lastMessageExchange: lastMessageExchange,
|
||||||
flameCounter: flameCounter,
|
flameCounter: flameCounter,
|
||||||
),
|
),
|
||||||
createCompanionCallback: ({
|
createCompanionCallback: ({
|
||||||
|
|
@ -2712,7 +2785,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
||||||
Value<int> totalMediaCounter = const Value.absent(),
|
Value<int> totalMediaCounter = const Value.absent(),
|
||||||
Value<DateTime?> lastMessageSend = const Value.absent(),
|
Value<DateTime?> lastMessageSend = const Value.absent(),
|
||||||
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
Value<DateTime?> lastMessageReceived = const Value.absent(),
|
||||||
Value<DateTime?> lastMessage = const Value.absent(),
|
Value<DateTime?> lastFlameCounterChange = const Value.absent(),
|
||||||
|
Value<DateTime> lastMessageExchange = const Value.absent(),
|
||||||
Value<int> flameCounter = const Value.absent(),
|
Value<int> flameCounter = const Value.absent(),
|
||||||
}) =>
|
}) =>
|
||||||
ContactsCompanion.insert(
|
ContactsCompanion.insert(
|
||||||
|
|
@ -2728,7 +2802,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
||||||
totalMediaCounter: totalMediaCounter,
|
totalMediaCounter: totalMediaCounter,
|
||||||
lastMessageSend: lastMessageSend,
|
lastMessageSend: lastMessageSend,
|
||||||
lastMessageReceived: lastMessageReceived,
|
lastMessageReceived: lastMessageReceived,
|
||||||
lastMessage: lastMessage,
|
lastFlameCounterChange: lastFlameCounterChange,
|
||||||
|
lastMessageExchange: lastMessageExchange,
|
||||||
flameCounter: flameCounter,
|
flameCounter: flameCounter,
|
||||||
),
|
),
|
||||||
withReferenceMapper: (p0) => p0
|
withReferenceMapper: (p0) => p0
|
||||||
|
|
|
||||||
|
|
@ -212,19 +212,35 @@ class _UserListItem extends State<UserListItem> {
|
||||||
if (notOpenedMessagesSnapshot.data != null &&
|
if (notOpenedMessagesSnapshot.data != null &&
|
||||||
notOpenedMessagesSnapshot.data!.isNotEmpty) {
|
notOpenedMessagesSnapshot.data!.isNotEmpty) {
|
||||||
// filter first for only received messages
|
// filter first for only received messages
|
||||||
lastMessages = notOpenedMessagesSnapshot.data!
|
var notOpenedMessages = notOpenedMessagesSnapshot.data!;
|
||||||
|
|
||||||
|
lastMessages = notOpenedMessages
|
||||||
.where((x) => x.messageOtherId != null)
|
.where((x) => x.messageOtherId != null)
|
||||||
.toList();
|
.toList();
|
||||||
if (lastMessages.isEmpty) {
|
|
||||||
lastMessages = notOpenedMessagesSnapshot.data!;
|
|
||||||
}
|
|
||||||
|
|
||||||
var media =
|
// For send images show only one
|
||||||
lastMessages.where((x) => x.kind == MessageKind.media);
|
if (lastMessages.isEmpty) {
|
||||||
if (media.isNotEmpty) {
|
var media = notOpenedMessages
|
||||||
currentMessage = media.first;
|
.where((x) => x.kind == MessageKind.media);
|
||||||
|
|
||||||
|
if (media.isNotEmpty) {
|
||||||
|
currentMessage = media.first;
|
||||||
|
lastMessages = [currentMessage!];
|
||||||
|
} else {
|
||||||
|
currentMessage = notOpenedMessages.first;
|
||||||
|
lastMessages = [currentMessage!];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
currentMessage = lastMessages.first;
|
// there are multiple messages received
|
||||||
|
|
||||||
|
var media =
|
||||||
|
lastMessages.where((x) => x.kind == MessageKind.media);
|
||||||
|
|
||||||
|
if (media.isNotEmpty) {
|
||||||
|
currentMessage = media.first;
|
||||||
|
} else {
|
||||||
|
currentMessage = lastMessages.first;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
currentMessage = lastMessage;
|
currentMessage = lastMessage;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue