about summary refs log tree commit diff stats
path: root/src/command/cmd_funcs.c
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2020-01-20 14:28:13 +0100
committerMichael Vetter <jubalh@iodoru.org>2020-01-20 14:28:13 +0100
commit84506cbaebdf14bb95a04245c8651fc402706c73 (patch)
tree947c334262f261b90b562b88c026e3aa333cd0d2 /src/command/cmd_funcs.c
parent442046354168832807cf2f232603c57ee3461c66 (diff)
downloadprofani-tty-84506cbaebdf14bb95a04245c8651fc402706c73.tar.gz
Use OMEMO for offline MUC members (#1242)
Diffstat (limited to 'src/command/cmd_funcs.c')
-rw-r--r--src/command/cmd_funcs.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 151ce008..fbb5e581 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -3586,6 +3586,9 @@ cmd_join(ProfWin *window, const char *const command, gchar **args)
     if (!muc_active(room)) {
         presence_join_room(room, nick, passwd);
         muc_join(room, nick, passwd, FALSE);
+        iq_room_affiliation_list(room, "member", false);
+        iq_room_affiliation_list(room, "admin", false);
+        iq_room_affiliation_list(room, "owner", false);
     } else if (muc_roster_complete(room)) {
         ui_switch_to_room(room);
     }
@@ -4131,14 +4134,14 @@ cmd_affiliation(ProfWin *window, const char *const command, gchar **args)
 
     if (g_strcmp0(cmd, "list") == 0) {
         if (!affiliation) {
-            iq_room_affiliation_list(mucwin->roomjid, "owner");
-            iq_room_affiliation_list(mucwin->roomjid, "admin");
-            iq_room_affiliation_list(mucwin->roomjid, "member");
-            iq_room_affiliation_list(mucwin->roomjid, "outcast");
+            iq_room_affiliation_list(mucwin->roomjid, "owner", true);
+            iq_room_affiliation_list(mucwin->roomjid, "admin", true);
+            iq_room_affiliation_list(mucwin->roomjid, "member", true);
+            iq_room_affiliation_list(mucwin->roomjid, "outcast", true);
         } else if (g_strcmp0(affiliation, "none") == 0) {
             win_println(window, THEME_DEFAULT, '!', "Cannot list users with no affiliation.");
         } else {
-            iq_room_affiliation_list(mucwin->roomjid, affiliation);
+            iq_room_affiliation_list(mucwin->roomjid, affiliation, true);
         }
         return TRUE;
     }
@@ -8124,12 +8127,13 @@ cmd_omemo_start(ProfWin *window, const char *const command, gchar **args)
         ProfMucWin *mucwin = (ProfMucWin*)window;
         assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
 
-        if (muc_anonymity_type(mucwin->roomjid) == MUC_ANONYMITY_TYPE_NONANONYMOUS) {
+        if (muc_anonymity_type(mucwin->roomjid) == MUC_ANONYMITY_TYPE_NONANONYMOUS
+                && muc_member_type(mucwin->roomjid) == MUC_MEMBER_TYPE_MEMBERS_ONLY) {
             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.");
+            win_println(window, THEME_DEFAULT, '!', "MUC must be non-anonymous (i.e. be configured to present real jid to anyone) and members-only in order to support OMEMO.");
         }
     } else {
         win_println(window, THEME_DEFAULT, '-', "You must be in a regular chat window to start an OMEMO session.");