From 0320a6a30f04d7c2e83119236bbaf8f48cc0b73e Mon Sep 17 00:00:00 2001 From: ClariSys Date: Wed, 12 Mar 2025 20:13:10 -0700 Subject: [PATCH] [WIP] update headmate hopper to add wip like emoji switcher --- headmate-hopper.ais | 54 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/headmate-hopper.ais b/headmate-hopper.ais index b848edc..e4e1e3f 100644 --- a/headmate-hopper.ais +++ b/headmate-hopper.ais @@ -1,9 +1,9 @@ /// @ 0.19.0 ### { name: "Headmate Hopper" - version: "1.1.0" - author: "@bunnybeam@transfem.social" - description: "Adds a tag containing the name of the selected headmate to the end of all new posts." + version: "1.1.1" + author: "@bunnybeam@transfem.social, @Chloe@catwithaclari.net" + description: "Adds a tag containing the name of the selected headmate to the end of all new posts. Chnages the default like emoji depending on the headmate." permissions: ["read:account", "write:account"] config: { headmates: { @@ -12,6 +12,18 @@ description: "List of headmate names. Separate with commas." default: "Headmate 1, Headmate 2" } + default_likes: { + type: "string" + label: "Default Like Emoji list" + description: "Default like emoji for each headmate. Make sure they're in the same order as the headmates! There must be an emoji for every headmate." + default: ":neocat_heart:, :neofox_heart:" + } + default_like: { + type: "string" + label: "Default Like Emoji" + description: "Like emoji to defualt to when headmate is cleared." + default: "❤️" + } change_name: { type: "boolean" label: "Change display name" @@ -85,6 +97,16 @@ return new_list } +@get_emoji_list() { + let raw_list = Plugin:config.default_likes.split(",") + let new_list = [] + each let name, raw_list { + new_list.push(name.trim()) + } + return new_list +} + + // Check if `text` already contains the headmate tag @already_tagged(text) { return text.incl(make_tag_from_name(headmate_name)) @@ -120,6 +142,21 @@ return true } +// Attempt to change defualt emoji. Returns true if successful, false if otherwise. +@change_like_emoji(emoji) { + // Attempt to change emoji + let write_res = Mk:api("i/registry/set", {key: "like", value: emoji, scope: ["client", "base"], domain: "System"}) + if write_res != null { + var message = "An unknown error occurred when attempting to edit the default like emoji." + if write_res.info.code == "PERMISSION_DENIED" { + message = "The 'Edit account information' permission must be enabled in order to change your default like emoji." + } + Mk:dialog("Error setting default emoji", message, "error") + return false + } + return true +} + // Select a new headmate name @select_headmate_name(name) { if Plugin:config.change_name { @@ -178,16 +215,21 @@ Plugin:register_note_post_interruptor(@(note) { }) // Register post form actions for each headmate -each let name, get_headmate_list() { - Plugin:register_post_form_action(`Switch to {name}`, @(note, rewrite) { +for (let i, get_headmate_list().len) { + let name = get_headmate_list()[i] + let emoji = get_emoji_list()[i] + Plugin:register_post_form_action(`Switch to {name} {emoji}`, @(note, rewrite) { select_headmate_name(name) + change_like_emoji(emoji) if Plugin:config.switch_notif { - Mk:dialog("Switched headmate", `Switched headmate to "{name}".`, "success") + Mk:dialog("Switched headmate", `Switched headmate to "{name} with emoji {emoji}".`, "success") } }) } + Plugin:register_post_form_action("Clear headmate", @(note, rewrite) { select_headmate_name("") + change_like_emoji(Plugin:config.default_like) if Plugin:config.switch_notif { Mk:dialog("Switched headmate", "Cleared the current headmate.", "success") }