From ff54610e5b471f50f8e40ee2e9658460de19652f Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sun, 19 May 2024 07:52:18 +0200 Subject: [PATCH] refactor: Use onRoomState stream instead of room.onUpdate to not update on messages but state changes only --- lib/pages/chat/chat_view.dart | 3 ++- lib/pages/chat_access_settings/chat_access_settings_page.dart | 3 ++- lib/pages/chat_details/chat_details_view.dart | 3 ++- .../chat_encryption_settings_view.dart | 3 ++- lib/pages/invitation_selection/invitation_selection_view.dart | 3 ++- .../settings_multiple_emotes_view.dart | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 7dd30365..ae8ac4d9 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -150,7 +150,8 @@ class ChatView extends StatelessWidget { } }, child: StreamBuilder( - stream: controller.room.onUpdate.stream + stream: controller.room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id) .rateLimit(const Duration(seconds: 1)), builder: (context, snapshot) => FutureBuilder( future: controller.loadTimelineFuture, diff --git a/lib/pages/chat_access_settings/chat_access_settings_page.dart b/lib/pages/chat_access_settings/chat_access_settings_page.dart index a0e2f870..48d2d950 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_page.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_page.dart @@ -22,7 +22,8 @@ class ChatAccessSettingsPageView extends StatelessWidget { ), body: MaxWidthBody( child: StreamBuilder( - stream: room.onUpdate.stream, + stream: room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id), builder: (context, snapshot) { final canonicalAlias = room.canonicalAlias; final altAliases = room diff --git a/lib/pages/chat_details/chat_details_view.dart b/lib/pages/chat_details/chat_details_view.dart index 9ff6af33..0c263355 100644 --- a/lib/pages/chat_details/chat_details_view.dart +++ b/lib/pages/chat_details/chat_details_view.dart @@ -36,7 +36,8 @@ class ChatDetailsView extends StatelessWidget { } return StreamBuilder( - stream: room.onUpdate.stream, + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), builder: (context, snapshot) { var members = room.getParticipants().toList() ..sort((b, a) => a.powerLevel.compareTo(b.powerLevel)); diff --git a/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart b/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart index f7a19f96..d1be4e7d 100644 --- a/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart +++ b/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart @@ -82,7 +82,8 @@ class ChatEncryptionSettingsView extends StatelessWidget { ), ), StreamBuilder( - stream: room.onUpdate.stream, + stream: room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id), builder: (context, snapshot) => FutureBuilder>( future: room.getUserDeviceKeys(), diff --git a/lib/pages/invitation_selection/invitation_selection_view.dart b/lib/pages/invitation_selection/invitation_selection_view.dart index 3efde204..92596e89 100644 --- a/lib/pages/invitation_selection/invitation_selection_view.dart +++ b/lib/pages/invitation_selection/invitation_selection_view.dart @@ -64,7 +64,8 @@ class InvitationSelectionView extends StatelessWidget { ), ), StreamBuilder( - stream: room.onUpdate.stream, + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), builder: (context, snapshot) { final participants = room.getParticipants().map((user) => user.id).toSet(); diff --git a/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart b/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart index 939263fd..5b910a8b 100644 --- a/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart +++ b/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart @@ -21,7 +21,8 @@ class MultipleEmotesSettingsView extends StatelessWidget { title: Text(L10n.of(context)!.emotePacks), ), body: StreamBuilder( - stream: room.onUpdate.stream, + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), builder: (context, snapshot) { final packStateEvents = room.states['im.ponies.room_emotes']; // we need to manually convert the map using Map.of, otherwise assigning null will throw a type error.