From 025bc53790eecc5c92c18f21331c0c114f9cc7bd Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 7 Mar 2022 11:24:09 +0700 Subject: [PATCH] TF-265 Remove prefix https:// in url login form --- .../presentation/extensions/url_extension.dart | 12 ++++++++++++ .../login/presentation/login_controller.dart | 16 ++++++++++++++++ lib/features/login/presentation/login_view.dart | 3 ++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/core/lib/presentation/extensions/url_extension.dart b/core/lib/presentation/extensions/url_extension.dart index bb54a5ab1..86d0efb31 100644 --- a/core/lib/presentation/extensions/url_extension.dart +++ b/core/lib/presentation/extensions/url_extension.dart @@ -13,4 +13,16 @@ extension URLExtension on String { return '$prefixUrlHttps${this}'; } } + + String removePrefix() { + if (startsWith(prefixUrlHttps)) { + return replaceAll(prefixUrlHttps, ''); + } else if (startsWith(prefixUrlHttp)) { + return replaceAll(prefixUrlHttp, ''); + } else { + return this; + } + } + + bool isValid() => startsWith(prefixUrlHttps) || startsWith(prefixUrlHttp); } \ No newline at end of file diff --git a/lib/features/login/presentation/login_controller.dart b/lib/features/login/presentation/login_controller.dart index 1d39f43b6..b36cdd422 100644 --- a/lib/features/login/presentation/login_controller.dart +++ b/lib/features/login/presentation/login_controller.dart @@ -1,5 +1,6 @@ import 'package:core/core.dart'; import 'package:dartz/dartz.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:get/get.dart'; import 'package:model/model.dart'; @@ -16,6 +17,8 @@ class LoginController extends GetxController { final DynamicUrlInterceptors _dynamicUrlInterceptors; final AuthorizationInterceptors _authorizationInterceptors; + final TextEditingController urlInputController = TextEditingController(); + LoginController( this._authenticationInteractor, this._dynamicUrlInterceptors, @@ -69,4 +72,17 @@ class LoginController extends GetxController { void _loginFailureAction(AuthenticationUserFailure failure) { loginState.value = LoginState(Left(failure)); } + + void formatUrl(String url) { + if (url.isValid()) { + urlInputController.text = url.removePrefix(); + } + setUrlText(urlInputController.text); + } + + @override + void onClose() { + urlInputController.dispose(); + super.onClose(); + } } \ No newline at end of file diff --git a/lib/features/login/presentation/login_view.dart b/lib/features/login/presentation/login_view.dart index ad8be09b1..f4cc789be 100644 --- a/lib/features/login/presentation/login_view.dart +++ b/lib/features/login/presentation/login_view.dart @@ -93,8 +93,9 @@ class LoginView extends GetWidget { width: responsiveUtils.getWidthLoginTextField(context), child: (TextFieldBuilder() ..key(Key('login_url_input')) - ..onChange((value) => loginController.setUrlText(value)) + ..onChange((value) => loginController.formatUrl(value)) ..textInputAction(TextInputAction.next) + ..addController(loginController.urlInputController) ..keyboardType(TextInputType.url) ..textDecoration((LoginInputDecorationBuilder() ..setLabelText(AppLocalizations.of(context).prefix_https)