about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2019-06-07 22:16:33 +0200
committerGitHub <noreply@github.com>2019-06-07 22:16:33 +0200
commit1f3d61e9f7f131333c8e5b3d3391ac137b5538ff (patch)
tree27f5275946c3a003e5d39fcdeac264e105bd11c1
parent1772236178ec7809e3793bce53684500ec8f5b11 (diff)
parent9516324248e695df711d3ed1690cc1e6d7fe1d18 (diff)
downloadprofani-tty-1f3d61e9f7f131333c8e5b3d3391ac137b5538ff.tar.gz
Merge pull request #1123 from profanity-im/fix/1093-already-started-message
Print omemo start related msgs into correct window
-rw-r--r--src/command/cmd_funcs.c65
1 files changed, 25 insertions, 40 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 9688cb09..b5e996e9 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -8060,6 +8060,8 @@ cmd_omemo_start(ProfWin *window, const char *const command, gchar **args)
         return TRUE;
     }
 
+    ProfChatWin *chatwin = NULL;
+
     // recipient supplied
     if (args[1]) {
         char *contact = args[1];
@@ -8068,67 +8070,50 @@ cmd_omemo_start(ProfWin *window, const char *const command, gchar **args)
             barejid = contact;
         }
 
-        ProfChatWin *chatwin = wins_get_chat(barejid);
+        chatwin = wins_get_chat(barejid);
         if (!chatwin) {
             chatwin = chatwin_new(barejid);
         }
         ui_focus_win((ProfWin*)chatwin);
+    } else {
+      if (window->type == WIN_CHAT) {
+        chatwin = (ProfChatWin*)window;
+        assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
+      }
+    }
 
+    if (chatwin) {
         if (chatwin->pgp_send) {
-            win_println(window, THEME_DEFAULT, '!', "You must disable PGP encryption before starting an OMEMO session.");
+            win_println((ProfWin*)chatwin, THEME_DEFAULT, '!', "You must disable PGP encryption before starting an OMEMO session.");
             return TRUE;
         }
 
         if (chatwin->is_otr) {
-            win_println(window, THEME_DEFAULT, '!', "You must disable OTR encryption before starting an OMEMO session.");
+            win_println((ProfWin*)chatwin, THEME_DEFAULT, '!', "You must disable OTR encryption before starting an OMEMO session.");
             return TRUE;
         }
 
         if (chatwin->is_omemo) {
-            win_println(window, THEME_DEFAULT, '!', "You are already in an OMEMO session.");
+            win_println((ProfWin*)chatwin, THEME_DEFAULT, '!', "You are already in an OMEMO session.");
             return TRUE;
         }
 
-        accounts_add_omemo_state(session_get_account_name(), barejid, TRUE);
-        omemo_start_session(barejid);
+        accounts_add_omemo_state(session_get_account_name(), chatwin->barejid, TRUE);
+        omemo_start_session(chatwin->barejid);
         chatwin->is_omemo = TRUE;
-    } else {
-        if (window->type == WIN_CHAT) {
-            ProfChatWin *chatwin = (ProfChatWin*)window;
-            assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
-            if (chatwin->pgp_send) {
-                win_println(window, THEME_DEFAULT, '!', "You must disable PGP encryption before starting an OMEMO session.");
-                return TRUE;
-            }
-
-            if (chatwin->is_otr) {
-                win_println(window, THEME_DEFAULT, '!', "You must disable OTR encryption before starting an OMEMO session.");
-                return TRUE;
-            }
-
-            if (chatwin->is_omemo) {
-                win_println(window, THEME_DEFAULT, '!', "You are already in an OMEMO session.");
-                return TRUE;
-            }
-
-            accounts_add_omemo_state(session_get_account_name(), chatwin->barejid, TRUE);
-            omemo_start_session(chatwin->barejid);
-            chatwin->is_omemo = TRUE;
-        } else if (window->type == WIN_MUC) {
-            ProfMucWin *mucwin = (ProfMucWin*)window;
-            assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
+    } else if (window->type == WIN_MUC) {
+        ProfMucWin *mucwin = (ProfMucWin*)window;
+        assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
 
-            if (muc_anonymity_type(mucwin->roomjid) == MUC_ANONYMITY_TYPE_NONANONYMOUS) {
-                accounts_add_omemo_state(session_get_account_name(), mucwin->roomjid, TRUE);
-                omemo_start_muc_sessions(mucwin->roomjid);
-                mucwin->is_omemo = TRUE;
-            } else {
-                win_println(window, THEME_DEFAULT, '!', "MUC must be non-anonymous (i.e. be configured to present real jid to anyone) in order to support OMEMO.");
-            }
+        if (muc_anonymity_type(mucwin->roomjid) == MUC_ANONYMITY_TYPE_NONANONYMOUS) {
+            accounts_add_omemo_state(session_get_account_name(), mucwin->roomjid, TRUE);
+            omemo_start_muc_sessions(mucwin->roomjid);
+            mucwin->is_omemo = TRUE;
         } else {
-            win_println(window, THEME_DEFAULT, '-', "You must be in a regular chat window to start an OMEMO session.");
+            win_println(window, THEME_DEFAULT, '!', "MUC must be non-anonymous (i.e. be configured to present real jid to anyone) in order to support OMEMO.");
         }
-
+    } else {
+        win_println(window, THEME_DEFAULT, '-', "You must be in a regular chat window to start an OMEMO session.");
     }
 
     return TRUE;