Merge pull request #429 from GetStream/perf-fixes

fix: performance
This commit is contained in:
Salvatore Giordano
2021-05-12 13:49:39 +02:00
committed by GitHub
2 changed files with 9 additions and 7 deletions
+4 -4
View File
@@ -79,21 +79,21 @@ class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final messages = channel.state!.channelStateStream;
final messages = channel.state!.messagesStream;
return Scaffold(
appBar: AppBar(
title: Text('Channel: ${channel.id}'),
),
body: SafeArea(
child: StreamBuilder<ChannelState?>(
child: StreamBuilder<List<Message>?>(
stream: messages,
builder: (
BuildContext context,
AsyncSnapshot<ChannelState?> snapshot,
AsyncSnapshot<List<Message>?> snapshot,
) {
if (snapshot.hasData && snapshot.data != null) {
return MessageView(
messages: snapshot.data!.messages.reversed.toList(),
messages: snapshot.data!.reversed.toList(),
channel: channel,
);
} else if (snapshot.hasError) {
@@ -2,7 +2,8 @@ import 'dart:async';
import 'dart:convert';
import 'dart:math';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:collection/collection.dart'
show IterableExtension, ListEquality;
import 'package:dio/dio.dart';
import 'package:logging/logging.dart';
import 'package:rxdart/rxdart.dart';
@@ -1601,8 +1602,9 @@ class ChannelClientState {
List<Message> get messages => _channelState.messages;
/// Channel message list as a stream
Stream<List<Message>?> get messagesStream =>
channelStateStream.map((cs) => cs.messages);
Stream<List<Message>?> get messagesStream => channelStateStream
.map((cs) => cs.messages)
.distinct((prev, next) => const ListEquality().equals(prev, next));
/// Channel pinned message list
List<Message>? get pinnedMessages => _channelState.pinnedMessages.toList();