@@ -8,12 +8,13 @@ import 'color.dart';
8
8
import 'icons.dart' ;
9
9
import 'message_list.dart' ;
10
10
import 'page.dart' ;
11
+ import 'recent_dm_conversations.dart' ;
11
12
import 'store.dart' ;
12
13
import 'text.dart' ;
13
14
import 'theme.dart' ;
14
15
import 'user.dart' ;
15
16
16
- void showNewDmSheet (BuildContext context) {
17
+ void showNewDmSheet (BuildContext context, OnDmSelectCallback ? onDmSelect ) {
17
18
final pageContext = PageRoot .contextOf (context);
18
19
final store = PerAccountStoreWidget .of (context);
19
20
showModalBottomSheet <void >(
@@ -29,12 +30,14 @@ void showNewDmSheet(BuildContext context) {
29
30
padding: EdgeInsets .only (bottom: MediaQuery .viewInsetsOf (context).bottom),
30
31
child: PerAccountStoreWidget (
31
32
accountId: store.accountId,
32
- child: NewDmPicker ())));
33
+ child: NewDmPicker (onDmSelect : onDmSelect ))));
33
34
}
34
35
35
36
@visibleForTesting
36
37
class NewDmPicker extends StatefulWidget {
37
- const NewDmPicker ({super .key});
38
+ const NewDmPicker ({super .key, this .onDmSelect});
39
+
40
+ final OnDmSelectCallback ? onDmSelect;
38
41
39
42
@override
40
43
State <NewDmPicker > createState () => _NewDmPickerState ();
@@ -132,7 +135,7 @@ class _NewDmPickerState extends State<NewDmPicker> with PerAccountStoreAwareStat
132
135
@override
133
136
Widget build (BuildContext context) {
134
137
return Column (crossAxisAlignment: CrossAxisAlignment .stretch, children: [
135
- _NewDmHeader (selectedUserIds: selectedUserIds),
138
+ _NewDmHeader (selectedUserIds: selectedUserIds, onDmSelect : widget.onDmSelect ),
136
139
_NewDmSearchBar (
137
140
controller: searchController,
138
141
selectedUserIds: selectedUserIds,
@@ -148,9 +151,10 @@ class _NewDmPickerState extends State<NewDmPicker> with PerAccountStoreAwareStat
148
151
}
149
152
150
153
class _NewDmHeader extends StatelessWidget {
151
- const _NewDmHeader ({required this .selectedUserIds});
154
+ const _NewDmHeader ({required this .selectedUserIds, required this .onDmSelect });
152
155
153
156
final Set <int > selectedUserIds;
157
+ final OnDmSelectCallback ? onDmSelect;
154
158
155
159
Widget _buildCancelButton (BuildContext context) {
156
160
final designVariables = DesignVariables .of (context);
@@ -178,8 +182,14 @@ class _NewDmHeader extends StatelessWidget {
178
182
final narrow = DmNarrow .withUsers (
179
183
selectedUserIds.toList (),
180
184
selfUserId: store.selfUserId);
181
- Navigator .pushReplacement (context,
182
- MessageListPage .buildRoute (context: context, narrow: narrow));
185
+ if (onDmSelect != null ) {
186
+ // Pop the new DMs action sheet.
187
+ Navigator .pop (context);
188
+ onDmSelect !(context, narrow);
189
+ } else {
190
+ Navigator .pushReplacement (context,
191
+ MessageListPage .buildRoute (context: context, narrow: narrow));
192
+ }
183
193
},
184
194
child: Text (zulipLocalizations.newDmSheetComposeButtonLabel,
185
195
style: TextStyle (
0 commit comments