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 @@ + + + + + \ No newline at end of file diff --git a/messages/en-pt.json b/messages/en-pt.json index 570bbe9..a1512fa 100644 --- a/messages/en-pt.json +++ b/messages/en-pt.json @@ -239,7 +239,7 @@ "lucky_suave_myna_adore": "Ask the captain to add some deck decorations.", "actual_steep_llama_rest": "No decorations in the hold.", "mild_many_dolphin_mend": "Deck decoration preferences", - "lucky_ago_rat_pinch": "Uncategorized booty", + "lucky_ago_rat_pinch": "Uncategorized", "empty_awful_lark_dart": "Sailor not found in the ship's log.", "clean_even_mayfly_tap": "Check for sea monster tracks or try again later.", "vexed_each_falcon_enjoy": "Blimey!", @@ -317,5 +317,25 @@ "keen_aware_goldfish_thrive": "King's English", "vivid_mellow_sawfish_approve": "Fancy French", "gray_clean_shark_comfort": "The following URI parameters be required:", - "grand_spry_goldfish_embrace": "Yer URI parameters be invalid" + "grand_spry_goldfish_embrace": "Yer URI parameters be invalid", + "honest_factual_carp_aspire": "Be yer certain yer want to send this deck decoration to Davy Jones' locker?", + "flat_safe_haddock_gaze": "Return", + "orange_weird_parakeet_hug": "Decoration must be inferior to {count} bytes", + "solid_inclusive_owl_hug": "Code must have less than {count} markings", + "key_ago_hound_emerge": "Map must have less than {count} markings", + "pink_sharp_carp_work": "Global deck decoration", + "dark_pretty_hyena_link": "Can be employed by every sailor, not just yer", + "home_cool_orangutan_hug": "Category must be not greater than {count} markings", + "sound_topical_gopher_offer": "Required", + "watery_left_shrimp_bless": "Description", + "weird_fun_jurgen_arise": "Useful for people with screen readers, or poor network conditions.", + "short_cute_jackdaw_comfort": "Category", + "happy_mild_fox_gleam": "Shortcode", + "active_direct_bear_compose": "Image", + "lime_late_millipede_urge": "Recommended size: 128x128px. Every image type is allowed.", + "factual_gray_mouse_believe": "Uploading emoji...", + "cool_trite_gull_quiz": "Emoji uploaded!", + "kind_deft_myna_hint": "Failed to upload emoji.", + "frail_great_marten_pet": "Upload a new emoji to the server.", + "whole_icy_puffin_smile": "Upload Emoji" } diff --git a/messages/en-rot.json b/messages/en-rot.json index 71151ec..eb9ce40 100644 --- a/messages/en-rot.json +++ b/messages/en-rot.json @@ -318,5 +318,25 @@ "vivid_mellow_sawfish_approve": "French", "these_awful_ape_reside": "Pirate", "gray_clean_shark_comfort": "The following rizzy parameters are required:", - "grand_spry_goldfish_embrace": "Invalid URI parameters" + "grand_spry_goldfish_embrace": "Invalid URI parameters", + "honest_factual_carp_aspire": "Are you sure you want to ax this pepe?", + "flat_safe_haddock_gaze": "Upload", + "orange_weird_parakeet_hug": "Image must be less than {count} bytes", + "solid_inclusive_owl_hug": "Shortcode must be less than {count} characters", + "key_ago_hound_emerge": "Description must be less than {count} characters", + "pink_sharp_carp_work": "Global emoji", + "dark_pretty_hyena_link": "Can be used by every NPC, not just you", + "home_cool_orangutan_hug": "Category must be less than {count} characters", + "sound_topical_gopher_offer": "Required", + "watery_left_shrimp_bless": "Description", + "weird_fun_jurgen_arise": "Useful for people with screen readers, or poor network conditions.", + "short_cute_jackdaw_comfort": "Category", + "happy_mild_fox_gleam": "Shortcode", + "active_direct_bear_compose": "Image", + "lime_late_millipede_urge": "Recommended size: 128x128px. Every image type is allowed.", + "factual_gray_mouse_believe": "Uploading emoji...", + "cool_trite_gull_quiz": "Emoji uploaded!", + "kind_deft_myna_hint": "Failed to upload emoji.", + "frail_great_marten_pet": "Upload a new emoji to the server.", + "whole_icy_puffin_smile": "Upload Emoji" } diff --git a/messages/en.json b/messages/en.json index 92f4d9f..71db713 100644 --- a/messages/en.json +++ b/messages/en.json @@ -318,5 +318,26 @@ "vivid_mellow_sawfish_approve": "French", "these_awful_ape_reside": "Pirate", "gray_clean_shark_comfort": "The following URI parameters are required:", - "grand_spry_goldfish_embrace": "Invalid URI parameters" + "grand_spry_goldfish_embrace": "Invalid URI parameters", + "honest_factual_carp_aspire": "Are you sure you want to delete this emoji?", + "flat_safe_haddock_gaze": "Upload", + "orange_weird_parakeet_hug": "Image must be less than {count} bytes", + "solid_inclusive_owl_hug": "Shortcode must be less than {count} characters", + "key_ago_hound_emerge": "Description must be less than {count} characters", + "pink_sharp_carp_work": "Global emoji", + "dark_pretty_hyena_link": "Can be used by every user, not just you", + "home_cool_orangutan_hug": "Category must be less than {count} characters", + "sound_topical_gopher_offer": "Required", + "watery_left_shrimp_bless": "Description", + "weird_fun_jurgen_arise": "Useful for people with screen readers, or poor network conditions.", + "short_cute_jackdaw_comfort": "Category", + "happy_mild_fox_gleam": "Shortcode", + "glad_day_kestrel_amaze": "Should be short.", + "active_direct_bear_compose": "Image", + "lime_late_millipede_urge": "Recommended size: 128x128px. Every image type is allowed.", + "factual_gray_mouse_believe": "Uploading emoji...", + "cool_trite_gull_quiz": "Emoji uploaded!", + "kind_deft_myna_hint": "Failed to upload emoji.", + "frail_great_marten_pet": "Upload a new emoji to the server.", + "whole_icy_puffin_smile": "Upload Emoji" } diff --git a/messages/fr.json b/messages/fr.json index ebb0cff..50de5e2 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -299,7 +299,27 @@ "keen_aware_goldfish_thrive": "Anglais", "vivid_mellow_sawfish_approve": "Français", "these_awful_ape_reside": "Pirate", - "dirty_inclusive_meerkat_nudge": "Annuler", "gray_clean_shark_comfort": "Les paramètres de l'URI suivants sont obligatoires:", - "grand_spry_goldfish_embrace": "Paramètres URI non valides" + "grand_spry_goldfish_embrace": "Paramètres URI non valides", + "honest_factual_carp_aspire": "Etes-vous sûr de vouloir supprimer cet emoji ?", + "flat_safe_haddock_gaze": "Ajouter", + "orange_weird_parakeet_hug": "L'image doit être inférieure à {count} octets", + "solid_inclusive_owl_hug": "Le nom doit contenir moins de {count} caractères", + "key_ago_hound_emerge": "La description doit comporter moins de {count} caractères", + "pink_sharp_carp_work": "Émoji global", + "dark_pretty_hyena_link": "Peut être utilisé par tous les utilisateurs, pas juste vous", + "home_cool_orangutan_hug": "La catégorie doit comporter moins de {count} caractères", + "sound_topical_gopher_offer": "Requis", + "watery_left_shrimp_bless": "Description", + "weird_fun_jurgen_arise": "Utile pour les personnes disposant de lecteurs d'écran ou de mauvaises conditions de réseau.", + "short_cute_jackdaw_comfort": "Catégorie", + "happy_mild_fox_gleam": "Nom", + "active_direct_bear_compose": "Image", + "lime_late_millipede_urge": "Taille recommandée : 128x128px. Tous les types d'images sont autorisés.", + "dirty_inclusive_meerkat_nudge": "Annuler", + "factual_gray_mouse_believe": "Ajout de l'emoji...", + "cool_trite_gull_quiz": "Emoji ajouté!", + "kind_deft_myna_hint": "Échec de l'ajout de l'emoji.", + "frail_great_marten_pet": "Ajoutez un nouvel emoji sur le serveur.", + "whole_icy_puffin_smile": "Ajouter un Emoji" } diff --git a/pages/preferences/account.vue b/pages/preferences/account.vue index 96de3b7..dda7b5f 100644 --- a/pages/preferences/account.vue +++ b/pages/preferences/account.vue @@ -4,7 +4,7 @@