diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 2cae86d1..220f7a94 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -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( future: controller.getTimeline(), builder: (BuildContext context, snapshot) {