From 93a3d233d0392ca3993007bb3e7a1b9fd41b91c7 Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 9 Dec 2024 13:12:46 +0100 Subject: [PATCH] feat: :sparkles: Implement emoji uploads --- components/preferences/emojis/emoji.vue | 44 +++- components/preferences/emojis/uploader.vue | 245 +++++++++++++++++++++ messages/en-pt.json | 24 +- messages/en-rot.json | 22 +- messages/en.json | 23 +- messages/fr.json | 24 +- pages/preferences/account.vue | 2 +- pages/preferences/emojis.vue | 26 ++- utils/validators.ts | 3 +- 9 files changed, 391 insertions(+), 22 deletions(-) create mode 100644 components/preferences/emojis/uploader.vue diff --git a/components/preferences/emojis/emoji.vue b/components/preferences/emojis/emoji.vue index 9fe06dd..59d9788 100644 --- a/components/preferences/emojis/emoji.vue +++ b/components/preferences/emojis/emoji.vue @@ -72,9 +72,15 @@ const { emoji } = defineProps<{ const permissions = usePermissions(); const canEdit = - !emoji.global || permissions.value.includes(RolePermission.ManageEmojis); + (!emoji.global && + permissions.value.includes(RolePermission.ManageOwnEmojis)) || + permissions.value.includes(RolePermission.ManageEmojis); const editName = async () => { + if (!identity.value) { + return; + } + const result = await confirmModalService.confirm({ title: m.slimy_awful_florian_sail(), defaultValue: emoji.shortcode, @@ -85,12 +91,16 @@ const editName = async () => { if (result.confirmed) { const id = toast.loading(m.teary_tame_gull_bless()); try { - await client.value.updateEmoji(emoji.id, { + const { data } = await client.value.updateEmoji(emoji.id, { shortcode: result.value, }); toast.dismiss(id); toast.success(m.gaudy_lime_bison_adore()); + + identity.value.emojis = identity.value.emojis.map((e) => + e.id === emoji.id ? data : e, + ); } catch { toast.dismiss(id); } @@ -98,13 +108,29 @@ const editName = async () => { }; const _delete = async () => { - const id = toast.loading(m.weary_away_liger_zip()); - try { - await client.value.deleteEmoji(emoji.id); - toast.dismiss(id); - toast.success(m.crisp_whole_canary_tear()); - } catch { - toast.dismiss(id); + if (!identity.value) { + return; + } + + const { confirmed } = await confirmModalService.confirm({ + title: m.tense_quick_cod_favor(), + message: m.honest_factual_carp_aspire(), + confirmText: m.tense_quick_cod_favor(), + }); + + if (confirmed) { + const id = toast.loading(m.weary_away_liger_zip()); + try { + await client.value.deleteEmoji(emoji.id); + toast.dismiss(id); + toast.success(m.crisp_whole_canary_tear()); + + identity.value.emojis = identity.value.emojis.filter( + (e) => e.id !== emoji.id, + ); + } catch { + toast.dismiss(id); + } } }; \ No newline at end of file diff --git a/components/preferences/emojis/uploader.vue b/components/preferences/emojis/uploader.vue new file mode 100644 index 0000000..319a7dc --- /dev/null +++ b/components/preferences/emojis/uploader.vue @@ -0,0 +1,245 @@ +