diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index 16689f3..0b0b2ba 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -835,5 +835,7 @@ "accountContactMethodsEdit": "Edit Contact Method", "accountContactMethodsAddDescription": "Add a new contact method.", "fieldContactContent": "Contact method", - "accountContactMethodsPublicHint": "This contact method will be displayed publicly on your profile." + "accountContactMethodsPublicHint": "This contact method will be displayed publicly on your profile.", + "accountContactMethodsDelete": "Delete Contact Method", + "accountContactMethodsDeleteDescription": "Are you sure you want to delete contact method {}? This operation is irreversible." } diff --git a/assets/translations/zh-CN.json b/assets/translations/zh-CN.json index c540df9..f30c2a8 100644 --- a/assets/translations/zh-CN.json +++ b/assets/translations/zh-CN.json @@ -835,5 +835,7 @@ "accountContactMethodsEdit": "编辑联系方式", "accountContactMethodsAddDescription": "添加新的联系方式。", "fieldContactContent": "联系方式", - "accountContactMethodsPublicHint": "这个联系方式公开地显示在个人资料中。" + "accountContactMethodsPublicHint": "这个联系方式公开地显示在个人资料中。", + "accountContactMethodsDelete": "删除联系方式", + "accountContactMethodsDeleteDescription": "你确定要删除联系方式 {} 吗?这个操作不可撤销。" } diff --git a/assets/translations/zh-HK.json b/assets/translations/zh-HK.json index eb1ce2e..b0d2772 100644 --- a/assets/translations/zh-HK.json +++ b/assets/translations/zh-HK.json @@ -835,5 +835,7 @@ "accountContactMethodsEdit": "編輯聯繫方式", "accountContactMethodsAddDescription": "添加新的聯繫方式。", "fieldContactContent": "聯繫方式", - "accountContactMethodsPublicHint": "這個聯繫方式公開地顯示在個人資料中。" + "accountContactMethodsPublicHint": "這個聯繫方式公開地顯示在個人資料中。", + "accountContactMethodsDelete": "刪除聯繫方式", + "accountContactMethodsDeleteDescription": "你確定要刪除聯繫方式 {} 嗎?這個操作不可撤銷。" } diff --git a/assets/translations/zh-TW.json b/assets/translations/zh-TW.json index dd01073..ef8a2b3 100644 --- a/assets/translations/zh-TW.json +++ b/assets/translations/zh-TW.json @@ -835,5 +835,7 @@ "accountContactMethodsEdit": "編輯聯繫方式", "accountContactMethodsAddDescription": "添加新的聯繫方式。", "fieldContactContent": "聯繫方式", - "accountContactMethodsPublicHint": "這個聯繫方式公開地顯示在個人資料中。" + "accountContactMethodsPublicHint": "這個聯繫方式公開地顯示在個人資料中。", + "accountContactMethodsDelete": "刪除聯繫方式", + "accountContactMethodsDeleteDescription": "你確定要刪除聯繫方式 {} 嗎?這個操作不可撤銷。" } diff --git a/lib/screens/account/contact_methods.dart b/lib/screens/account/contact_methods.dart index 53d6e64..ae6f8fa 100644 --- a/lib/screens/account/contact_methods.dart +++ b/lib/screens/account/contact_methods.dart @@ -42,6 +42,24 @@ class _AccountContactMethodState extends State { } } + Future _deleteContactMethod(SnAccountContact contact) async { + final confirm = await context.showConfirmDialog( + 'accountContactMethodsDelete'.tr(), + 'accountContactMethodsDeleteDescription'.tr(args: [contact.content]), + ); + if (!confirm || !mounted) return; + + try { + final sn = context.read(); + await sn.client.delete('/cgi/id/users/me/contacts/${contact.id}'); + if (!mounted) return; + await _fetchContactMethods(); + } catch (err) { + if (!mounted) return; + context.showErrorDialog(err); + } + } + @override void initState() { super.initState(); @@ -118,7 +136,7 @@ class _AccountContactMethodState extends State { child: Row( children: [ const Icon(Symbols.edit), - const Gap(8), + const Gap(16), Text('edit').tr(), ], ), @@ -135,6 +153,18 @@ class _AccountContactMethodState extends State { }); }, ), + PopupMenuItem( + child: Row( + children: [ + const Icon(Symbols.delete), + const Gap(16), + Text('delete'.tr()), + ], + ), + onTap: () { + _deleteContactMethod(method); + }, + ), ], ), );