Moved chat states out of xmpp module for message send chat
This commit is contained in:
@@ -1793,12 +1793,7 @@ cmd_execute_default(const char * inp)
|
||||
} else {
|
||||
ProfWin *current = wins_get_current();
|
||||
ProfChatWin *chatwin = (ProfChatWin*)current;
|
||||
GString *send_recipient = g_string_new(chatwin->barejid);
|
||||
if (current && chatwin->resource) {
|
||||
g_string_append(send_recipient, "/");
|
||||
g_string_append(send_recipient, chatwin->resource);
|
||||
}
|
||||
|
||||
assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
|
||||
#ifdef HAVE_LIBOTR
|
||||
prof_otrpolicy_t policy = otr_get_policy(chatwin->barejid);
|
||||
if (policy == PROF_OTRPOLICY_ALWAYS && !otr_is_secure(chatwin->barejid)) {
|
||||
@@ -1808,7 +1803,18 @@ cmd_execute_default(const char * inp)
|
||||
if (otr_is_secure(chatwin->barejid)) {
|
||||
char *encrypted = otr_encrypt_message(chatwin->barejid, inp);
|
||||
if (encrypted != NULL) {
|
||||
message_send_chat(chatwin->barejid, encrypted);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
message_send_chat(chatwin->barejid, chatwin->barejid, encrypted, send_state);
|
||||
otr_free_message(encrypted);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
@@ -1828,7 +1834,17 @@ cmd_execute_default(const char * inp)
|
||||
cons_show_error("Failed to send message.");
|
||||
}
|
||||
} else {
|
||||
message_send_chat(send_recipient->str, inp);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, chatwin->resource, inp, send_state);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
@@ -1839,7 +1855,17 @@ cmd_execute_default(const char * inp)
|
||||
ui_outgoing_chat_msg("me", chatwin->barejid, inp);
|
||||
}
|
||||
#else
|
||||
message_send_chat(send_recipient->str, inp);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, chatwin->resource, inp, send_state);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
@@ -1849,7 +1875,6 @@ cmd_execute_default(const char * inp)
|
||||
|
||||
ui_outgoing_chat_msg("me", chatwin->barejid, inp);
|
||||
#endif
|
||||
g_string_free(send_recipient, TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -1146,40 +1146,50 @@ cmd_msg(gchar **args, struct cmd_help_t help)
|
||||
return TRUE;
|
||||
|
||||
} else {
|
||||
char *usr_jid = roster_barejid_from_name(usr);
|
||||
if (usr_jid == NULL) {
|
||||
usr_jid = usr;
|
||||
// get barejid
|
||||
char *barejid = roster_barejid_from_name(usr);
|
||||
if (barejid == NULL) {
|
||||
barejid = usr;
|
||||
}
|
||||
GString *send_jid = g_string_new(usr_jid);
|
||||
ProfWin *current = wins_get_current();
|
||||
|
||||
// if msg to current recipient, attach resource if set
|
||||
// if msg to current recipient, and resource specified, set resource
|
||||
char *resource = NULL;
|
||||
ProfWin *current = wins_get_current();
|
||||
if (current->type == WIN_CHAT) {
|
||||
ProfChatWin *chatwin = (ProfChatWin*)current;
|
||||
assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
|
||||
if ((g_strcmp0(chatwin->barejid, usr_jid) == 0) && (chatwin->resource)) {
|
||||
g_string_append(send_jid, "/");
|
||||
g_string_append(send_jid, chatwin->resource);
|
||||
if ((g_strcmp0(chatwin->barejid, barejid) == 0) && (chatwin->resource)) {
|
||||
resource = chatwin->resource;
|
||||
}
|
||||
}
|
||||
|
||||
if (msg != NULL) {
|
||||
#ifdef HAVE_LIBOTR
|
||||
if (otr_is_secure(usr_jid)) {
|
||||
char *encrypted = otr_encrypt_message(usr_jid, msg);
|
||||
if (otr_is_secure(barejid)) {
|
||||
char *encrypted = otr_encrypt_message(barejid, msg);
|
||||
if (encrypted != NULL) {
|
||||
message_send_chat(usr_jid, encrypted);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(barejid)) {
|
||||
chat_session_set_active(barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(barejid, resource, encrypted, send_state);
|
||||
otr_free_message(encrypted);
|
||||
ui_outgoing_chat_msg("me", usr_jid, msg);
|
||||
ui_outgoing_chat_msg("me", barejid, msg);
|
||||
|
||||
if (((win_type == WIN_CHAT) || (win_type == WIN_CONSOLE)) && prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
char *pref_otr_log = prefs_get_string(PREF_OTR_LOG);
|
||||
if (strcmp(pref_otr_log, "on") == 0) {
|
||||
chat_log_chat(jidp->barejid, usr_jid, msg, PROF_OUT_LOG, NULL);
|
||||
chat_log_chat(jidp->barejid, barejid, msg, PROF_OUT_LOG, NULL);
|
||||
} else if (strcmp(pref_otr_log, "redact") == 0) {
|
||||
chat_log_chat(jidp->barejid, usr_jid, "[redacted]", PROF_OUT_LOG, NULL);
|
||||
chat_log_chat(jidp->barejid, barejid, "[redacted]", PROF_OUT_LOG, NULL);
|
||||
}
|
||||
prefs_free_string(pref_otr_log);
|
||||
jid_destroy(jidp);
|
||||
@@ -1188,7 +1198,7 @@ cmd_msg(gchar **args, struct cmd_help_t help)
|
||||
cons_show_error("Failed to encrypt and send message,");
|
||||
}
|
||||
} else {
|
||||
prof_otrpolicy_t policy = otr_get_policy(usr_jid);
|
||||
prof_otrpolicy_t policy = otr_get_policy(barejid);
|
||||
|
||||
if (policy == PROF_OTRPOLICY_ALWAYS) {
|
||||
cons_show_error("Failed to send message. Please check OTR policy");
|
||||
@@ -1197,59 +1207,81 @@ cmd_msg(gchar **args, struct cmd_help_t help)
|
||||
GString *otr_message = g_string_new(msg);
|
||||
g_string_append(otr_message, OTRL_MESSAGE_TAG_BASE);
|
||||
g_string_append(otr_message, OTRL_MESSAGE_TAG_V2);
|
||||
message_send_chat(usr_jid, otr_message->str);
|
||||
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(barejid)) {
|
||||
chat_session_set_active(barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(barejid, resource, otr_message->str, send_state);
|
||||
|
||||
g_string_free(otr_message, TRUE);
|
||||
} else {
|
||||
message_send_chat(send_jid->str, msg);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(barejid)) {
|
||||
chat_session_set_active(barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(barejid, resource, msg, send_state);
|
||||
}
|
||||
ui_outgoing_chat_msg("me", usr_jid, msg);
|
||||
ui_outgoing_chat_msg("me", barejid, msg);
|
||||
|
||||
if (((win_type == WIN_CHAT) || (win_type == WIN_CONSOLE)) && prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
chat_log_chat(jidp->barejid, usr_jid, msg, PROF_OUT_LOG, NULL);
|
||||
chat_log_chat(jidp->barejid, barejid, msg, PROF_OUT_LOG, NULL);
|
||||
jid_destroy(jidp);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
#else
|
||||
message_send_chat(send_jid->str, msg);
|
||||
ui_outgoing_chat_msg("me", usr_jid, msg);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(barejid)) {
|
||||
chat_session_set_active(barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(barejid, resource, msg, send_state);
|
||||
ui_outgoing_chat_msg("me", barejid, msg);
|
||||
|
||||
if (((win_type == WIN_CHAT) || (win_type == WIN_CONSOLE)) && prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
chat_log_chat(jidp->barejid, usr_jid, msg, PROF_OUT_LOG, NULL);
|
||||
chat_log_chat(jidp->barejid, barejid, msg, PROF_OUT_LOG, NULL);
|
||||
jid_destroy(jidp);
|
||||
}
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
} else { // msg == NULL
|
||||
const char * jid = NULL;
|
||||
|
||||
if (roster_barejid_from_name(usr_jid) != NULL) {
|
||||
jid = roster_barejid_from_name(usr_jid);
|
||||
} else {
|
||||
jid = usr_jid;
|
||||
}
|
||||
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(jid)) {
|
||||
chat_session_start(jid, TRUE);
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
ui_new_chat_win(usr_jid);
|
||||
ui_new_chat_win(barejid);
|
||||
#ifdef HAVE_LIBOTR
|
||||
if (otr_is_secure(jid)) {
|
||||
ui_gone_secure(jid, otr_is_trusted(jid));
|
||||
if (otr_is_secure(barejid)) {
|
||||
ui_gone_secure(barejid, otr_is_trusted(barejid));
|
||||
}
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
g_string_free(send_jid, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2965,17 +2997,21 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
|
||||
if (tiny != NULL) {
|
||||
if (win_type == WIN_CHAT) {
|
||||
ProfChatWin *chatwin = wins_get_current_chat();
|
||||
GString *send_recipient = g_string_new(chatwin->barejid);
|
||||
if (chatwin->resource) {
|
||||
g_string_append(send_recipient, "/");
|
||||
g_string_append(send_recipient, chatwin->resource);
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBOTR
|
||||
if (otr_is_secure(chatwin->barejid)) {
|
||||
char *encrypted = otr_encrypt_message(chatwin->barejid, tiny);
|
||||
if (encrypted != NULL) {
|
||||
message_send_chat(chatwin->barejid, encrypted);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, chatwin->resource, encrypted, send_state);
|
||||
otr_free_message(encrypted);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
@@ -2995,7 +3031,17 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
|
||||
cons_show_error("Failed to send message.");
|
||||
}
|
||||
} else {
|
||||
message_send_chat(send_recipient->str, tiny);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, chatwin->resource, tiny, send_state);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
@@ -3006,7 +3052,17 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
|
||||
ui_outgoing_chat_msg("me", chatwin->barejid, tiny);
|
||||
}
|
||||
#else
|
||||
message_send_chat(send_recipient->str, tiny);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, chatwin->resource, tiny);
|
||||
if (prefs_get_boolean(PREF_CHLOG)) {
|
||||
const char *jid = jabber_get_fulljid();
|
||||
Jid *jidp = jid_create(jid);
|
||||
@@ -3016,8 +3072,6 @@ cmd_tiny(gchar **args, struct cmd_help_t help)
|
||||
|
||||
ui_outgoing_chat_msg("me", chatwin->barejid, tiny);
|
||||
#endif
|
||||
g_string_free(send_recipient, TRUE);
|
||||
|
||||
} else if (win_type == WIN_PRIVATE) {
|
||||
ProfPrivateWin *privatewin = wins_get_current_private();
|
||||
message_send_private(tiny, privatewin->fulljid);
|
||||
@@ -3931,7 +3985,17 @@ cmd_otr(gchar **args, struct cmd_help_t help)
|
||||
ui_current_print_formatted_line('!', 0, "You have not generated or loaded a private key, use '/otr gen'");
|
||||
} else if (!otr_is_secure(barejid)) {
|
||||
char *otr_query_message = otr_start_query();
|
||||
message_send_chat(barejid, otr_query_message);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(barejid)) {
|
||||
chat_session_start(barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(barejid)) {
|
||||
chat_session_set_active(barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(barejid, NULL, otr_query_message, send_state);
|
||||
} else {
|
||||
ui_gone_secure(barejid, otr_is_trusted(barejid));
|
||||
}
|
||||
@@ -3949,7 +4013,17 @@ cmd_otr(gchar **args, struct cmd_help_t help)
|
||||
} else {
|
||||
ProfChatWin *chatwin = ui_get_current_chat();
|
||||
char *otr_query_message = otr_start_query();
|
||||
message_send_chat(chatwin->barejid, otr_query_message);
|
||||
gboolean send_state = FALSE;
|
||||
if (prefs_get_boolean(PREF_STATES)) {
|
||||
if (!chat_session_exists(chatwin->barejid)) {
|
||||
chat_session_start(chatwin->barejid, TRUE);
|
||||
}
|
||||
if (chat_session_get_recipient_supports(chatwin->barejid)) {
|
||||
chat_session_set_active(chatwin->barejid);
|
||||
send_state = TRUE;
|
||||
}
|
||||
}
|
||||
message_send_chat(chatwin->barejid, NULL, otr_query_message, send_state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user