From 247e437c0783e18ba876d543268181cd05a58543 Mon Sep 17 00:00:00 2001 From: TheOneWithTheBraid Date: Sat, 21 May 2022 00:46:47 +0200 Subject: [PATCH] fix: handle matrix.to prefix when starting chat - remove leading matrix.to beginning from content of the start chat matrix.to text field in order to allow simply pasting matrix.to links Signed-off-by: TheOneWithTheBraid --- lib/pages/new_private_chat/new_private_chat.dart | 8 ++++++++ lib/pages/new_private_chat/new_private_chat_view.dart | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) 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,