fix: enable users without passwords to delete their accounts by using uia request in account deletion

This commit is contained in:
ggurdin 2025-12-09 12:36:05 -05:00
commit 620ad5d19a
No known key found for this signature in database
GPG key ID: A01CB41737CBB478

View file

@ -74,31 +74,22 @@ class SettingsSecurityController extends State<SettingsSecurity> {
if (mxid == null || mxid.isEmpty || mxid != supposedMxid) { if (mxid == null || mxid.isEmpty || mxid != supposedMxid) {
return; return;
} }
final input = await showTextInputDialog( final resp = await showFutureLoadingDialog(
useRootNavigator: false,
context: context, context: context,
title: L10n.of(context).pleaseEnterYourPassword, delay: false,
okLabel: L10n.of(context).ok, future: () =>
cancelLabel: L10n.of(context).cancel, Matrix.of(context).client.uiaRequestBackground<IdServerUnbindResult?>(
isDestructive: true, (auth) => Matrix.of(context).client.deactivateAccount(auth: auth),
obscureText: true, ),
hintText: '******',
minLines: 1,
maxLines: 1,
); );
if (input == null) return;
if (!resp.isError) {
await showFutureLoadingDialog( await showFutureLoadingDialog(
context: context, context: context,
future: () => Matrix.of(context).client.deactivateAccount( future: () => Matrix.of(context).client.logout(),
auth: AuthenticationPassword(
password: input,
identifier: AuthenticationUserIdentifier(
user: Matrix.of(context).client.userID!,
),
),
),
); );
} }
}
Future<void> dehydrateAction() => Matrix.of(context).dehydrateAction(context); Future<void> dehydrateAction() => Matrix.of(context).dehydrateAction(context);