From cc113bb61acc7cd56fb7f664159550fbaa799e98 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sat, 22 May 2021 09:08:23 +0200 Subject: [PATCH] refactor: rename UI to View and MVC login page --- lib/config/routes.dart | 4 +- lib/pages/chat.dart | 2 +- lib/pages/chat_details.dart | 2 +- lib/pages/chat_encryption_settings.dart | 2 +- lib/pages/chat_list.dart | 2 +- lib/pages/chat_permissions_settings.dart | 2 +- lib/pages/device_settings.dart | 2 +- lib/pages/homeserver_picker.dart | 2 +- lib/pages/image_viewer.dart | 2 +- lib/pages/invitation_selection.dart | 2 +- lib/pages/{views/login_ui.dart => login.dart} | 114 ++---------------- lib/pages/new_group.dart | 2 +- lib/pages/new_private_chat.dart | 2 +- lib/pages/search.dart | 2 +- lib/pages/settings.dart | 2 +- lib/pages/settings_3pid.dart | 2 +- lib/pages/settings_emotes.dart | 2 +- lib/pages/settings_ignore_list.dart | 2 +- lib/pages/settings_multiple_emotes.dart | 2 +- lib/pages/settings_notifications.dart | 2 +- lib/pages/settings_style.dart | 2 +- lib/pages/sign_up.dart | 2 +- lib/pages/sign_up_password.dart | 2 +- lib/pages/user_bottom_sheet.dart | 2 +- ...details_ui.dart => chat_details_view.dart} | 0 ...art => chat_encryption_settings_view.dart} | 0 ...{chat_list_ui.dart => chat_list_view.dart} | 0 ...rt => chat_permissions_settings_view.dart} | 0 .../views/{chat_ui.dart => chat_view.dart} | 0 ...ings_ui.dart => device_settings_view.dart} | 0 ...mpty_page_ui.dart => empty_page_view.dart} | 0 ...er_ui.dart => homeserver_picker_view.dart} | 0 ..._viewer_ui.dart => image_viewer_view.dart} | 0 ...ui.dart => invitation_selection_view.dart} | 0 lib/pages/views/login_view.dart | 109 +++++++++++++++++ ...{new_group_ui.dart => new_group_view.dart} | 0 ...hat_ui.dart => new_private_chat_view.dart} | 0 .../{search_ui.dart => search_view.dart} | 0 ...s_3pid_ui.dart => settings_3pid_view.dart} | 0 ...otes_ui.dart => settings_emotes_view.dart} | 0 ...ui.dart => settings_ignore_list_view.dart} | 0 ...art => settings_multiple_emotes_view.dart} | 0 ....dart => settings_notifications_view.dart} | 0 ...style_ui.dart => settings_style_view.dart} | 0 .../{settings_ui.dart => settings_view.dart} | 0 ...ord_ui.dart => sign_up_password_view.dart} | 0 .../{sign_up_ui.dart => sign_up_view.dart} | 0 ...et_ui.dart => user_bottom_sheet_view.dart} | 0 48 files changed, 146 insertions(+), 125 deletions(-) rename lib/pages/{views/login_ui.dart => login.dart} (59%) rename lib/pages/views/{chat_details_ui.dart => chat_details_view.dart} (100%) rename lib/pages/views/{chat_encryption_settings_ui.dart => chat_encryption_settings_view.dart} (100%) rename lib/pages/views/{chat_list_ui.dart => chat_list_view.dart} (100%) rename lib/pages/views/{chat_permissions_settings_ui.dart => chat_permissions_settings_view.dart} (100%) rename lib/pages/views/{chat_ui.dart => chat_view.dart} (100%) rename lib/pages/views/{device_settings_ui.dart => device_settings_view.dart} (100%) rename lib/pages/views/{empty_page_ui.dart => empty_page_view.dart} (100%) rename lib/pages/views/{homeserver_picker_ui.dart => homeserver_picker_view.dart} (100%) rename lib/pages/views/{image_viewer_ui.dart => image_viewer_view.dart} (100%) rename lib/pages/views/{invitation_selection_ui.dart => invitation_selection_view.dart} (100%) create mode 100644 lib/pages/views/login_view.dart rename lib/pages/views/{new_group_ui.dart => new_group_view.dart} (100%) rename lib/pages/views/{new_private_chat_ui.dart => new_private_chat_view.dart} (100%) rename lib/pages/views/{search_ui.dart => search_view.dart} (100%) rename lib/pages/views/{settings_3pid_ui.dart => settings_3pid_view.dart} (100%) rename lib/pages/views/{settings_emotes_ui.dart => settings_emotes_view.dart} (100%) rename lib/pages/views/{settings_ignore_list_ui.dart => settings_ignore_list_view.dart} (100%) rename lib/pages/views/{settings_multiple_emotes_ui.dart => settings_multiple_emotes_view.dart} (100%) rename lib/pages/views/{settings_notifications_ui.dart => settings_notifications_view.dart} (100%) rename lib/pages/views/{settings_style_ui.dart => settings_style_view.dart} (100%) rename lib/pages/views/{settings_ui.dart => settings_view.dart} (100%) rename lib/pages/views/{sign_up_password_ui.dart => sign_up_password_view.dart} (100%) rename lib/pages/views/{sign_up_ui.dart => sign_up_view.dart} (100%) rename lib/pages/views/{user_bottom_sheet_ui.dart => user_bottom_sheet_view.dart} (100%) diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 66438afb..4f02e0a5 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -13,10 +13,10 @@ import 'package:fluffychat/pages/chat_details.dart'; import 'package:fluffychat/pages/chat_encryption_settings.dart'; import 'package:fluffychat/pages/chat_list.dart'; import 'package:fluffychat/pages/chat_permissions_settings.dart'; -import 'package:fluffychat/pages/views/empty_page_ui.dart'; +import 'package:fluffychat/pages/views/empty_page_view.dart'; import 'package:fluffychat/widgets/layouts/loading_view.dart'; import 'package:fluffychat/widgets/log_view.dart'; -import 'package:fluffychat/pages/views/login_ui.dart'; +import 'package:fluffychat/pages/login.dart'; import 'package:fluffychat/pages/new_group.dart'; import 'package:fluffychat/pages/new_private_chat.dart'; import 'package:fluffychat/pages/search.dart'; diff --git a/lib/pages/chat.dart b/lib/pages/chat.dart index cbe94e56..01e8ef92 100644 --- a/lib/pages/chat.dart +++ b/lib/pages/chat.dart @@ -6,7 +6,7 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:file_picker_cross/file_picker_cross.dart'; import 'package:fluffychat/config/app_config.dart'; -import 'package:fluffychat/pages/views/chat_ui.dart'; +import 'package:fluffychat/pages/views/chat_view.dart'; import 'package:fluffychat/pages/recording_dialog.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; diff --git a/lib/pages/chat_details.dart b/lib/pages/chat_details.dart index 7af01cee..b691fed7 100644 --- a/lib/pages/chat_details.dart +++ b/lib/pages/chat_details.dart @@ -4,7 +4,7 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:file_picker_cross/file_picker_cross.dart'; -import 'package:fluffychat/pages/views/chat_details_ui.dart'; +import 'package:fluffychat/pages/views/chat_details_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/services.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; diff --git a/lib/pages/chat_encryption_settings.dart b/lib/pages/chat_encryption_settings.dart index e772909e..1f25eadf 100644 --- a/lib/pages/chat_encryption_settings.dart +++ b/lib/pages/chat_encryption_settings.dart @@ -1,6 +1,6 @@ import 'package:famedlysdk/encryption.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/pages/views/chat_encryption_settings_ui.dart'; +import 'package:fluffychat/pages/views/chat_encryption_settings_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'key_verification_dialog.dart'; diff --git a/lib/pages/chat_list.dart b/lib/pages/chat_list.dart index b3eddf25..a8864b28 100644 --- a/lib/pages/chat_list.dart +++ b/lib/pages/chat_list.dart @@ -5,7 +5,7 @@ import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; -import 'package:fluffychat/pages/views/chat_list_ui.dart'; +import 'package:fluffychat/pages/views/chat_list_view.dart'; import 'package:flutter/cupertino.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/platform_infos.dart'; diff --git a/lib/pages/chat_permissions_settings.dart b/lib/pages/chat_permissions_settings.dart index 4793cacb..f0dc7e6e 100644 --- a/lib/pages/chat_permissions_settings.dart +++ b/lib/pages/chat_permissions_settings.dart @@ -2,7 +2,7 @@ import 'dart:developer'; import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; -import 'package:fluffychat/pages/views/chat_permissions_settings_ui.dart'; +import 'package:fluffychat/pages/views/chat_permissions_settings_view.dart'; import 'package:fluffychat/pages/permission_slider_dialog.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; diff --git a/lib/pages/device_settings.dart b/lib/pages/device_settings.dart index e5f0d73e..43799592 100644 --- a/lib/pages/device_settings.dart +++ b/lib/pages/device_settings.dart @@ -1,7 +1,7 @@ import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:famedlysdk/encryption/utils/key_verification.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/pages/views/device_settings_ui.dart'; +import 'package:fluffychat/pages/views/device_settings_view.dart'; import 'package:fluffychat/pages/key_verification_dialog.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/homeserver_picker.dart b/lib/pages/homeserver_picker.dart index 887b5d30..1e6b3975 100644 --- a/lib/pages/homeserver_picker.dart +++ b/lib/pages/homeserver_picker.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/pages/views/homeserver_picker_ui.dart'; +import 'package:fluffychat/pages/views/homeserver_picker_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/setting_keys.dart'; diff --git a/lib/pages/image_viewer.dart b/lib/pages/image_viewer.dart index c711f38a..898ccde5 100644 --- a/lib/pages/image_viewer.dart +++ b/lib/pages/image_viewer.dart @@ -1,7 +1,7 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/platform_infos.dart'; -import 'package:fluffychat/pages/views/image_viewer_ui.dart'; +import 'package:fluffychat/pages/views/image_viewer_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/invitation_selection.dart b/lib/pages/invitation_selection.dart index 6efe33fd..4afb58b1 100644 --- a/lib/pages/invitation_selection.dart +++ b/lib/pages/invitation_selection.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/pages/views/invitation_selection_ui.dart'; +import 'package:fluffychat/pages/views/invitation_selection_view.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/views/login_ui.dart b/lib/pages/login.dart similarity index 59% rename from lib/pages/views/login_ui.dart rename to lib/pages/login.dart index a8ffab96..fa5b52d9 100644 --- a/lib/pages/views/login_ui.dart +++ b/lib/pages/login.dart @@ -3,21 +3,22 @@ import 'dart:async'; import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/widgets/layouts/one_page_card.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import '../../utils/platform_infos.dart'; +import '../utils/platform_infos.dart'; import 'package:email_validator/email_validator.dart'; +import 'views/login_view.dart'; + class Login extends StatefulWidget { @override - _LoginState createState() => _LoginState(); + LoginController createState() => LoginController(); } -class _LoginState extends State { +class LoginController extends State { final TextEditingController usernameController = TextEditingController(); final TextEditingController passwordController = TextEditingController(); String usernameError; @@ -25,7 +26,9 @@ class _LoginState extends State { bool loading = false; bool showPassword = false; - void login(BuildContext context) async { + void toggleShowPassword() => setState(() => showPassword = !showPassword); + + void login([_]) async { final matrix = Matrix.of(context); if (usernameController.text.isEmpty) { setState(() => usernameError = L10n.of(context).pleaseEnterYourUsername); @@ -81,15 +84,15 @@ class _LoginState extends State { Timer _coolDown; - void _checkWellKnownWithCoolDown(String userId, BuildContext context) async { + void checkWellKnownWithCoolDown(String userId) async { _coolDown?.cancel(); _coolDown = Timer( Duration(seconds: 1), - () => _checkWellKnown(userId, context), + () => _checkWellKnown(userId), ); } - void _checkWellKnown(String userId, BuildContext context) async { + void _checkWellKnown(String userId) async { setState(() => usernameError = null); if (!userId.isValidMatrixId) return; try { @@ -110,7 +113,7 @@ class _LoginState extends State { } } - void _passwordForgotten(BuildContext context) async { + void passwordForgotten() async { final input = await showTextInputDialog( context: context, title: L10n.of(context).enterAnEmailAddress, @@ -183,98 +186,7 @@ class _LoginState extends State { static int sendAttempt = 0; @override - Widget build(BuildContext context) { - return OnePageCard( - child: Scaffold( - appBar: AppBar( - leading: loading ? Container() : BackButton(), - elevation: 0, - title: Text( - L10n.of(context).logInTo(Matrix.of(context) - .client - .homeserver - .toString() - .replaceFirst('https://', '')), - ), - ), - body: Builder(builder: (context) { - return ListView( - children: [ - Padding( - padding: const EdgeInsets.all(12.0), - child: TextField( - readOnly: loading, - autocorrect: false, - autofocus: true, - onChanged: (t) => _checkWellKnownWithCoolDown(t, context), - controller: usernameController, - autofillHints: loading ? null : [AutofillHints.username], - decoration: InputDecoration( - prefixIcon: Icon(Icons.account_box_outlined), - hintText: - '@${L10n.of(context).username.toLowerCase()}:domain', - errorText: usernameError, - labelText: L10n.of(context).username), - ), - ), - Padding( - padding: const EdgeInsets.all(12.0), - child: TextField( - readOnly: loading, - autocorrect: false, - autofillHints: loading ? null : [AutofillHints.password], - controller: passwordController, - obscureText: !showPassword, - onSubmitted: (t) => login(context), - decoration: InputDecoration( - prefixIcon: Icon(Icons.lock_outlined), - hintText: '****', - errorText: passwordError, - suffixIcon: IconButton( - tooltip: L10n.of(context).showPassword, - icon: Icon(showPassword - ? Icons.visibility_off_outlined - : Icons.visibility_outlined), - onPressed: () => - setState(() => showPassword = !showPassword), - ), - labelText: L10n.of(context).password), - ), - ), - SizedBox(height: 12), - Hero( - tag: 'loginButton', - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 12), - child: ElevatedButton( - onPressed: loading ? null : () => login(context), - child: loading - ? LinearProgressIndicator() - : Text( - L10n.of(context).login.toUpperCase(), - style: TextStyle(color: Colors.white, fontSize: 16), - ), - ), - ), - ), - Center( - child: TextButton( - onPressed: () => _passwordForgotten(context), - child: Text( - L10n.of(context).passwordForgotten, - style: TextStyle( - color: Colors.blue, - decoration: TextDecoration.underline, - ), - ), - ), - ), - ], - ); - }), - ), - ); - } + Widget build(BuildContext context) => LoginView(this); } extension on String { diff --git a/lib/pages/new_group.dart b/lib/pages/new_group.dart index bb40453d..5aebbcd9 100644 --- a/lib/pages/new_group.dart +++ b/lib/pages/new_group.dart @@ -1,6 +1,6 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart' as sdk; -import 'package:fluffychat/pages/views/new_group_ui.dart'; +import 'package:fluffychat/pages/views/new_group_view.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/new_private_chat.dart b/lib/pages/new_private_chat.dart index 6085e554..2d6abcbe 100644 --- a/lib/pages/new_private_chat.dart +++ b/lib/pages/new_private_chat.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/fluffy_share.dart'; -import 'package:fluffychat/pages/views/new_private_chat_ui.dart'; +import 'package:fluffychat/pages/views/new_private_chat_view.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/search.dart b/lib/pages/search.dart index 1ea02b29..78c356b3 100644 --- a/lib/pages/search.dart +++ b/lib/pages/search.dart @@ -7,7 +7,7 @@ import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; -import 'views/search_ui.dart'; +import 'views/search_view.dart'; class Search extends StatefulWidget { final String alias; diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index fd83266a..11536099 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -14,7 +14,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:image_picker/image_picker.dart'; -import 'views/settings_ui.dart'; +import 'views/settings_view.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'bootstrap_dialog.dart'; import '../widgets/matrix.dart'; diff --git a/lib/pages/settings_3pid.dart b/lib/pages/settings_3pid.dart index d4cd3adc..0edccee9 100644 --- a/lib/pages/settings_3pid.dart +++ b/lib/pages/settings_3pid.dart @@ -5,7 +5,7 @@ import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'views/settings_3pid_ui.dart'; +import 'views/settings_3pid_view.dart'; class Settings3Pid extends StatefulWidget { static int sendAttempt = 0; diff --git a/lib/pages/settings_emotes.dart b/lib/pages/settings_emotes.dart index 085b7ecc..142c27c1 100644 --- a/lib/pages/settings_emotes.dart +++ b/lib/pages/settings_emotes.dart @@ -9,7 +9,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:image_picker/image_picker.dart'; -import 'views/settings_emotes_ui.dart'; +import 'views/settings_emotes_view.dart'; import '../widgets/matrix.dart'; class EmotesSettings extends StatefulWidget { diff --git a/lib/pages/settings_ignore_list.dart b/lib/pages/settings_ignore_list.dart index 4c18e909..c057400b 100644 --- a/lib/pages/settings_ignore_list.dart +++ b/lib/pages/settings_ignore_list.dart @@ -1,7 +1,7 @@ import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:flutter/material.dart'; -import 'views/settings_ignore_list_ui.dart'; +import 'views/settings_ignore_list_view.dart'; import '../widgets/matrix.dart'; class SettingsIgnoreList extends StatefulWidget { diff --git a/lib/pages/settings_multiple_emotes.dart b/lib/pages/settings_multiple_emotes.dart index 8314cf6b..37847629 100644 --- a/lib/pages/settings_multiple_emotes.dart +++ b/lib/pages/settings_multiple_emotes.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'views/settings_multiple_emotes_ui.dart'; +import 'views/settings_multiple_emotes_view.dart'; class MultipleEmotesSettings extends StatefulWidget { final String roomId; diff --git a/lib/pages/settings_notifications.dart b/lib/pages/settings_notifications.dart index 29e21a34..dbd4033f 100644 --- a/lib/pages/settings_notifications.dart +++ b/lib/pages/settings_notifications.dart @@ -6,7 +6,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:open_noti_settings/open_noti_settings.dart'; -import 'views/settings_notifications_ui.dart'; +import 'views/settings_notifications_view.dart'; import '../widgets/matrix.dart'; class NotificationSettingsItem { diff --git a/lib/pages/settings_style.dart b/lib/pages/settings_style.dart index e6d0766d..2409463b 100644 --- a/lib/pages/settings_style.dart +++ b/lib/pages/settings_style.dart @@ -6,7 +6,7 @@ import 'package:fluffychat/config/setting_keys.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; -import 'views/settings_style_ui.dart'; +import 'views/settings_style_view.dart'; import '../widgets/matrix.dart'; class SettingsStyle extends StatefulWidget { diff --git a/lib/pages/sign_up.dart b/lib/pages/sign_up.dart index 782a6613..0406187a 100644 --- a/lib/pages/sign_up.dart +++ b/lib/pages/sign_up.dart @@ -1,7 +1,7 @@ import 'package:adaptive_page_layout/adaptive_page_layout.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:file_picker_cross/file_picker_cross.dart'; -import 'package:fluffychat/pages/views/sign_up_ui.dart'; +import 'package:fluffychat/pages/views/sign_up_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/cupertino.dart'; diff --git a/lib/pages/sign_up_password.dart b/lib/pages/sign_up_password.dart index ba31c56c..ff2a0454 100644 --- a/lib/pages/sign_up_password.dart +++ b/lib/pages/sign_up_password.dart @@ -4,7 +4,7 @@ import 'package:email_validator/email_validator.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/get_client_secret.dart'; -import 'package:fluffychat/pages/views/sign_up_password_ui.dart'; +import 'package:fluffychat/pages/views/sign_up_password_view.dart'; import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; diff --git a/lib/pages/user_bottom_sheet.dart b/lib/pages/user_bottom_sheet.dart index c060d3db..b59aea1a 100644 --- a/lib/pages/user_bottom_sheet.dart +++ b/lib/pages/user_bottom_sheet.dart @@ -7,7 +7,7 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; -import 'views/user_bottom_sheet_ui.dart'; +import 'views/user_bottom_sheet_view.dart'; class UserBottomSheet extends StatefulWidget { final User user; diff --git a/lib/pages/views/chat_details_ui.dart b/lib/pages/views/chat_details_view.dart similarity index 100% rename from lib/pages/views/chat_details_ui.dart rename to lib/pages/views/chat_details_view.dart diff --git a/lib/pages/views/chat_encryption_settings_ui.dart b/lib/pages/views/chat_encryption_settings_view.dart similarity index 100% rename from lib/pages/views/chat_encryption_settings_ui.dart rename to lib/pages/views/chat_encryption_settings_view.dart diff --git a/lib/pages/views/chat_list_ui.dart b/lib/pages/views/chat_list_view.dart similarity index 100% rename from lib/pages/views/chat_list_ui.dart rename to lib/pages/views/chat_list_view.dart diff --git a/lib/pages/views/chat_permissions_settings_ui.dart b/lib/pages/views/chat_permissions_settings_view.dart similarity index 100% rename from lib/pages/views/chat_permissions_settings_ui.dart rename to lib/pages/views/chat_permissions_settings_view.dart diff --git a/lib/pages/views/chat_ui.dart b/lib/pages/views/chat_view.dart similarity index 100% rename from lib/pages/views/chat_ui.dart rename to lib/pages/views/chat_view.dart diff --git a/lib/pages/views/device_settings_ui.dart b/lib/pages/views/device_settings_view.dart similarity index 100% rename from lib/pages/views/device_settings_ui.dart rename to lib/pages/views/device_settings_view.dart diff --git a/lib/pages/views/empty_page_ui.dart b/lib/pages/views/empty_page_view.dart similarity index 100% rename from lib/pages/views/empty_page_ui.dart rename to lib/pages/views/empty_page_view.dart diff --git a/lib/pages/views/homeserver_picker_ui.dart b/lib/pages/views/homeserver_picker_view.dart similarity index 100% rename from lib/pages/views/homeserver_picker_ui.dart rename to lib/pages/views/homeserver_picker_view.dart diff --git a/lib/pages/views/image_viewer_ui.dart b/lib/pages/views/image_viewer_view.dart similarity index 100% rename from lib/pages/views/image_viewer_ui.dart rename to lib/pages/views/image_viewer_view.dart diff --git a/lib/pages/views/invitation_selection_ui.dart b/lib/pages/views/invitation_selection_view.dart similarity index 100% rename from lib/pages/views/invitation_selection_ui.dart rename to lib/pages/views/invitation_selection_view.dart diff --git a/lib/pages/views/login_view.dart b/lib/pages/views/login_view.dart new file mode 100644 index 00000000..a000ff8a --- /dev/null +++ b/lib/pages/views/login_view.dart @@ -0,0 +1,109 @@ +import 'package:fluffychat/widgets/layouts/one_page_card.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import '../login.dart'; + +class LoginView extends StatelessWidget { + final LoginController controller; + + const LoginView(this.controller, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return OnePageCard( + child: Scaffold( + appBar: AppBar( + leading: controller.loading ? Container() : BackButton(), + elevation: 0, + title: Text( + L10n.of(context).logInTo(Matrix.of(context) + .client + .homeserver + .toString() + .replaceFirst('https://', '')), + ), + ), + body: Builder(builder: (context) { + return ListView( + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: TextField( + readOnly: controller.loading, + autocorrect: false, + autofocus: true, + onChanged: controller.checkWellKnownWithCoolDown, + controller: controller.usernameController, + autofillHints: + controller.loading ? null : [AutofillHints.username], + decoration: InputDecoration( + prefixIcon: Icon(Icons.account_box_outlined), + hintText: + '@${L10n.of(context).username.toLowerCase()}:domain', + errorText: controller.usernameError, + labelText: L10n.of(context).username), + ), + ), + Padding( + padding: const EdgeInsets.all(12.0), + child: TextField( + readOnly: controller.loading, + autocorrect: false, + autofillHints: + controller.loading ? null : [AutofillHints.password], + controller: controller.passwordController, + obscureText: !controller.showPassword, + onSubmitted: controller.login, + decoration: InputDecoration( + prefixIcon: Icon(Icons.lock_outlined), + hintText: '****', + errorText: controller.passwordError, + suffixIcon: IconButton( + tooltip: L10n.of(context).showPassword, + icon: Icon(controller.showPassword + ? Icons.visibility_off_outlined + : Icons.visibility_outlined), + onPressed: controller.toggleShowPassword, + ), + labelText: L10n.of(context).password), + ), + ), + SizedBox(height: 12), + Hero( + tag: 'loginButton', + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12), + child: ElevatedButton( + onPressed: controller.loading + ? null + : () => controller.login(context), + child: controller.loading + ? LinearProgressIndicator() + : Text( + L10n.of(context).login.toUpperCase(), + style: TextStyle(color: Colors.white, fontSize: 16), + ), + ), + ), + ), + Center( + child: TextButton( + onPressed: controller.passwordForgotten, + child: Text( + L10n.of(context).passwordForgotten, + style: TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline, + ), + ), + ), + ), + ], + ); + }), + ), + ); + } +} diff --git a/lib/pages/views/new_group_ui.dart b/lib/pages/views/new_group_view.dart similarity index 100% rename from lib/pages/views/new_group_ui.dart rename to lib/pages/views/new_group_view.dart diff --git a/lib/pages/views/new_private_chat_ui.dart b/lib/pages/views/new_private_chat_view.dart similarity index 100% rename from lib/pages/views/new_private_chat_ui.dart rename to lib/pages/views/new_private_chat_view.dart diff --git a/lib/pages/views/search_ui.dart b/lib/pages/views/search_view.dart similarity index 100% rename from lib/pages/views/search_ui.dart rename to lib/pages/views/search_view.dart diff --git a/lib/pages/views/settings_3pid_ui.dart b/lib/pages/views/settings_3pid_view.dart similarity index 100% rename from lib/pages/views/settings_3pid_ui.dart rename to lib/pages/views/settings_3pid_view.dart diff --git a/lib/pages/views/settings_emotes_ui.dart b/lib/pages/views/settings_emotes_view.dart similarity index 100% rename from lib/pages/views/settings_emotes_ui.dart rename to lib/pages/views/settings_emotes_view.dart diff --git a/lib/pages/views/settings_ignore_list_ui.dart b/lib/pages/views/settings_ignore_list_view.dart similarity index 100% rename from lib/pages/views/settings_ignore_list_ui.dart rename to lib/pages/views/settings_ignore_list_view.dart diff --git a/lib/pages/views/settings_multiple_emotes_ui.dart b/lib/pages/views/settings_multiple_emotes_view.dart similarity index 100% rename from lib/pages/views/settings_multiple_emotes_ui.dart rename to lib/pages/views/settings_multiple_emotes_view.dart diff --git a/lib/pages/views/settings_notifications_ui.dart b/lib/pages/views/settings_notifications_view.dart similarity index 100% rename from lib/pages/views/settings_notifications_ui.dart rename to lib/pages/views/settings_notifications_view.dart diff --git a/lib/pages/views/settings_style_ui.dart b/lib/pages/views/settings_style_view.dart similarity index 100% rename from lib/pages/views/settings_style_ui.dart rename to lib/pages/views/settings_style_view.dart diff --git a/lib/pages/views/settings_ui.dart b/lib/pages/views/settings_view.dart similarity index 100% rename from lib/pages/views/settings_ui.dart rename to lib/pages/views/settings_view.dart diff --git a/lib/pages/views/sign_up_password_ui.dart b/lib/pages/views/sign_up_password_view.dart similarity index 100% rename from lib/pages/views/sign_up_password_ui.dart rename to lib/pages/views/sign_up_password_view.dart diff --git a/lib/pages/views/sign_up_ui.dart b/lib/pages/views/sign_up_view.dart similarity index 100% rename from lib/pages/views/sign_up_ui.dart rename to lib/pages/views/sign_up_view.dart diff --git a/lib/pages/views/user_bottom_sheet_ui.dart b/lib/pages/views/user_bottom_sheet_view.dart similarity index 100% rename from lib/pages/views/user_bottom_sheet_ui.dart rename to lib/pages/views/user_bottom_sheet_view.dart