diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 0fa4c022..cb1dcbe5 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -2533,5 +2533,6 @@ "placeholders": { "seconds": {} } - } + }, + "pleaseEnterANumber": "Please enter a number greater than 0" } diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart index 491f86ef..b38efa21 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet.dart @@ -34,7 +34,7 @@ class LoadProfileBottomSheet extends StatelessWidget { @override Widget build(BuildContext context) { return FutureBuilder( - future: Matrix.of(context) + future: Matrix.of(outerContext) .client .getUserProfile(userId) .timeout(const Duration(seconds: 3)), @@ -138,7 +138,7 @@ class UserBottomSheetController extends State { if (reason == null || reason.single.isEmpty) return; final result = await showFutureLoadingDialog( context: context, - future: () => Matrix.of(context).client.reportContent( + future: () => Matrix.of(widget.outerContext).client.reportContent( user.roomId!, user.eventId, reason: reason.single, @@ -203,7 +203,7 @@ class UserBottomSheetController extends State { case UserBottomSheetAction.message: final roomIdResult = await showFutureLoadingDialog( context: context, - future: () => Matrix.of(context) + future: () => Matrix.of(widget.outerContext) .client .startDirectChat(user?.id ?? widget.profile!.userId), ); @@ -215,7 +215,7 @@ class UserBottomSheetController extends State { if (await askConfirmation()) { await showFutureLoadingDialog( context: context, - future: () => Matrix.of(context) + future: () => Matrix.of(widget.outerContext) .client .ignoreUser(user?.id ?? widget.profile!.userId), ); diff --git a/lib/widgets/permission_slider_dialog.dart b/lib/widgets/permission_slider_dialog.dart index 8f895898..cc6e9303 100644 --- a/lib/widgets/permission_slider_dialog.dart +++ b/lib/widgets/permission_slider_dialog.dart @@ -61,6 +61,16 @@ Future showPermissionChooser( initialText: currentLevel.toString(), keyboardType: TextInputType.number, autocorrect: false, + validator: (text) { + if (text == null) { + return L10n.of(context)!.pleaseEnterANumber; + } + final level = int.tryParse(text); + if (level == null || level < 0) { + return L10n.of(context)!.pleaseEnterANumber; + } + return null; + }, ), ], );