Merge branch 'krille/username-input-label' into 'main'

Krille/username input label

See merge request famedly/fluffychat!754
This commit is contained in:
Krille Fear 2022-02-19 13:20:51 +00:00
commit 6216f6545a
5 changed files with 42 additions and 27 deletions

View File

@ -2731,5 +2731,6 @@
"unsupportedAndroidVersion": "Unsupported Android version", "unsupportedAndroidVersion": "Unsupported Android version",
"unsupportedAndroidVersionLong": "This feature required a never Android version. Please check for updates or Lineage OS support.", "unsupportedAndroidVersionLong": "This feature required a never Android version. Please check for updates or Lineage OS support.",
"videoCallsBetaWarning": "Please note that video calls are currently in beta. They might not work as expected or work at all on all platforms.", "videoCallsBetaWarning": "Please note that video calls are currently in beta. They might not work as expected or work at all on all platforms.",
"experimentalVideoCalls": "Experimental video calls" "experimentalVideoCalls": "Experimental video calls",
"emailOrUsername": "Email or username"
} }

View File

@ -153,19 +153,22 @@ class LoginController extends State<Login> {
final input = await showTextInputDialog( final input = await showTextInputDialog(
useRootNavigator: false, useRootNavigator: false,
context: context, context: context,
title: L10n.of(context)!.enterAnEmailAddress, title: L10n.of(context)!.passwordForgotten,
message: L10n.of(context)!.enterAnEmailAddress,
okLabel: L10n.of(context)!.ok, okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel, cancelLabel: L10n.of(context)!.cancel,
fullyCapitalizedForMaterial: false,
textFields: [ textFields: [
DialogTextField( DialogTextField(
initialText:
usernameController.text.isEmail ? usernameController.text : '',
hintText: L10n.of(context)!.enterAnEmailAddress, hintText: L10n.of(context)!.enterAnEmailAddress,
keyboardType: TextInputType.emailAddress, keyboardType: TextInputType.emailAddress,
), ),
], ],
); );
if (input == null) return; if (input == null) return;
final clientSecret = final clientSecret = DateTime.now().millisecondsSinceEpoch.toString();
Matrix.of(context).client.generateUniqueTransactionId();
final response = await showFutureLoadingDialog( final response = await showFutureLoadingDialog(
context: context, context: context,
future: () => future: () =>
@ -182,14 +185,17 @@ class LoginController extends State<Login> {
title: L10n.of(context)!.weSentYouAnEmail, title: L10n.of(context)!.weSentYouAnEmail,
message: L10n.of(context)!.pleaseClickOnLink, message: L10n.of(context)!.pleaseClickOnLink,
okLabel: L10n.of(context)!.iHaveClickedOnLink, okLabel: L10n.of(context)!.iHaveClickedOnLink,
fullyCapitalizedForMaterial: false,
); );
if (ok != OkCancelResult.ok) return; if (ok != OkCancelResult.ok) return;
final password = await showTextInputDialog( final password = await showTextInputDialog(
useRootNavigator: false, useRootNavigator: false,
context: context, context: context,
title: L10n.of(context)!.chooseAStrongPassword, title: L10n.of(context)!.passwordForgotten,
message: L10n.of(context)!.chooseAStrongPassword,
okLabel: L10n.of(context)!.ok, okLabel: L10n.of(context)!.ok,
cancelLabel: L10n.of(context)!.cancel, cancelLabel: L10n.of(context)!.cancel,
fullyCapitalizedForMaterial: false,
textFields: [ textFields: [
const DialogTextField( const DialogTextField(
hintText: '******', hintText: '******',
@ -200,17 +206,22 @@ class LoginController extends State<Login> {
], ],
); );
if (password == null) return; if (password == null) return;
final data = <String, dynamic>{
'new_password': password.single,
"auth": AuthenticationThreePidCreds(
type: AuthenticationTypes.emailIdentity,
threepidCreds: ThreepidCreds(
sid: response.result!.sid,
clientSecret: clientSecret,
),
).toJson(),
};
final success = await showFutureLoadingDialog( final success = await showFutureLoadingDialog(
context: context, context: context,
future: () => Matrix.of(context).getLoginClient().changePassword( future: () => Matrix.of(context).getLoginClient().request(
password.single, RequestType.POST,
auth: AuthenticationThreePidCreds( '/client/r0/account/password',
type: AuthenticationTypes.emailIdentity, data: data,
threepidCreds: ThreepidCreds(
sid: response.result!.sid,
clientSecret: clientSecret,
),
),
), ),
); );
if (success.error == null) { if (success.error == null) {

View File

@ -38,13 +38,14 @@ class LoginView extends StatelessWidget {
autofocus: true, autofocus: true,
onChanged: controller.checkWellKnownWithCoolDown, onChanged: controller.checkWellKnownWithCoolDown,
controller: controller.usernameController, controller: controller.usernameController,
keyboardType: TextInputType.emailAddress,
autofillHints: autofillHints:
controller.loading ? null : [AutofillHints.username], controller.loading ? null : [AutofillHints.username],
decoration: InputDecoration( decoration: InputDecoration(
prefixIcon: const Icon(Icons.account_box_outlined), prefixIcon: const Icon(Icons.account_box_outlined),
hintText: L10n.of(context)!.username, hintText: L10n.of(context)!.emailOrUsername,
errorText: controller.usernameError, errorText: controller.usernameError,
labelText: L10n.of(context)!.username), labelText: L10n.of(context)!.emailOrUsername),
), ),
), ),
Padding( Padding(
@ -87,16 +88,18 @@ class LoginView extends StatelessWidget {
), ),
), ),
), ),
Center( const Divider(height: 32),
child: TextButton( Padding(
onPressed: controller.passwordForgotten, padding: const EdgeInsets.symmetric(horizontal: 12),
child: Text( child: ElevatedButton(
L10n.of(context)!.passwordForgotten, onPressed: controller.loading
style: const TextStyle( ? null
color: Colors.blue, : controller.passwordForgotten,
decoration: TextDecoration.underline, style: ElevatedButton.styleFrom(
), primary: Theme.of(context).secondaryHeaderColor,
onPrimary: Colors.red,
), ),
child: Text(L10n.of(context)!.passwordForgotten),
), ),
), ),
], ],

View File

@ -960,7 +960,7 @@ packages:
name: matrix name: matrix
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.10" version: "0.8.11"
matrix_api_lite: matrix_api_lite:
dependency: transitive dependency: transitive
description: description:

View File

@ -57,7 +57,7 @@ dependencies:
intl: any intl: any
localstorage: ^4.0.0+1 localstorage: ^4.0.0+1
lottie: ^1.2.2 lottie: ^1.2.2
matrix: ^0.8.10 matrix: ^0.8.11
matrix_link_text: ^1.0.2 matrix_link_text: ^1.0.2
open_noti_settings: ^0.4.0 open_noti_settings: ^0.4.0
package_info_plus: ^1.3.0 package_info_plus: ^1.3.0