Cosmetic improvements of homeserver and user inputs

Keyboard type for homeserver TextInput changed to url and trailing '/' with potential whitespaces is stripped.
Keyboard type for username changed to e-mail for convenience.

Should resolve: #34 and #64
This commit is contained in:
Katerina 2020-07-02 09:10:03 +00:00 committed by Christian Pauly
parent 7535c3a8bb
commit 7de6b8c700
3 changed files with 22 additions and 12 deletions

View File

@ -8,8 +8,8 @@ class SimpleDialogs {
const SimpleDialogs(this.context); const SimpleDialogs(this.context);
Future<String> enterText({ Future<String> enterText(
String titleText, {String titleText,
String confirmText, String confirmText,
String cancelText, String cancelText,
String hintText, String hintText,
@ -18,7 +18,7 @@ class SimpleDialogs {
String suffixText, String suffixText,
bool password = false, bool password = false,
bool multiLine = false, bool multiLine = false,
}) async { TextInputType keyboardType}) async {
var textEditingController = TextEditingController(); var textEditingController = TextEditingController();
final controller = textEditingController; final controller = textEditingController;
String input; String input;
@ -38,6 +38,7 @@ class SimpleDialogs {
maxLines: multiLine ? 3 : 1, maxLines: multiLine ? 3 : 1,
obscureText: password, obscureText: password,
textInputAction: multiLine ? TextInputAction.newline : null, textInputAction: multiLine ? TextInputAction.newline : null,
keyboardType: keyboardType,
decoration: InputDecoration( decoration: InputDecoration(
hintText: hintText, hintText: hintText,
labelText: labelText, labelText: labelText,

View File

@ -12,7 +12,8 @@ class HomeserverPicker extends StatelessWidget {
final homeserver = await SimpleDialogs(context).enterText( final homeserver = await SimpleDialogs(context).enterText(
titleText: L10n.of(context).enterYourHomeserver, titleText: L10n.of(context).enterYourHomeserver,
hintText: Matrix.defaultHomeserver, hintText: Matrix.defaultHomeserver,
prefixText: 'https://'); prefixText: 'https://',
keyboardType: TextInputType.url);
if (homeserver?.isEmpty ?? true) return; if (homeserver?.isEmpty ?? true) return;
_checkHomeserverAction(homeserver, context); _checkHomeserverAction(homeserver, context);
} }
@ -21,6 +22,13 @@ class HomeserverPicker extends StatelessWidget {
if (!homeserver.startsWith('https://')) { if (!homeserver.startsWith('https://')) {
homeserver = 'https://$homeserver'; homeserver = 'https://$homeserver';
} }
// removes trailing spaces and slash from url if present (api errors on it)
homeserver = homeserver.trim();
if (homeserver.endsWith('/')) {
homeserver = homeserver.substring(0, homeserver.length - 1);
}
final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( final success = await SimpleDialogs(context).tryRequestWithLoadingDialog(
Matrix.of(context).client.checkServer(homeserver)); Matrix.of(context).client.checkServer(homeserver));
if (success != false) { if (success != false) {

View File

@ -131,6 +131,7 @@ class _LoginState extends State<Login> {
readOnly: loading, readOnly: loading,
autocorrect: false, autocorrect: false,
autofocus: true, autofocus: true,
keyboardType: TextInputType.emailAddress,
onChanged: (t) => _checkWellKnownWithCoolDown(t, context), onChanged: (t) => _checkWellKnownWithCoolDown(t, context),
controller: usernameController, controller: usernameController,
decoration: InputDecoration( decoration: InputDecoration(