@@ -24,6 +24,7 @@ import 'emoji_reaction.dart';
24
24
import 'icons.dart' ;
25
25
import 'inset_shadow.dart' ;
26
26
import 'message_list.dart' ;
27
+ import 'page.dart' ;
27
28
import 'store.dart' ;
28
29
import 'text.dart' ;
29
30
import 'theme.dart' ;
@@ -163,11 +164,15 @@ class ActionSheetCancelButton extends StatelessWidget {
163
164
}
164
165
165
166
/// Show a sheet of actions you can take on a topic.
167
+ ///
168
+ /// Needs a [PageRoot] ancestor.
166
169
void showTopicActionSheet (BuildContext context, {
167
170
required int channelId,
168
171
required TopicName topic,
169
172
}) {
170
- final store = PerAccountStoreWidget .of (context);
173
+ final pageContext = PageRoot .contextOf (context);
174
+
175
+ final store = PerAccountStoreWidget .of (pageContext);
171
176
final subscription = store.subscriptions[channelId];
172
177
173
178
final optionButtons = < ActionSheetMenuItemButton > [];
@@ -237,7 +242,7 @@ void showTopicActionSheet(BuildContext context, {
237
242
currentVisibilityPolicy: visibilityPolicy,
238
243
newVisibilityPolicy: to,
239
244
narrow: TopicNarrow (channelId, topic),
240
- pageContext: context );
245
+ pageContext: pageContext );
241
246
}));
242
247
243
248
if (optionButtons.isEmpty) {
@@ -250,7 +255,7 @@ void showTopicActionSheet(BuildContext context, {
250
255
return ;
251
256
}
252
257
253
- _showActionSheet (context , optionButtons: optionButtons);
258
+ _showActionSheet (pageContext , optionButtons: optionButtons);
254
259
}
255
260
256
261
class UserTopicUpdateButton extends ActionSheetMenuItemButton {
@@ -376,33 +381,34 @@ class UserTopicUpdateButton extends ActionSheetMenuItemButton {
376
381
///
377
382
/// Must have a [MessageListPage] ancestor.
378
383
void showMessageActionSheet ({required BuildContext context, required Message message}) {
379
- final store = PerAccountStoreWidget .of (context);
384
+ final pageContext = PageRoot .contextOf (context);
385
+ final store = PerAccountStoreWidget .of (pageContext);
380
386
381
387
// The UI that's conditioned on this won't live-update during this appearance
382
388
// of the action sheet (we avoid calling composeBoxControllerOf in a build
383
389
// method; see its doc).
384
390
// So we rely on the fact that isComposeBoxOffered for any given message list
385
391
// will be constant through the page's life.
386
- final messageListPage = MessageListPage .ancestorOf (context );
392
+ final messageListPage = MessageListPage .ancestorOf (pageContext );
387
393
final isComposeBoxOffered = messageListPage.composeBoxController != null ;
388
394
389
395
final isMessageRead = message.flags.contains (MessageFlag .read);
390
396
final markAsUnreadSupported = store.connection.zulipFeatureLevel! >= 155 ; // TODO(server-6)
391
397
final showMarkAsUnreadButton = markAsUnreadSupported && isMessageRead;
392
398
393
399
final optionButtons = [
394
- ReactionButtons (message: message, pageContext: context ),
395
- StarButton (message: message, pageContext: context ),
400
+ ReactionButtons (message: message, pageContext: pageContext ),
401
+ StarButton (message: message, pageContext: pageContext ),
396
402
if (isComposeBoxOffered)
397
- QuoteAndReplyButton (message: message, pageContext: context ),
403
+ QuoteAndReplyButton (message: message, pageContext: pageContext ),
398
404
if (showMarkAsUnreadButton)
399
- MarkAsUnreadButton (message: message, pageContext: context ),
400
- CopyMessageTextButton (message: message, pageContext: context ),
401
- CopyMessageLinkButton (message: message, pageContext: context ),
402
- ShareButton (message: message, pageContext: context ),
405
+ MarkAsUnreadButton (message: message, pageContext: pageContext ),
406
+ CopyMessageTextButton (message: message, pageContext: pageContext ),
407
+ CopyMessageLinkButton (message: message, pageContext: pageContext ),
408
+ ShareButton (message: message, pageContext: pageContext ),
403
409
];
404
410
405
- _showActionSheet (context , optionButtons: optionButtons);
411
+ _showActionSheet (pageContext , optionButtons: optionButtons);
406
412
}
407
413
408
414
abstract class MessageActionSheetMenuItemButton extends ActionSheetMenuItemButton {
0 commit comments