mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2024-11-23 20:49:26 +01:00
fix: Do not rebuild chat view twice on each message
This commit is contained in:
parent
587c4210f4
commit
fbe8ecaad5
@ -120,6 +120,12 @@ class ChatView extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
bool hasRoomStateUpdate(SyncUpdate syncUpdate) =>
|
||||
syncUpdate.rooms?.leave?[controller.roomId]?.state?.isNotEmpty == true ||
|
||||
syncUpdate.rooms?.invite?[controller.roomId]?.inviteState?.isNotEmpty ==
|
||||
true ||
|
||||
syncUpdate.rooms?.join?[controller.roomId]?.state?.isNotEmpty == true;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
controller.matrix ??= Matrix.of(context);
|
||||
@ -157,8 +163,12 @@ class ChatView extends StatelessWidget {
|
||||
onTapDown: controller.setReadMarker,
|
||||
behavior: HitTestBehavior.opaque,
|
||||
child: StreamBuilder(
|
||||
stream: controller.room!.onUpdate.stream
|
||||
.rateLimit(const Duration(milliseconds: 250)),
|
||||
stream: Matrix.of(context)
|
||||
.client
|
||||
.onSync
|
||||
.stream
|
||||
.where(hasRoomStateUpdate)
|
||||
.rateLimit(const Duration(seconds: 1)),
|
||||
builder: (context, snapshot) => FutureBuilder<bool>(
|
||||
future: controller.getTimeline(),
|
||||
builder: (BuildContext context, snapshot) {
|
||||
|
Loading…
Reference in New Issue
Block a user