Skip to content

Commit 5ed54a7

Browse files
authored
chore: improve radio init and reduce repaints (#103)
1 parent ccf7680 commit 5ed54a7

35 files changed

+354
-228
lines changed

lib/chat_master/view/chat_master_detail_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class _ChatMasterDetailPageState extends State<ChatMasterDetailPage> {
126126
)
127127
: const Center(child: Progress()),
128128
),
129-
bottomNavigationBar: const RepaintBoundary(child: PlayerView()),
129+
bottomNavigationBar: const PlayerView(),
130130
);
131131
}
132132
}

lib/chat_master/view/chat_master_panel.dart

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,7 @@ class ChatMasterSidePanel extends StatelessWidget with WatchItMixin {
6060
context: context,
6161
builder: (context) => const ChatSettingsDialog(),
6262
),
63-
trailing: IconButton(
64-
tooltip: l10n.playMedia,
65-
onPressed: () {
66-
showDialog(
67-
context: context,
68-
builder: (context) => const PlayerFullView(),
69-
);
70-
di<PlayerManager>().updateState(fullMode: true);
71-
},
72-
icon: const Icon(YaruIcons.media_play),
73-
),
63+
trailing: const _OpenEmptyPlayerButton(),
7464
),
7565
],
7666
),
@@ -80,3 +70,31 @@ class ChatMasterSidePanel extends StatelessWidget with WatchItMixin {
8070
);
8171
}
8272
}
73+
74+
class _OpenEmptyPlayerButton extends StatelessWidget with WatchItMixin {
75+
const _OpenEmptyPlayerButton();
76+
77+
@override
78+
Widget build(BuildContext context) {
79+
final currentMedia = watchStream(
80+
(PlayerManager p) => p.currentMediaStream,
81+
initialValue: di<PlayerManager>().currentMedia,
82+
).data;
83+
84+
if (currentMedia != null) {
85+
return const SizedBox.shrink();
86+
}
87+
88+
return IconButton(
89+
tooltip: context.l10n.playMedia,
90+
onPressed: () {
91+
showDialog(
92+
context: context,
93+
builder: (context) => const PlayerFullView(),
94+
);
95+
di<PlayerManager>().updateState(fullMode: true);
96+
},
97+
icon: const Icon(YaruIcons.media_play),
98+
);
99+
}
100+
}

lib/chat_master/view/chat_rooms_list.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class ChatRoomsList extends StatelessWidget with WatchItMixin {
1313
watchStream(
1414
(ChatManager m) => m.syncStream.map((_) => m.filteredRooms),
1515
initialValue: di<ChatManager>().filteredRooms,
16-
preserveState: true,
16+
preserveState: false,
1717
).data ??
1818
di<ChatManager>().filteredRooms;
1919
watchPropertyValue((ChatManager m) => m.filteredRoomsQuery);

lib/chat_master/view/chat_space_filter.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ChatSpaceFilter extends StatelessWidget with WatchItMixin {
2222
watchStream(
2323
(ChatManager m) => m.spacesStream,
2424
initialValue: chatManager.spaces,
25-
preserveState: true,
25+
preserveState: false,
2626
).data ??
2727
chatManager.spaces;
2828

lib/chat_room/common/view/chat_room_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ class _ChatRoomPageState extends State<ChatRoomPage> {
9595
widget.room.isDirectChat && invitedUsers.isNotEmpty,
9696
),
9797
initialValue: widget.room.isUnacceptedDirectChat,
98-
preserveState: true,
98+
preserveState: false,
9999
).data;
100100

101101
return DropRegion(

lib/chat_room/common/view/chat_room_users_list.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class ChatRoomUsersList extends StatelessWidget with WatchItMixin {
3939
membershipFilter: membershipFilter,
4040
),
4141
initialValue: room.getParticipants(membershipFilter),
42-
preserveState: true,
42+
preserveState: false,
4343
).data?.sorted((a, b) => b.powerLevel.compareTo(a.powerLevel));
4444

4545
if (users == null || users.isEmpty) {

lib/chat_room/create_or_edit/view/chat_room_history_visibility_drop_down.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class ChatRoomHistoryVisibilityDropDown extends StatelessWidget
2929
(EditRoomService m) =>
3030
m.getJoinedRoomHistoryVisibilityStream(room!),
3131
initialValue: room!.historyVisibility,
32-
preserveState: true,
32+
preserveState: false,
3333
).data ??
3434
room!.historyVisibility;
3535

@@ -39,7 +39,7 @@ class ChatRoomHistoryVisibilityDropDown extends StatelessWidget
3939
(EditRoomService m) =>
4040
m.getCanChangeHistoryVisibilityStream(room!),
4141
initialValue: room!.canChangeHistoryVisibility,
42-
preserveState: true,
42+
preserveState: false,
4343
).data ??
4444
false;
4545

lib/chat_room/create_or_edit/view/chat_room_join_rules_drop_down.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ class ChatRoomJoinRulesDropDown extends StatelessWidget with WatchItMixin {
2323
final canChangeJoinRules =
2424
watchStream(
2525
(EditRoomService m) => m.getCanChangeJoinRulesStream(room),
26-
preserveState: true,
26+
preserveState: false,
2727
initialValue: room.canChangeJoinRules,
2828
).data ??
2929
room.canChangeJoinRules;
3030

3131
final joinRules =
3232
watchStream(
3333
(EditRoomService m) => m.getJoinedRoomJoinRulesStream(room),
34-
preserveState: true,
34+
preserveState: false,
3535
initialValue: room.joinRules,
3636
).data ??
3737
JoinRules.private;

lib/chat_room/create_or_edit/view/chat_room_permissions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ChatRoomPermissions extends StatelessWidget with WatchItMixin {
2424
watchStream(
2525
(EditRoomService m) => m.canChangePowerLevels(room),
2626
initialValue: room.canChangePowerLevel,
27-
preserveState: true,
27+
preserveState: false,
2828
).data ??
2929
room.canChangePowerLevel;
3030

lib/chat_room/create_or_edit/view/create_or_edit_room_canonical_alias_text_field.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class _CreateOrEditRoomCanonicalAliasTextFieldState
4545
(EditRoomService m) =>
4646
m.getCanChangeCanonicalAliasStream(widget.room),
4747
initialValue: widget.room.canChangeCanonicalAlias,
48-
preserveState: true,
48+
preserveState: false,
4949
).data ??
5050
false;
5151

@@ -55,7 +55,7 @@ class _CreateOrEditRoomCanonicalAliasTextFieldState
5555
(EditRoomService m) =>
5656
m.getJoinedRoomCanonicalAliasStream(widget.room),
5757
initialValue: widget.room.canonicalAlias,
58-
preserveState: true,
58+
preserveState: false,
5959
).data ??
6060
widget.room.canonicalAlias;
6161
final homeServer = di<AuthenticationService>().homeServerName;

0 commit comments

Comments
 (0)