Add ability to disable avatar publishing

Add "/avatar disable" to comply with point "3.5 Publisher Disables
Avatar Publishing" in XEP-0084.

src/command/cmd_defs.c:2416
Add "disable" argument. Reword the "/avatar" command description
so it flows better.

src/command/cmd_ac.c:1101
Add "disable" to the "/avatar" autocomplete dictionary.

src/command/cmd_funcs.c:9277
Split "/avatar" commands into two groups with an if statement; those
with a parameter and those without. "cons_bad_cmd_usage()" is in both
groups, which is messy. "disable" has similar logic to "set", but it
includes a failure message.

src/xmpp/avatar.c:152
"avatar_publishing_disable()" uses the same logic to publish metadata
as in "avatar_set()".

src/xmpp/avatar.c:238
Add a message to inform users when they do not receive an avatar after
using "/avatar get" and "/avatar open". In case of a failure, the user
will be subscribed to future avatar updates as long as they continue
to use their current instance of profanity. Adding
"caps_remove_feature()" after "cons_show()" will unsubscribe the user
from avatar updates and prevent the user from downloading an avatar
unexpectedly hours later without issuing an "/avatar" command.

src/xmpp/stanza.c:2698
The new "disable" function follows the same logic as
"stanza_create_avatar_metadata_publish_iq()".
This commit is contained in:
IsaacM88
2023-05-02 12:22:31 -06:00
parent f4d418a95f
commit ecdeb750f3
8 changed files with 92 additions and 20 deletions

View File

@@ -2418,25 +2418,29 @@ static const struct cmd_t command_defs[] = {
},
{ CMD_PREAMBLE("/avatar",
parse_args, 2, 2, NULL)
parse_args, 1, 2, NULL)
CMD_MAINFUNC(cmd_avatar)
CMD_TAGS(
CMD_TAG_CHAT)
CMD_SYN(
"/avatar set <path>",
"/avatar disable",
"/avatar get <barejid>",
"/avatar open <barejid>")
CMD_DESC(
"Upload avatar for oneself (XEP-0084). "
"Download avatar (XEP-0084) for a certain contact. "
"If nothing happens after using this command the user either doesn't have an avatar set at all "
"Upload an avatar for yourself, "
"disable your avatar, "
"or download a contact's avatar (XEP-0084). "
"If nothing happens after using this command, the user either doesn't have an avatar set "
"or doesn't use XEP-0084 to publish it.")
CMD_ARGS(
{ "set <path>", "Set avatar to the image at <path>." },
{ "disable", "Disable avatar publishing; your avatar will not display to others." },
{ "get <barejid>", "Download the avatar. barejid is the JID to download avatar from." },
{ "open <barejid>", "Download avatar and open it with command." })
CMD_EXAMPLES(
"/avatar set ~/images/avatar.png",
"/avatar disable",
"/avatar get thor@valhalla.edda",
"/avatar open freyja@vanaheimr.edda") },