1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Use selected resource for sending messages

This commit is contained in:
James Booth 2014-12-03 23:36:39 +00:00
parent d652c3c7ac
commit eeb6e6b8fc
3 changed files with 44 additions and 8 deletions

View File

@ -1760,6 +1760,13 @@ cmd_execute_default(const char * inp)
if (status != JABBER_CONNECTED) { if (status != JABBER_CONNECTED) {
ui_current_print_line("You are not currently connected."); ui_current_print_line("You are not currently connected.");
} else { } else {
GString *send_recipient = g_string_new(recipient);
ProfWin *current = wins_get_current();
if (current && current->chat_resource) {
g_string_append(send_recipient, "/");
g_string_append(send_recipient, current->chat_resource);
}
#ifdef HAVE_LIBOTR #ifdef HAVE_LIBOTR
prof_otrpolicy_t policy = otr_get_policy(recipient); prof_otrpolicy_t policy = otr_get_policy(recipient);
if (policy == PROF_OTRPOLICY_ALWAYS && !otr_is_secure(recipient)) { if (policy == PROF_OTRPOLICY_ALWAYS && !otr_is_secure(recipient)) {
@ -1789,7 +1796,7 @@ cmd_execute_default(const char * inp)
cons_show_error("Failed to send message."); cons_show_error("Failed to send message.");
} }
} else { } else {
message_send(inp, recipient); message_send(inp, send_recipient->str);
if (prefs_get_boolean(PREF_CHLOG)) { if (prefs_get_boolean(PREF_CHLOG)) {
const char *jid = jabber_get_fulljid(); const char *jid = jabber_get_fulljid();
Jid *jidp = jid_create(jid); Jid *jidp = jid_create(jid);
@ -1800,7 +1807,7 @@ cmd_execute_default(const char * inp)
ui_outgoing_msg("me", recipient, inp); ui_outgoing_msg("me", recipient, inp);
} }
#else #else
message_send(inp, recipient); message_send(inp, send_recipient->str);
if (prefs_get_boolean(PREF_CHLOG)) { if (prefs_get_boolean(PREF_CHLOG)) {
const char *jid = jabber_get_fulljid(); const char *jid = jabber_get_fulljid();
Jid *jidp = jid_create(jid); Jid *jidp = jid_create(jid);
@ -1810,6 +1817,7 @@ cmd_execute_default(const char * inp)
ui_outgoing_msg("me", recipient, inp); ui_outgoing_msg("me", recipient, inp);
#endif #endif
g_string_free(send_recipient, TRUE);
} }
break; break;

View File

@ -1149,6 +1149,13 @@ cmd_msg(gchar **args, struct cmd_help_t help)
if (usr_jid == NULL) { if (usr_jid == NULL) {
usr_jid = usr; usr_jid = usr;
} }
GString *send_jid = g_string_new(usr_jid);
ProfWin *current = wins_get_current();
if (current && current->chat_resource) {
g_string_append(send_jid, "/");
g_string_append(send_jid, current->chat_resource);
}
if (msg != NULL) { if (msg != NULL) {
#ifdef HAVE_LIBOTR #ifdef HAVE_LIBOTR
if (otr_is_secure(usr_jid)) { if (otr_is_secure(usr_jid)) {
@ -1186,7 +1193,7 @@ cmd_msg(gchar **args, struct cmd_help_t help)
message_send(otr_message->str, usr_jid); message_send(otr_message->str, usr_jid);
g_string_free(otr_message, TRUE); g_string_free(otr_message, TRUE);
} else { } else {
message_send(msg, usr_jid); message_send(msg, send_jid->str);
} }
ui_outgoing_msg("me", usr_jid, msg); ui_outgoing_msg("me", usr_jid, msg);
@ -1199,7 +1206,7 @@ cmd_msg(gchar **args, struct cmd_help_t help)
} }
return TRUE; return TRUE;
#else #else
message_send(msg, usr_jid); message_send(msg, send_jid->str);
ui_outgoing_msg("me", usr_jid, msg); ui_outgoing_msg("me", usr_jid, msg);
if (((win_type == WIN_CHAT) || (win_type == WIN_CONSOLE)) && prefs_get_boolean(PREF_CHLOG)) { if (((win_type == WIN_CHAT) || (win_type == WIN_CONSOLE)) && prefs_get_boolean(PREF_CHLOG)) {
@ -1234,6 +1241,8 @@ cmd_msg(gchar **args, struct cmd_help_t help)
#endif #endif
return TRUE; return TRUE;
} }
g_string_free(send_jid, TRUE);
} }
} }
@ -1545,8 +1554,16 @@ cmd_resource(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
char *recipent = ui_current_recipient(); char *recipient = ui_current_recipient();
PContact contact = roster_get_contact(recipent);
#ifdef HAVE_LIBOTR
if (otr_is_secure(recipient)) {
cons_show("Cannot choose resource during an OTR session.");
return TRUE;
}
#endif
PContact contact = roster_get_contact(recipient);
if (!contact) { if (!contact) {
cons_show("Cannot choose resource for contact not in roster."); cons_show("Cannot choose resource for contact not in roster.");
return TRUE; return TRUE;
@ -2918,6 +2935,13 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
if (tiny != NULL) { if (tiny != NULL) {
if (win_type == WIN_CHAT) { if (win_type == WIN_CHAT) {
char *recipient = ui_current_recipient(); char *recipient = ui_current_recipient();
GString *send_recipient = g_string_new(recipient);
ProfWin *current = wins_get_current();
if (current && current->chat_resource) {
g_string_append(send_recipient, "/");
g_string_append(send_recipient, current->chat_resource);
}
#ifdef HAVE_LIBOTR #ifdef HAVE_LIBOTR
if (otr_is_secure(recipient)) { if (otr_is_secure(recipient)) {
char *encrypted = otr_encrypt_message(recipient, tiny); char *encrypted = otr_encrypt_message(recipient, tiny);
@ -2942,7 +2966,7 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
cons_show_error("Failed to send message."); cons_show_error("Failed to send message.");
} }
} else { } else {
message_send(tiny, recipient); message_send(tiny, send_recipient->str);
if (prefs_get_boolean(PREF_CHLOG)) { if (prefs_get_boolean(PREF_CHLOG)) {
const char *jid = jabber_get_fulljid(); const char *jid = jabber_get_fulljid();
Jid *jidp = jid_create(jid); Jid *jidp = jid_create(jid);
@ -2953,7 +2977,7 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
ui_outgoing_msg("me", recipient, tiny); ui_outgoing_msg("me", recipient, tiny);
} }
#else #else
message_send(tiny, recipient); message_send(tiny, send_recipient->str);
if (prefs_get_boolean(PREF_CHLOG)) { if (prefs_get_boolean(PREF_CHLOG)) {
const char *jid = jabber_get_fulljid(); const char *jid = jabber_get_fulljid();
Jid *jidp = jid_create(jid); Jid *jidp = jid_create(jid);
@ -2963,6 +2987,8 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
ui_outgoing_msg("me", recipient, tiny); ui_outgoing_msg("me", recipient, tiny);
#endif #endif
g_string_free(send_recipient, TRUE);
} else if (win_type == WIN_PRIVATE) { } else if (win_type == WIN_PRIVATE) {
char *recipient = ui_current_recipient(); char *recipient = ui_current_recipient();
message_send(tiny, recipient); message_send(tiny, recipient);

View File

@ -883,6 +883,8 @@ _ui_gone_secure(const char * const recipient, gboolean trusted)
window = wins_new(recipient, WIN_CHAT); window = wins_new(recipient, WIN_CHAT);
} }
FREE_SET_NULL(window->chat_resource);
window->is_otr = TRUE; window->is_otr = TRUE;
window->is_trusted = trusted; window->is_trusted = trusted;
if (trusted) { if (trusted) {