@@ -80,15 +80,33 @@ class _ReadReceiptsState extends State<ReadReceipts> with PerAccountStoreAwareSt
8080
8181 @override
8282 Widget build (BuildContext context) {
83+ final zulipLocalizations = ZulipLocalizations .of (context);
8384 // TODO could pull out this layout/appearance code,
8485 // focusing this widget only on state management
8586
87+ final content = switch (status) {
88+ FetchStatus .loading => BottomSheetEmptyContentPlaceholder (loading: true ),
89+ FetchStatus .error => BottomSheetEmptyContentPlaceholder (
90+ message: zulipLocalizations.actionSheetReadReceiptsErrorReadCount),
91+ FetchStatus .success => userIds.isEmpty
92+ ? BottomSheetEmptyContentPlaceholder (
93+ message: zulipLocalizations.actionSheetReadReceiptsZeroReadCount)
94+ : InsetShadowBox (
95+ top: 8 , bottom: 8 ,
96+ color: DesignVariables .of (context).bgContextMenu,
97+ child: ListView .builder (
98+ padding: EdgeInsets .symmetric (vertical: 8 ),
99+ itemCount: userIds.length,
100+ itemBuilder: (context, index) =>
101+ ReadReceiptsUserItem (userId: userIds[index])))
102+ };
103+
86104 return SizedBox (
87105 height: 500 , // TODO(design) tune
88106 child: Column (
89107 children: [
90108 _ReadReceiptsHeader (receiptCount: userIds.length, status: status),
91- Expanded (child: _ReadReceiptsUserList (userIds : userIds, status : status) ),
109+ Expanded (child: content ),
92110 Padding (
93111 padding: const EdgeInsets .symmetric (horizontal: 16 ),
94112 child: const BottomSheetDismissButton (style: BottomSheetDismissButtonStyle .close))
@@ -129,35 +147,6 @@ class _ReadReceiptsHeader extends StatelessWidget {
129147 }
130148}
131149
132- class _ReadReceiptsUserList extends StatelessWidget {
133- const _ReadReceiptsUserList ({required this .userIds, required this .status});
134-
135- final List <int > userIds;
136- final FetchStatus status;
137-
138- @override
139- Widget build (BuildContext context) {
140- final zulipLocalizations = ZulipLocalizations .of (context);
141-
142- return switch (status) {
143- FetchStatus .loading => BottomSheetEmptyContentPlaceholder (loading: true ),
144- FetchStatus .error => BottomSheetEmptyContentPlaceholder (
145- message: zulipLocalizations.actionSheetReadReceiptsErrorReadCount),
146- FetchStatus .success => userIds.isEmpty
147- ? BottomSheetEmptyContentPlaceholder (
148- message: zulipLocalizations.actionSheetReadReceiptsZeroReadCount)
149- : InsetShadowBox (
150- top: 8 , bottom: 8 ,
151- color: DesignVariables .of (context).bgContextMenu,
152- child: ListView .builder (
153- padding: EdgeInsets .symmetric (vertical: 8 ),
154- itemCount: userIds.length,
155- itemBuilder: (context, index) =>
156- ReadReceiptsUserItem (userId: userIds[index])))
157- };
158- }
159- }
160-
161150// TODO: deduplicate the code with [ViewReactionsUserItem]
162151@visibleForTesting
163152class ReadReceiptsUserItem extends StatelessWidget {
0 commit comments