Delete account

This commit is contained in:
2024-11-28 23:51:13 +08:00
parent 36013a3a57
commit 041be961c4
5 changed files with 81 additions and 34 deletions

View File

@ -65,6 +65,27 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
}
}
Future<void> _deleteChannel() async {
final confirm = await context.showConfirmDialog(
'channelDelete'.tr(args: [_channel!.name]),
'channelDeleteDescription'.tr(),
);
if (!confirm) return;
if (!mounted) return;
try {
final sn = context.read<SnNetworkProvider>();
await sn.client.delete(
'/cgi/im/channels/${_channel!.realm?.alias ?? 'global'}/${_channel!.id}',
);
if (!mounted) return;
Navigator.pop(context, false);
} catch (err) {
if (!mounted) return;
context.showErrorDialog(err);
}
}
@override
void initState() {
super.initState();
@ -119,8 +140,9 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
trailing: const Icon(Symbols.chevron_right),
title: Text('channelEditProfile').tr(),
subtitle: Text(
_profile?.nick ??
ud.getAccountFromCache(_profile!.accountId)!.nick,
(_profile?.nick?.isEmpty ?? true)
? ud.getAccountFromCache(_profile!.accountId)!.nick
: _profile!.nick!,
),
contentPadding: const EdgeInsets.only(left: 20, right: 20),
onTap: () {},
@ -152,6 +174,14 @@ class _ChannelDetailScreenState extends State<ChannelDetailScreen> {
});
},
),
ListTile(
leading: const Icon(Symbols.delete),
trailing: const Icon(Symbols.chevron_right),
title: Text('channelActionDelete').tr(),
subtitle: Text('channelActionDeleteDescription').tr(),
contentPadding: const EdgeInsets.symmetric(horizontal: 24),
onTap: _deleteChannel,
),
],
),
],

View File

@ -205,7 +205,9 @@ class _ChatRoomScreenState extends State<ChatRoomScreen> {
'scope': widget.scope,
'alias': widget.alias,
}).then((value) {
if (value != null) {
if (value == false && context.mounted) {
Navigator.pop(context, true);
} else if (value != null && context.mounted) {
_fetchChannel();
}
});