From a2ccd896465982bd6059ae7770532417b1062bdb Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 11 Apr 2015 23:37:52 +0100 Subject: Autogenerate room name with UUID for /join with no args --- src/command/command.c | 13 +++++++------ src/command/commands.c | 21 +++++++++++++++++++-- 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index e165254e..d9b6a6e0 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -321,20 +321,21 @@ static struct cmd_t command_defs[] = NULL } } }, { "/join", - cmd_join, parse_args, 1, 5, NULL, - { "/join room[@server] [nick value] [password value]", "Join a chat room.", - { "/join room[@server] [nick value] [password value]", - "-------------------------------------------------", + cmd_join, parse_args, 0, 5, NULL, + { "/join [room] [nick value] [password value]", "Join a chat room.", + { "/join [room] [nick value] [password value]", + "-----------------------------------------", "Join a chat room at the conference server.", "", - "room : Bare room JID, the chat server is determined by the 'muc.service' account property, 'conference.' by default.", - "room@server : Full room JID.", + "room : Bare room JID (the chat server is determined by the 'muc.service' account property) or full room jid." "nick value : Nickname to use in the room", "password value : Password if the room requires it.", "", + "If no room is supplied, a generated name will be used with the format private-chat-[UUID].", "If no nickname is specified the account preference 'muc.nick' will be used which by default is the localpart of your JID.", "If the room doesn't exist, and the server allows it, a new one will be created.", "", + "Example: /join", "Example: /join jdev@conference.jabber.org", "Example: /join jdev@conference.jabber.org nick mynick", "Example: /join private@conference.jabber.org nick mynick password mypassword", diff --git a/src/command/commands.c b/src/command/commands.c index 2699924b..79bc54af 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include "chat_session.h" @@ -2070,8 +2071,24 @@ cmd_join(gchar **args, struct cmd_help_t help) } if (args[0] == NULL) { - cons_show("Usage: %s", help.usage); - cons_show(""); + uuid_t uuid; + uuid_generate(uuid); + char *uuid_str = malloc(sizeof(char) * 37); + uuid_unparse_lower(uuid, uuid_str); + + char *account_name = jabber_get_account_name(); + ProfAccount *account = accounts_get_account(account_name); + + GString *room_str = g_string_new(""); + g_string_append_printf(room_str, "private-chat-%s@%s", uuid_str, account->muc_service); + + presence_join_room(room_str->str, account->muc_nick, NULL); + muc_join(room_str->str, account->muc_nick, NULL, FALSE); + + g_string_free(room_str, TRUE); + free(uuid_str); + account_free(account); + return TRUE; } -- cgit 1.4.1-2-gfad0