mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 14:48: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) {
|
||||
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?> 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 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.
|
||||
bool updateFlame = false;
|
||||
if (received) {
|
||||
|
|
@ -62,12 +62,12 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
|||
}
|
||||
if (updateFlame) {
|
||||
flameCounter += 1;
|
||||
lastMessage = Value(timestamp);
|
||||
lastFlameCounterChange = Value(timestamp);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// There where no message until no...
|
||||
lastMessage = Value(timestamp);
|
||||
lastFlameCounterChange = Value(timestamp);
|
||||
}
|
||||
|
||||
if (received) {
|
||||
|
|
@ -79,7 +79,7 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
|||
return (update(contacts)..where((t) => t.userId.equals(contactId))).write(
|
||||
ContactsCompanion(
|
||||
totalMediaCounter: Value(totalMediaCounter),
|
||||
lastMessage: lastMessage,
|
||||
lastFlameCounterChange: lastFlameCounterChange,
|
||||
lastMessageReceived: lastMessageReceived,
|
||||
lastMessageSend: lastMessageSend,
|
||||
flameCounter: Value(flameCounter),
|
||||
|
|
@ -100,6 +100,11 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
|||
.write(updatedValues);
|
||||
}
|
||||
|
||||
Future newMessageExchange(int userId) {
|
||||
return updateContact(
|
||||
userId, ContactsCompanion(lastMessageExchange: Value(DateTime.now())));
|
||||
}
|
||||
|
||||
Stream<List<Contact>> watchNotAcceptedContacts() {
|
||||
return (select(contacts)..where((t) => t.accepted.equals(false))).watch();
|
||||
// return (select(contacts)).watch();
|
||||
|
|
@ -113,7 +118,7 @@ class ContactsDao extends DatabaseAccessor<TwonlyDatabase>
|
|||
Stream<List<Contact>> watchContactsForChatList() {
|
||||
return (select(contacts)
|
||||
..where((t) => t.accepted.equals(true) & t.blocked.equals(false))
|
||||
..orderBy([(t) => OrderingTerm.desc(t.lastMessage)]))
|
||||
..orderBy([(t) => OrderingTerm.desc(t.lastMessageExchange)]))
|
||||
.watch();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:drift/drift.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/twonly_database.dart';
|
||||
import 'package:twonly/src/json_models/message.dart';
|
||||
|
|
@ -110,6 +111,8 @@ class MessagesDao extends DatabaseAccessor<TwonlyDatabase>
|
|||
|
||||
Future<int?> insertMessage(MessagesCompanion message) async {
|
||||
try {
|
||||
await twonlyDatabase.contactsDao
|
||||
.newMessageExchange(message.contactId.value);
|
||||
return await into(messages).insert(message);
|
||||
} catch (e) {
|
||||
Logger("twonlyDatabase").shout("Error while inserting message: $e");
|
||||
|
|
|
|||
|
|
@ -19,7 +19,9 @@ class Contacts extends Table {
|
|||
|
||||
DateTimeColumn get lastMessageSend => 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))();
|
||||
|
||||
|
|
|
|||
|
|
@ -101,12 +101,20 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
|||
late final GeneratedColumn<DateTime> lastMessageReceived =
|
||||
GeneratedColumn<DateTime>('last_message_received', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
static const VerificationMeta _lastMessageMeta =
|
||||
const VerificationMeta('lastMessage');
|
||||
static const VerificationMeta _lastFlameCounterChangeMeta =
|
||||
const VerificationMeta('lastFlameCounterChange');
|
||||
@override
|
||||
late final GeneratedColumn<DateTime> lastMessage = GeneratedColumn<DateTime>(
|
||||
'last_message', aliasedName, true,
|
||||
type: DriftSqlType.dateTime, requiredDuringInsert: false);
|
||||
late final GeneratedColumn<DateTime> lastFlameCounterChange =
|
||||
GeneratedColumn<DateTime>('last_flame_counter_change', aliasedName, true,
|
||||
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 =
|
||||
const VerificationMeta('flameCounter');
|
||||
@override
|
||||
|
|
@ -129,7 +137,8 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
|||
totalMediaCounter,
|
||||
lastMessageSend,
|
||||
lastMessageReceived,
|
||||
lastMessage,
|
||||
lastFlameCounterChange,
|
||||
lastMessageExchange,
|
||||
flameCounter
|
||||
];
|
||||
@override
|
||||
|
|
@ -200,11 +209,17 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
|||
lastMessageReceived.isAcceptableOrUnknown(
|
||||
data['last_message_received']!, _lastMessageReceivedMeta));
|
||||
}
|
||||
if (data.containsKey('last_message')) {
|
||||
if (data.containsKey('last_flame_counter_change')) {
|
||||
context.handle(
|
||||
_lastMessageMeta,
|
||||
lastMessage.isAcceptableOrUnknown(
|
||||
data['last_message']!, _lastMessageMeta));
|
||||
_lastFlameCounterChangeMeta,
|
||||
lastFlameCounterChange.isAcceptableOrUnknown(
|
||||
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')) {
|
||||
context.handle(
|
||||
|
|
@ -246,8 +261,12 @@ class $ContactsTable extends Contacts with TableInfo<$ContactsTable, Contact> {
|
|||
lastMessageReceived: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}last_message_received']),
|
||||
lastMessage: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.dateTime, data['${effectivePrefix}last_message']),
|
||||
lastFlameCounterChange: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}last_flame_counter_change']),
|
||||
lastMessageExchange: attachedDatabase.typeMapping.read(
|
||||
DriftSqlType.dateTime,
|
||||
data['${effectivePrefix}last_message_exchange'])!,
|
||||
flameCounter: attachedDatabase.typeMapping
|
||||
.read(DriftSqlType.int, data['${effectivePrefix}flame_counter'])!,
|
||||
);
|
||||
|
|
@ -272,7 +291,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
final int totalMediaCounter;
|
||||
final DateTime? lastMessageSend;
|
||||
final DateTime? lastMessageReceived;
|
||||
final DateTime? lastMessage;
|
||||
final DateTime? lastFlameCounterChange;
|
||||
final DateTime lastMessageExchange;
|
||||
final int flameCounter;
|
||||
const Contact(
|
||||
{required this.userId,
|
||||
|
|
@ -287,7 +307,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
required this.totalMediaCounter,
|
||||
this.lastMessageSend,
|
||||
this.lastMessageReceived,
|
||||
this.lastMessage,
|
||||
this.lastFlameCounterChange,
|
||||
required this.lastMessageExchange,
|
||||
required this.flameCounter});
|
||||
@override
|
||||
Map<String, Expression> toColumns(bool nullToAbsent) {
|
||||
|
|
@ -312,9 +333,11 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
if (!nullToAbsent || lastMessageReceived != null) {
|
||||
map['last_message_received'] = Variable<DateTime>(lastMessageReceived);
|
||||
}
|
||||
if (!nullToAbsent || lastMessage != null) {
|
||||
map['last_message'] = Variable<DateTime>(lastMessage);
|
||||
if (!nullToAbsent || lastFlameCounterChange != null) {
|
||||
map['last_flame_counter_change'] =
|
||||
Variable<DateTime>(lastFlameCounterChange);
|
||||
}
|
||||
map['last_message_exchange'] = Variable<DateTime>(lastMessageExchange);
|
||||
map['flame_counter'] = Variable<int>(flameCounter);
|
||||
return map;
|
||||
}
|
||||
|
|
@ -341,9 +364,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
lastMessageReceived: lastMessageReceived == null && nullToAbsent
|
||||
? const Value.absent()
|
||||
: Value(lastMessageReceived),
|
||||
lastMessage: lastMessage == null && nullToAbsent
|
||||
lastFlameCounterChange: lastFlameCounterChange == null && nullToAbsent
|
||||
? const Value.absent()
|
||||
: Value(lastMessage),
|
||||
: Value(lastFlameCounterChange),
|
||||
lastMessageExchange: Value(lastMessageExchange),
|
||||
flameCounter: Value(flameCounter),
|
||||
);
|
||||
}
|
||||
|
|
@ -365,7 +389,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
lastMessageSend: serializer.fromJson<DateTime?>(json['lastMessageSend']),
|
||||
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']),
|
||||
);
|
||||
}
|
||||
|
|
@ -385,7 +412,9 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
'totalMediaCounter': serializer.toJson<int>(totalMediaCounter),
|
||||
'lastMessageSend': serializer.toJson<DateTime?>(lastMessageSend),
|
||||
'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),
|
||||
};
|
||||
}
|
||||
|
|
@ -403,7 +432,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
int? totalMediaCounter,
|
||||
Value<DateTime?> lastMessageSend = 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}) =>
|
||||
Contact(
|
||||
userId: userId ?? this.userId,
|
||||
|
|
@ -422,7 +452,10 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
lastMessageReceived: lastMessageReceived.present
|
||||
? lastMessageReceived.value
|
||||
: this.lastMessageReceived,
|
||||
lastMessage: lastMessage.present ? lastMessage.value : this.lastMessage,
|
||||
lastFlameCounterChange: lastFlameCounterChange.present
|
||||
? lastFlameCounterChange.value
|
||||
: this.lastFlameCounterChange,
|
||||
lastMessageExchange: lastMessageExchange ?? this.lastMessageExchange,
|
||||
flameCounter: flameCounter ?? this.flameCounter,
|
||||
);
|
||||
Contact copyWithCompanion(ContactsCompanion data) {
|
||||
|
|
@ -446,8 +479,12 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
lastMessageReceived: data.lastMessageReceived.present
|
||||
? data.lastMessageReceived.value
|
||||
: this.lastMessageReceived,
|
||||
lastMessage:
|
||||
data.lastMessage.present ? data.lastMessage.value : this.lastMessage,
|
||||
lastFlameCounterChange: data.lastFlameCounterChange.present
|
||||
? data.lastFlameCounterChange.value
|
||||
: this.lastFlameCounterChange,
|
||||
lastMessageExchange: data.lastMessageExchange.present
|
||||
? data.lastMessageExchange.value
|
||||
: this.lastMessageExchange,
|
||||
flameCounter: data.flameCounter.present
|
||||
? data.flameCounter.value
|
||||
: this.flameCounter,
|
||||
|
|
@ -469,7 +506,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
..write('totalMediaCounter: $totalMediaCounter, ')
|
||||
..write('lastMessageSend: $lastMessageSend, ')
|
||||
..write('lastMessageReceived: $lastMessageReceived, ')
|
||||
..write('lastMessage: $lastMessage, ')
|
||||
..write('lastFlameCounterChange: $lastFlameCounterChange, ')
|
||||
..write('lastMessageExchange: $lastMessageExchange, ')
|
||||
..write('flameCounter: $flameCounter')
|
||||
..write(')'))
|
||||
.toString();
|
||||
|
|
@ -489,7 +527,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
totalMediaCounter,
|
||||
lastMessageSend,
|
||||
lastMessageReceived,
|
||||
lastMessage,
|
||||
lastFlameCounterChange,
|
||||
lastMessageExchange,
|
||||
flameCounter);
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
|
|
@ -507,7 +546,8 @@ class Contact extends DataClass implements Insertable<Contact> {
|
|||
other.totalMediaCounter == this.totalMediaCounter &&
|
||||
other.lastMessageSend == this.lastMessageSend &&
|
||||
other.lastMessageReceived == this.lastMessageReceived &&
|
||||
other.lastMessage == this.lastMessage &&
|
||||
other.lastFlameCounterChange == this.lastFlameCounterChange &&
|
||||
other.lastMessageExchange == this.lastMessageExchange &&
|
||||
other.flameCounter == this.flameCounter);
|
||||
}
|
||||
|
||||
|
|
@ -524,7 +564,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
final Value<int> totalMediaCounter;
|
||||
final Value<DateTime?> lastMessageSend;
|
||||
final Value<DateTime?> lastMessageReceived;
|
||||
final Value<DateTime?> lastMessage;
|
||||
final Value<DateTime?> lastFlameCounterChange;
|
||||
final Value<DateTime> lastMessageExchange;
|
||||
final Value<int> flameCounter;
|
||||
const ContactsCompanion({
|
||||
this.userId = const Value.absent(),
|
||||
|
|
@ -539,7 +580,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
this.totalMediaCounter = const Value.absent(),
|
||||
this.lastMessageSend = 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(),
|
||||
});
|
||||
ContactsCompanion.insert({
|
||||
|
|
@ -555,7 +597,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
this.totalMediaCounter = const Value.absent(),
|
||||
this.lastMessageSend = 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(),
|
||||
}) : username = Value(username);
|
||||
static Insertable<Contact> custom({
|
||||
|
|
@ -571,7 +614,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
Expression<int>? totalMediaCounter,
|
||||
Expression<DateTime>? lastMessageSend,
|
||||
Expression<DateTime>? lastMessageReceived,
|
||||
Expression<DateTime>? lastMessage,
|
||||
Expression<DateTime>? lastFlameCounterChange,
|
||||
Expression<DateTime>? lastMessageExchange,
|
||||
Expression<int>? flameCounter,
|
||||
}) {
|
||||
return RawValuesInsertable({
|
||||
|
|
@ -588,7 +632,10 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
if (lastMessageSend != null) 'last_message_send': lastMessageSend,
|
||||
if (lastMessageReceived != null)
|
||||
'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,
|
||||
});
|
||||
}
|
||||
|
|
@ -606,7 +653,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
Value<int>? totalMediaCounter,
|
||||
Value<DateTime?>? lastMessageSend,
|
||||
Value<DateTime?>? lastMessageReceived,
|
||||
Value<DateTime?>? lastMessage,
|
||||
Value<DateTime?>? lastFlameCounterChange,
|
||||
Value<DateTime>? lastMessageExchange,
|
||||
Value<int>? flameCounter}) {
|
||||
return ContactsCompanion(
|
||||
userId: userId ?? this.userId,
|
||||
|
|
@ -621,7 +669,9 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
totalMediaCounter: totalMediaCounter ?? this.totalMediaCounter,
|
||||
lastMessageSend: lastMessageSend ?? this.lastMessageSend,
|
||||
lastMessageReceived: lastMessageReceived ?? this.lastMessageReceived,
|
||||
lastMessage: lastMessage ?? this.lastMessage,
|
||||
lastFlameCounterChange:
|
||||
lastFlameCounterChange ?? this.lastFlameCounterChange,
|
||||
lastMessageExchange: lastMessageExchange ?? this.lastMessageExchange,
|
||||
flameCounter: flameCounter ?? this.flameCounter,
|
||||
);
|
||||
}
|
||||
|
|
@ -666,8 +716,13 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
map['last_message_received'] =
|
||||
Variable<DateTime>(lastMessageReceived.value);
|
||||
}
|
||||
if (lastMessage.present) {
|
||||
map['last_message'] = Variable<DateTime>(lastMessage.value);
|
||||
if (lastFlameCounterChange.present) {
|
||||
map['last_flame_counter_change'] =
|
||||
Variable<DateTime>(lastFlameCounterChange.value);
|
||||
}
|
||||
if (lastMessageExchange.present) {
|
||||
map['last_message_exchange'] =
|
||||
Variable<DateTime>(lastMessageExchange.value);
|
||||
}
|
||||
if (flameCounter.present) {
|
||||
map['flame_counter'] = Variable<int>(flameCounter.value);
|
||||
|
|
@ -690,7 +745,8 @@ class ContactsCompanion extends UpdateCompanion<Contact> {
|
|||
..write('totalMediaCounter: $totalMediaCounter, ')
|
||||
..write('lastMessageSend: $lastMessageSend, ')
|
||||
..write('lastMessageReceived: $lastMessageReceived, ')
|
||||
..write('lastMessage: $lastMessage, ')
|
||||
..write('lastFlameCounterChange: $lastFlameCounterChange, ')
|
||||
..write('lastMessageExchange: $lastMessageExchange, ')
|
||||
..write('flameCounter: $flameCounter')
|
||||
..write(')'))
|
||||
.toString();
|
||||
|
|
@ -2400,7 +2456,8 @@ typedef $$ContactsTableCreateCompanionBuilder = ContactsCompanion Function({
|
|||
Value<int> totalMediaCounter,
|
||||
Value<DateTime?> lastMessageSend,
|
||||
Value<DateTime?> lastMessageReceived,
|
||||
Value<DateTime?> lastMessage,
|
||||
Value<DateTime?> lastFlameCounterChange,
|
||||
Value<DateTime> lastMessageExchange,
|
||||
Value<int> flameCounter,
|
||||
});
|
||||
typedef $$ContactsTableUpdateCompanionBuilder = ContactsCompanion Function({
|
||||
|
|
@ -2416,7 +2473,8 @@ typedef $$ContactsTableUpdateCompanionBuilder = ContactsCompanion Function({
|
|||
Value<int> totalMediaCounter,
|
||||
Value<DateTime?> lastMessageSend,
|
||||
Value<DateTime?> lastMessageReceived,
|
||||
Value<DateTime?> lastMessage,
|
||||
Value<DateTime?> lastFlameCounterChange,
|
||||
Value<DateTime> lastMessageExchange,
|
||||
Value<int> flameCounter,
|
||||
});
|
||||
|
||||
|
|
@ -2488,8 +2546,13 @@ class $$ContactsTableFilterComposer
|
|||
column: $table.lastMessageReceived,
|
||||
builder: (column) => ColumnFilters(column));
|
||||
|
||||
ColumnFilters<DateTime> get lastMessage => $composableBuilder(
|
||||
column: $table.lastMessage, builder: (column) => ColumnFilters(column));
|
||||
ColumnFilters<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||
column: $table.lastFlameCounterChange,
|
||||
builder: (column) => ColumnFilters(column));
|
||||
|
||||
ColumnFilters<DateTime> get lastMessageExchange => $composableBuilder(
|
||||
column: $table.lastMessageExchange,
|
||||
builder: (column) => ColumnFilters(column));
|
||||
|
||||
ColumnFilters<int> get flameCounter => $composableBuilder(
|
||||
column: $table.flameCounter, builder: (column) => ColumnFilters(column));
|
||||
|
|
@ -2564,8 +2627,13 @@ class $$ContactsTableOrderingComposer
|
|||
column: $table.lastMessageReceived,
|
||||
builder: (column) => ColumnOrderings(column));
|
||||
|
||||
ColumnOrderings<DateTime> get lastMessage => $composableBuilder(
|
||||
column: $table.lastMessage, builder: (column) => ColumnOrderings(column));
|
||||
ColumnOrderings<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||
column: $table.lastFlameCounterChange,
|
||||
builder: (column) => ColumnOrderings(column));
|
||||
|
||||
ColumnOrderings<DateTime> get lastMessageExchange => $composableBuilder(
|
||||
column: $table.lastMessageExchange,
|
||||
builder: (column) => ColumnOrderings(column));
|
||||
|
||||
ColumnOrderings<int> get flameCounter => $composableBuilder(
|
||||
column: $table.flameCounter,
|
||||
|
|
@ -2617,8 +2685,11 @@ class $$ContactsTableAnnotationComposer
|
|||
GeneratedColumn<DateTime> get lastMessageReceived => $composableBuilder(
|
||||
column: $table.lastMessageReceived, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<DateTime> get lastMessage => $composableBuilder(
|
||||
column: $table.lastMessage, builder: (column) => column);
|
||||
GeneratedColumn<DateTime> get lastFlameCounterChange => $composableBuilder(
|
||||
column: $table.lastFlameCounterChange, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<DateTime> get lastMessageExchange => $composableBuilder(
|
||||
column: $table.lastMessageExchange, builder: (column) => column);
|
||||
|
||||
GeneratedColumn<int> get flameCounter => $composableBuilder(
|
||||
column: $table.flameCounter, builder: (column) => column);
|
||||
|
|
@ -2680,7 +2751,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
|||
Value<int> totalMediaCounter = const Value.absent(),
|
||||
Value<DateTime?> lastMessageSend = 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(),
|
||||
}) =>
|
||||
ContactsCompanion(
|
||||
|
|
@ -2696,7 +2768,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
|||
totalMediaCounter: totalMediaCounter,
|
||||
lastMessageSend: lastMessageSend,
|
||||
lastMessageReceived: lastMessageReceived,
|
||||
lastMessage: lastMessage,
|
||||
lastFlameCounterChange: lastFlameCounterChange,
|
||||
lastMessageExchange: lastMessageExchange,
|
||||
flameCounter: flameCounter,
|
||||
),
|
||||
createCompanionCallback: ({
|
||||
|
|
@ -2712,7 +2785,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
|||
Value<int> totalMediaCounter = const Value.absent(),
|
||||
Value<DateTime?> lastMessageSend = 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(),
|
||||
}) =>
|
||||
ContactsCompanion.insert(
|
||||
|
|
@ -2728,7 +2802,8 @@ class $$ContactsTableTableManager extends RootTableManager<
|
|||
totalMediaCounter: totalMediaCounter,
|
||||
lastMessageSend: lastMessageSend,
|
||||
lastMessageReceived: lastMessageReceived,
|
||||
lastMessage: lastMessage,
|
||||
lastFlameCounterChange: lastFlameCounterChange,
|
||||
lastMessageExchange: lastMessageExchange,
|
||||
flameCounter: flameCounter,
|
||||
),
|
||||
withReferenceMapper: (p0) => p0
|
||||
|
|
|
|||
|
|
@ -212,19 +212,35 @@ class _UserListItem extends State<UserListItem> {
|
|||
if (notOpenedMessagesSnapshot.data != null &&
|
||||
notOpenedMessagesSnapshot.data!.isNotEmpty) {
|
||||
// filter first for only received messages
|
||||
lastMessages = notOpenedMessagesSnapshot.data!
|
||||
var notOpenedMessages = notOpenedMessagesSnapshot.data!;
|
||||
|
||||
lastMessages = notOpenedMessages
|
||||
.where((x) => x.messageOtherId != null)
|
||||
.toList();
|
||||
if (lastMessages.isEmpty) {
|
||||
lastMessages = notOpenedMessagesSnapshot.data!;
|
||||
}
|
||||
|
||||
var media =
|
||||
lastMessages.where((x) => x.kind == MessageKind.media);
|
||||
if (media.isNotEmpty) {
|
||||
currentMessage = media.first;
|
||||
// For send images show only one
|
||||
if (lastMessages.isEmpty) {
|
||||
var media = notOpenedMessages
|
||||
.where((x) => x.kind == MessageKind.media);
|
||||
|
||||
if (media.isNotEmpty) {
|
||||
currentMessage = media.first;
|
||||
lastMessages = [currentMessage!];
|
||||
} else {
|
||||
currentMessage = notOpenedMessages.first;
|
||||
lastMessages = [currentMessage!];
|
||||
}
|
||||
} 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 {
|
||||
currentMessage = lastMessage;
|
||||
|
|
|
|||
Loading…
Reference in a new issue