From c420343db97a9bd9a82812604039b86e3a36c6fc Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Fri, 8 Jul 2022 10:55:07 +0200 Subject: [PATCH] chore: Enhance invitiation UX --- integration_test/app_test.dart | 1 - lib/pages/chat_list/chat_list_body.dart | 11 ++++++----- .../invitation_selection/invitation_selection.dart | 14 ++++++++++++-- .../invitation_selection_view.dart | 9 ++++++++- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index 2aea9ec5..0ba99b21 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -26,7 +26,6 @@ void main() { await tester.pumpAndSettle(); expect(find.text('Connect'), findsOneWidget); - expect(find.text('Homeserver'), findsOneWidget); final input = find.byType(TextField); diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart index 9a988117..c2b108e3 100644 --- a/lib/pages/chat_list/chat_list_body.dart +++ b/lib/pages/chat_list/chat_list_body.dart @@ -180,11 +180,12 @@ class _ChatListViewBodyState extends State { .onSecondaryContainer, ), title: Text( - Matrix.of(context) - .client - .encryption! - .keyManager - .enabled + (Matrix.of(context) + .client + .encryption + ?.keyManager + .enabled == + true) ? L10n.of(context)!.unlockOldMessages : L10n.of(context)!.enableAutoBackups, style: TextStyle( diff --git a/lib/pages/invitation_selection/invitation_selection.dart b/lib/pages/invitation_selection/invitation_selection.dart index 78972589..cba0dd8f 100644 --- a/lib/pages/invitation_selection/invitation_selection.dart +++ b/lib/pages/invitation_selection/invitation_selection.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:matrix/matrix.dart'; @@ -50,10 +51,19 @@ class InvitationSelectionController extends State { } void inviteAction(BuildContext context, String id) async { - final room = Matrix.of(context).client.getRoomById(roomId!); + final room = Matrix.of(context).client.getRoomById(roomId!)!; + if (OkCancelResult.ok != + await showOkCancelAlertDialog( + context: context, + title: L10n.of(context)!.inviteContactToGroup(room.displayname), + okLabel: L10n.of(context)!.yes, + cancelLabel: L10n.of(context)!.cancel, + )) { + return; + } final success = await showFutureLoadingDialog( context: context, - future: () => room!.invite(id), + future: () => room.invite(id), ); if (success.error == null) { ScaffoldMessenger.of(context).showSnackBar(SnackBar( diff --git a/lib/pages/invitation_selection/invitation_selection_view.dart b/lib/pages/invitation_selection/invitation_selection_view.dart index 7290f0db..910ad9c1 100644 --- a/lib/pages/invitation_selection/invitation_selection_view.dart +++ b/lib/pages/invitation_selection/invitation_selection_view.dart @@ -32,7 +32,14 @@ class InvitationSelectionView extends StatelessWidget { autofocus: true, decoration: InputDecoration( hintText: L10n.of(context)!.inviteContactToGroup(groupName), - suffix: const Icon(Icons.search_outlined), + suffixIconConstraints: const BoxConstraints( + maxWidth: 48, + maxHeight: 48, + minWidth: 48, + ), + suffixIcon: controller.loading + ? const CircularProgressIndicator.adaptive() + : const Icon(Icons.search_outlined), contentPadding: const EdgeInsets.symmetric(horizontal: 16), ), onChanged: controller.searchUserWithCoolDown,