From 3cf9ee39d0931d8b3623b8cb211c0c746cdf93d7 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Wed, 29 Apr 2020 17:22:34 +0200 Subject: [PATCH] Can delete custom emoji --- lib/helpers/settings_helper.dart | 11 +++++++++- .../custom_emojies_account_settings.dart | 20 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/lib/helpers/settings_helper.dart b/lib/helpers/settings_helper.dart index e807775..01ebeb0 100644 --- a/lib/helpers/settings_helper.dart +++ b/lib/helpers/settings_helper.dart @@ -125,7 +125,7 @@ class SettingsHelper { .exec()) .isOK; - /// Upload a new emoji + /// Upload a new custom emoji static Future uploadNewCustomEmoji(NewEmoji newEmoji) async => (await APIRequest( uri: "settings/upload_custom_emoji", @@ -134,4 +134,13 @@ class SettingsHelper { .addFile("image", newEmoji.image) .execWithFiles()) .assertOk(); + + /// Delete a custom emoji + /// + /// Throws in case of failure + static Future deleteCustomEmoji(int emojiID) async => + (await APIRequest(uri: "settings/delete_custom_emoji", needLogin: true) + .addInt("emojiID", emojiID) + .exec()) + .assertOk(); } diff --git a/lib/ui/routes/account_settings/custom_emojies_account_settings.dart b/lib/ui/routes/account_settings/custom_emojies_account_settings.dart index 953a67f..b5dd74c 100644 --- a/lib/ui/routes/account_settings/custom_emojies_account_settings.dart +++ b/lib/ui/routes/account_settings/custom_emojies_account_settings.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:comunic/helpers/settings_helper.dart'; import 'package:comunic/helpers/users_helper.dart'; import 'package:comunic/lists/custom_emojies_list.dart'; +import 'package:comunic/models/custom_emoji.dart'; import 'package:comunic/models/new_emoji.dart'; import 'package:comunic/models/user.dart'; import 'package:comunic/ui/widgets/async_screen_widget.dart'; @@ -71,6 +72,9 @@ class _CustomEmojiesAccountBodyState extends State<_CustomEmojiesAccountBody> { .map((u) => ListTile( leading: NetworkImageWidget(url: u.url, width: 50), title: Text(u.shortcut), + trailing: IconButton( + icon: Icon(Icons.delete), + onPressed: () => _deleteEmoji(u)), )) .toList()); } @@ -106,6 +110,22 @@ class _CustomEmojiesAccountBodyState extends State<_CustomEmojiesAccountBody> { _key.currentState.refresh(); } + + /// Ask for confirmation before deleting permanently an emoji + void _deleteEmoji(CustomEmoji u) async { + try { + if (!await showConfirmDialog( + context: context, + message: tr("Do you really want to delete this custom emoji ?"))) + return; + + await SettingsHelper.deleteCustomEmoji(u.id); + + _key.currentState.refresh(); + } catch (e, stack) { + print("Could not delete custom emoji! $e\n$stack"); + } + } } /// Dialog used to upload new custom emojies