diff --git a/lib/pages/new_private_chat/new_private_chat.dart b/lib/pages/new_private_chat/new_private_chat.dart index 060b897b..5608a59c 100644 --- a/lib/pages/new_private_chat/new_private_chat.dart +++ b/lib/pages/new_private_chat/new_private_chat.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; @@ -27,11 +28,18 @@ class NewPrivateChatController extends State { bool _hideFab = false; + // remove leading matrix.to from text field in order to simplify pasting + final List removeMatrixToFormatters = [ + FilteringTextInputFormatter.deny(NewPrivateChatController.prefix), + FilteringTextInputFormatter.deny(NewPrivateChatController.prefixNoProtocol), + ]; + bool get hideFab => _hideFab; static const Set supportedSigils = {'@', '!', '#'}; static const String prefix = 'https://matrix.to/#/'; + static const String prefixNoProtocol = 'matrix.to/#/'; void setHideFab() { if (textFieldFocus.hasFocus != _hideFab) { diff --git a/lib/pages/new_private_chat/new_private_chat_view.dart b/lib/pages/new_private_chat/new_private_chat_view.dart index 30a99ea4..519fe96e 100644 --- a/lib/pages/new_private_chat/new_private_chat_view.dart +++ b/lib/pages/new_private_chat/new_private_chat_view.dart @@ -83,10 +83,11 @@ class NewPrivateChatView extends StatelessWidget { focusNode: controller.textFieldFocus, onFieldSubmitted: controller.submitAction, validator: controller.validateForm, + inputFormatters: controller.removeMatrixToFormatters, decoration: InputDecoration( labelText: L10n.of(context)!.typeInInviteLinkManually, hintText: '@username', - prefixText: 'matrix.to/#/', + prefixText: NewPrivateChatController.prefixNoProtocol, suffixIcon: IconButton( icon: const Icon(Icons.send_outlined), onPressed: controller.submitAction,