60 lines
1.9 KiB
Dart
60 lines
1.9 KiB
Dart
|
import 'package:finnow_app/api/auth.dart';
|
||
|
import 'package:finnow_app/auth/model.dart';
|
||
|
import 'package:finnow_app/components/form_label.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
|
||
|
import '../main.dart';
|
||
|
|
||
|
class UserAccountPage extends StatelessWidget {
|
||
|
final Authenticated auth;
|
||
|
const UserAccountPage(this.auth, {super.key});
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
return Container(
|
||
|
padding: const EdgeInsets.all(10),
|
||
|
child: ListView(children: [
|
||
|
const Text('My User',
|
||
|
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 32.0)),
|
||
|
const SizedBox(height: 10),
|
||
|
const FormLabel('Username'),
|
||
|
Text(auth.username),
|
||
|
const SizedBox(height: 10),
|
||
|
Row(children: [
|
||
|
TextButton(
|
||
|
onPressed: () => attemptDeleteUser(context),
|
||
|
child: const Text('Delete my user'))
|
||
|
])
|
||
|
]));
|
||
|
}
|
||
|
|
||
|
void attemptDeleteUser(BuildContext ctx) async {
|
||
|
bool confirmed = false;
|
||
|
await showDialog(
|
||
|
context: ctx,
|
||
|
builder: (context) {
|
||
|
return AlertDialog(
|
||
|
title: const Text('Confirm User Deletion'),
|
||
|
content: const Text(
|
||
|
'Are you sure you want to delete your user? This is a permanent action that cannot be undone.'),
|
||
|
actions: [
|
||
|
FilledButton(
|
||
|
onPressed: () {
|
||
|
confirmed = true;
|
||
|
Navigator.of(context).pop();
|
||
|
},
|
||
|
child: Text('Ok')),
|
||
|
FilledButton(
|
||
|
onPressed: () {
|
||
|
Navigator.of(context).pop();
|
||
|
},
|
||
|
child: Text('Cancel'))
|
||
|
]);
|
||
|
});
|
||
|
if (confirmed) {
|
||
|
await deleteUser(auth.token);
|
||
|
getIt<AuthenticationModel>().state = Unauthenticated();
|
||
|
}
|
||
|
}
|
||
|
}
|