Migrated llc Lists to be nullable instead of being an empty array
This commit is contained in:
@@ -98,8 +98,9 @@ class HomeScreen extends StatelessWidget {
|
||||
AsyncSnapshot<ChannelState?> snapshot,
|
||||
) {
|
||||
if (snapshot.hasData && snapshot.data != null) {
|
||||
final _messages = snapshot.data!.messages ?? [];
|
||||
return MessageView(
|
||||
messages: snapshot.data!.messages.reversed.toList(),
|
||||
messages: _messages.reversed.toList(),
|
||||
channel: channel,
|
||||
);
|
||||
} else if (snapshot.hasError) {
|
||||
|
||||
@@ -34,14 +34,20 @@ class MemberDao extends DatabaseAccessor<DriftChatDatabase>
|
||||
bulkUpdateMembers({cid: memberList});
|
||||
|
||||
/// Bulk updates the members data of multiple channels
|
||||
Future<void> bulkUpdateMembers(Map<String, List<Member>> channelWithMembers) {
|
||||
Future<void> bulkUpdateMembers(
|
||||
Map<String, List<Member>?> channelWithMembers,
|
||||
) {
|
||||
final entities = channelWithMembers.entries
|
||||
.map((entry) => entry.value.map(
|
||||
.map((entry) =>
|
||||
(entry.value?.map(
|
||||
(member) => member.toEntity(cid: entry.key),
|
||||
))
|
||||
)) ??
|
||||
[])
|
||||
.expand((it) => it)
|
||||
.toList(growable: false);
|
||||
return batch((batch) => batch.insertAllOnConflictUpdate(members, entities));
|
||||
return batch(
|
||||
(batch) => batch.insertAllOnConflictUpdate(members, entities),
|
||||
);
|
||||
}
|
||||
|
||||
/// Deletes all the members whose [Members.channelCid] is present in [cids]
|
||||
|
||||
@@ -183,12 +183,14 @@ class MessageDao extends DatabaseAccessor<DriftChatDatabase>
|
||||
|
||||
/// Bulk updates the message data of multiple channels
|
||||
Future<void> bulkUpdateMessages(
|
||||
Map<String, List<Message>> channelWithMessages,
|
||||
Map<String, List<Message>?> channelWithMessages,
|
||||
) {
|
||||
final entities = channelWithMessages.entries
|
||||
.map((entry) => entry.value.map(
|
||||
.map((entry) =>
|
||||
entry.value?.map(
|
||||
(message) => message.toEntity(cid: entry.key),
|
||||
))
|
||||
) ??
|
||||
[])
|
||||
.expand((it) => it)
|
||||
.toList(growable: false);
|
||||
return batch(
|
||||
|
||||
@@ -183,12 +183,14 @@ class PinnedMessageDao extends DatabaseAccessor<DriftChatDatabase>
|
||||
|
||||
/// Bulk updates the message data of multiple channels
|
||||
Future<void> bulkUpdateMessages(
|
||||
Map<String, List<Message>> channelWithMessages,
|
||||
Map<String, List<Message>?> channelWithMessages,
|
||||
) {
|
||||
final entities = channelWithMessages.entries
|
||||
.map((entry) => entry.value.map(
|
||||
.map((entry) =>
|
||||
entry.value?.map(
|
||||
(message) => message.toPinnedEntity(cid: entry.key),
|
||||
))
|
||||
) ??
|
||||
[])
|
||||
.expand((it) => it)
|
||||
.toList(growable: false);
|
||||
return batch(
|
||||
|
||||
@@ -33,11 +33,13 @@ class ReadDao extends DatabaseAccessor<DriftChatDatabase> with _$ReadDaoMixin {
|
||||
bulkUpdateReads({cid: readList});
|
||||
|
||||
/// Bulk updates the reads data of multiple channels
|
||||
Future<void> bulkUpdateReads(Map<String, List<Read>> channelWithReads) {
|
||||
Future<void> bulkUpdateReads(Map<String, List<Read>?> channelWithReads) {
|
||||
final entities = channelWithReads.entries
|
||||
.map((entry) => entry.value.map(
|
||||
.map((entry) =>
|
||||
entry.value?.map(
|
||||
(read) => read.toEntity(cid: entry.key),
|
||||
))
|
||||
) ??
|
||||
[])
|
||||
.expand((it) => it)
|
||||
.toList(growable: false);
|
||||
return batch((batch) => batch.insertAllOnConflictUpdate(reads, entities));
|
||||
|
||||
@@ -56,7 +56,7 @@ class DriftChatDatabase extends _$DriftChatDatabase {
|
||||
|
||||
// you should bump this number whenever you change or add a table definition.
|
||||
@override
|
||||
int get schemaVersion => 6;
|
||||
int get schemaVersion => 7;
|
||||
|
||||
@override
|
||||
MigrationStrategy get migration => MigrationStrategy(
|
||||
|
||||
@@ -295,21 +295,21 @@ class StreamChatPersistenceClient extends ChatPersistenceClient {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> bulkUpdateMembers(Map<String, List<Member>> members) {
|
||||
Future<void> bulkUpdateMembers(Map<String, List<Member>?> members) {
|
||||
assert(_debugIsConnected, '');
|
||||
_logger.info('bulkUpdateMembers');
|
||||
return _readProtected(() => db!.memberDao.bulkUpdateMembers(members));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> bulkUpdateMessages(Map<String, List<Message>> messages) {
|
||||
Future<void> bulkUpdateMessages(Map<String, List<Message>?> messages) {
|
||||
assert(_debugIsConnected, '');
|
||||
_logger.info('bulkUpdateMessages');
|
||||
return _readProtected(() => db!.messageDao.bulkUpdateMessages(messages));
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> bulkUpdatePinnedMessages(Map<String, List<Message>> messages) {
|
||||
Future<void> bulkUpdatePinnedMessages(Map<String, List<Message>?> messages) {
|
||||
assert(_debugIsConnected, '');
|
||||
_logger.info('bulkUpdatePinnedMessages');
|
||||
return _readProtected(
|
||||
@@ -334,7 +334,7 @@ class StreamChatPersistenceClient extends ChatPersistenceClient {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> bulkUpdateReads(Map<String, List<Read>> reads) {
|
||||
Future<void> bulkUpdateReads(Map<String, List<Read>?> reads) {
|
||||
assert(_debugIsConnected, '');
|
||||
_logger.info('bulkUpdateReads');
|
||||
return _readProtected(() => db!.readDao.bulkUpdateReads(reads));
|
||||
|
||||
@@ -61,10 +61,10 @@ void main() {
|
||||
);
|
||||
|
||||
expect(channelState, isA<ChannelState>());
|
||||
expect(channelState.members.length, members.length);
|
||||
expect(channelState.read.length, reads.length);
|
||||
expect(channelState.messages.length, messages.length);
|
||||
expect(channelState.pinnedMessages.length, messages.length);
|
||||
expect(channelState.members?.length, members.length);
|
||||
expect(channelState.read?.length, reads.length);
|
||||
expect(channelState.messages?.length, messages.length);
|
||||
expect(channelState.pinnedMessages?.length, messages.length);
|
||||
|
||||
final channelModel = channelState.channel!;
|
||||
expect(channelModel.id, entity.id);
|
||||
|
||||
@@ -219,10 +219,10 @@ void main() {
|
||||
.thenAnswer((_) async => messages);
|
||||
|
||||
final fetchedChannelState = await client.getChannelStateByCid(cid);
|
||||
expect(fetchedChannelState.messages.length, messages.length);
|
||||
expect(fetchedChannelState.pinnedMessages.length, messages.length);
|
||||
expect(fetchedChannelState.members.length, members.length);
|
||||
expect(fetchedChannelState.read.length, reads.length);
|
||||
expect(fetchedChannelState.messages?.length, messages.length);
|
||||
expect(fetchedChannelState.pinnedMessages?.length, messages.length);
|
||||
expect(fetchedChannelState.members?.length, members.length);
|
||||
expect(fetchedChannelState.read?.length, reads.length);
|
||||
expect(fetchedChannelState.channel!.cid, channel.cid);
|
||||
|
||||
verify(() => mockDatabase.memberDao.getMembersByCid(cid)).called(1);
|
||||
@@ -277,10 +277,10 @@ void main() {
|
||||
for (var i = 0; i < fetchedChannelStates.length; i++) {
|
||||
final original = channelStates[i];
|
||||
final fetched = fetchedChannelStates[i];
|
||||
expect(fetched.members.length, original.members.length);
|
||||
expect(fetched.messages.length, original.messages.length);
|
||||
expect(fetched.pinnedMessages.length, original.pinnedMessages.length);
|
||||
expect(fetched.read.length, original.read.length);
|
||||
expect(fetched.members?.length, original.members?.length);
|
||||
expect(fetched.messages?.length, original.messages?.length);
|
||||
expect(fetched.pinnedMessages?.length, original.pinnedMessages?.length);
|
||||
expect(fetched.read?.length, original.read?.length);
|
||||
expect(fetched.channel!.cid, original.channel!.cid);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user