about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2018-03-05 20:50:05 +0000
committerJames Booth <boothj5@gmail.com>2018-03-05 20:50:05 +0000
commit44cff47668cad969c85e4b5d9a048ac1e4961112 (patch)
tree5dfde9fb10ce3c0a71093c014bea879e58db3a4a
parentad76495267c2a2f9a11130eda83a3c7a7b67470f (diff)
parentecd0736a099ea4b25d302c68af7936b25c5f4eaa (diff)
downloadprofani-tty-44cff47668cad969c85e4b5d9a048ac1e4961112.tar.gz
Merge branch 'master' into autocomplete-clear
-rw-r--r--src/command/cmd_funcs.c21
-rw-r--r--src/config/theme.c2
-rw-r--r--tests/unittests/test_cmd_bookmark.c130
-rw-r--r--tests/unittests/test_cmd_bookmark.h5
-rw-r--r--tests/unittests/unittests.c5
-rw-r--r--themes/boothj54
-rw-r--r--themes/boothj5_slack6
7 files changed, 164 insertions, 9 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index 023327ed..53c8b9ed 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -4500,11 +4500,15 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
 
     if (conn_status != JABBER_CONNECTED) {
         cons_show("You are not currently connected.");
+        cons_alert();
         return TRUE;
     }
 
+    int num_args = g_strv_length(args);
     gchar *cmd = args[0];
-    if (window->type == WIN_MUC && (cmd == NULL || g_strcmp0(cmd, "add") == 0)) {
+    if (window->type == WIN_MUC
+            && num_args < 2
+            && (cmd == NULL || g_strcmp0(cmd, "add") == 0)) {
         // default to current nickname, password, and autojoin "on"
         ProfMucWin *mucwin = (ProfMucWin*)window;
         assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
@@ -4519,7 +4523,9 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
         return TRUE;
     }
 
-    if (window->type == WIN_MUC && g_strcmp0(cmd, "remove") == 0) {
+    if (window->type == WIN_MUC
+            && num_args < 2
+            && g_strcmp0(cmd, "remove") == 0) {
         ProfMucWin *mucwin = (ProfMucWin*)window;
         assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
         gboolean removed = bookmark_remove(mucwin->roomjid);
@@ -4533,6 +4539,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
 
     if (cmd == NULL) {
         cons_bad_cmd_usage(command);
+        cons_alert();
         return TRUE;
     }
 
@@ -4547,6 +4554,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
             cons_bad_cmd_usage(command);
             cons_show("");
         }
+        cons_alert();
         return TRUE;
     }
 
@@ -4561,11 +4569,13 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
     if (jid == NULL) {
         cons_bad_cmd_usage(command);
         cons_show("");
+        cons_alert();
         return TRUE;
     }
     if (strchr(jid, '@') == NULL) {
         cons_show("Invalid room, must be of the form room@domain.tld");
         cons_show("");
+        cons_alert();
         return TRUE;
     }
 
@@ -4576,6 +4586,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
         } else {
             cons_show("No bookmark exists for %s.", jid);
         }
+        cons_alert();
         return TRUE;
     }
 
@@ -4584,6 +4595,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
         if (!joined) {
             cons_show("No bookmark exists for %s.", jid);
         }
+        cons_alert();
         return TRUE;
     }
 
@@ -4594,6 +4606,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
     if (!parsed) {
         cons_bad_cmd_usage(command);
         cons_show("");
+        cons_alert();
         return TRUE;
     }
 
@@ -4603,6 +4616,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
         cons_bad_cmd_usage(command);
         cons_show("");
         options_destroy(options);
+        cons_alert();
         return TRUE;
     }
 
@@ -4617,6 +4631,7 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
             cons_show("Bookmark already exists, use /bookmark update to edit.");
         }
         options_destroy(options);
+        cons_alert();
         return TRUE;
     }
 
@@ -4628,11 +4643,13 @@ cmd_bookmark(ProfWin *window, const char *const command, gchar **args)
             cons_show("No bookmark exists for %s.", jid);
         }
         options_destroy(options);
+        cons_alert();
         return TRUE;
     }
 
     cons_bad_cmd_usage(command);
     options_destroy(options);
+    cons_alert();
 
     return TRUE;
 }
diff --git a/src/config/theme.c b/src/config/theme.c
index 6eee3753..7c5937fb 100644
--- a/src/config/theme.c
+++ b/src/config/theme.c
@@ -402,6 +402,7 @@ _load_preferences(void)
     _set_boolean_preference("roster.contacts", PREF_ROSTER_CONTACTS);
     _set_boolean_preference("roster.unsubscribed", PREF_ROSTER_UNSUBSCRIBED);
     _set_boolean_preference("roster.rooms", PREF_ROSTER_ROOMS);
+    _set_boolean_preference("roster.rooms.server", PREF_ROSTER_ROOMS_SERVER);
     _set_boolean_preference("privileges", PREF_MUC_PRIVILEGES);
     _set_boolean_preference("presence", PREF_PRESENCE);
     _set_boolean_preference("intype", PREF_INTYPE);
@@ -427,7 +428,6 @@ _load_preferences(void)
     _set_string_preference("roster.unread", PREF_ROSTER_UNREAD);
     _set_string_preference("roster.rooms.order", PREF_ROSTER_ROOMS_ORDER);
     _set_string_preference("roster.rooms.unread", PREF_ROSTER_ROOMS_UNREAD);
-    _set_string_preference("roster.rooms.server", PREF_ROSTER_ROOMS_SERVER);
     _set_string_preference("roster.rooms.pos", PREF_ROSTER_ROOMS_POS);
     _set_string_preference("roster.rooms.by", PREF_ROSTER_ROOMS_BY);
     _set_string_preference("roster.private", PREF_ROSTER_PRIVATE);
diff --git a/tests/unittests/test_cmd_bookmark.c b/tests/unittests/test_cmd_bookmark.c
index 901d31f8..fb1f7996 100644
--- a/tests/unittests/test_cmd_bookmark.c
+++ b/tests/unittests/test_cmd_bookmark.c
@@ -24,10 +24,12 @@
 
 static void test_with_connection_status(jabber_conn_status_t status)
 {
+    ProfWin window;
+    window.type = WIN_CONSOLE;
     will_return(connection_get_status, status);
     expect_cons_show("You are not currently connected.");
 
-    gboolean result = cmd_bookmark(NULL, CMD_BOOKMARK, NULL);
+    gboolean result = cmd_bookmark(&window, CMD_BOOKMARK, NULL);
     assert_true(result);
 }
 
@@ -165,6 +167,85 @@ void cmd_bookmark_add_adds_bookmark_with_jid(void **state)
     assert_true(result);
 }
 
+void cmd_bookmark_uses_roomjid_in_room(void **state)
+{
+    muc_init();
+
+    gchar *args[] = { NULL };
+    ProfMucWin muc_win;
+    muc_win.window.type = WIN_MUC;
+    muc_win.memcheck = PROFMUCWIN_MEMCHECK;
+    muc_win.roomjid = "room@conf.server";
+
+    will_return(connection_get_status, JABBER_CONNECTED);
+
+    expect_string(bookmark_add, jid, muc_win.roomjid);
+    expect_any(bookmark_add, nick);
+    expect_any(bookmark_add, password);
+    expect_any(bookmark_add, autojoin_str);
+    will_return(bookmark_add, TRUE);
+
+    expect_win_println("Bookmark added for room@conf.server.");
+
+    gboolean result = cmd_bookmark(&muc_win, CMD_BOOKMARK, args);
+    assert_true(result);
+
+    muc_close();
+}
+
+void cmd_bookmark_add_uses_roomjid_in_room(void **state)
+{
+    muc_init();
+
+    gchar *args[] = { "add", NULL };
+    ProfMucWin muc_win;
+    muc_win.window.type = WIN_MUC;
+    muc_win.memcheck = PROFMUCWIN_MEMCHECK;
+    muc_win.roomjid = "room@conf.server";
+
+    will_return(connection_get_status, JABBER_CONNECTED);
+
+    expect_string(bookmark_add, jid, muc_win.roomjid);
+    expect_any(bookmark_add, nick);
+    expect_any(bookmark_add, password);
+    expect_any(bookmark_add, autojoin_str);
+    will_return(bookmark_add, TRUE);
+
+    expect_win_println("Bookmark added for room@conf.server.");
+
+    gboolean result = cmd_bookmark(&muc_win, CMD_BOOKMARK, args);
+    assert_true(result);
+
+    muc_close();
+}
+
+void cmd_bookmark_add_uses_supplied_jid_in_room(void **state)
+{
+    muc_init();
+
+    char *jid = "room1@conf.server";
+    gchar *args[] = { "add", jid, NULL };
+    ProfMucWin muc_win;
+    muc_win.window.type = WIN_MUC;
+    muc_win.memcheck = PROFMUCWIN_MEMCHECK;
+    muc_win.roomjid = "room2@conf.server";
+
+    will_return(connection_get_status, JABBER_CONNECTED);
+
+    expect_string(bookmark_add, jid, jid);
+    expect_any(bookmark_add, nick);
+    expect_any(bookmark_add, password);
+    expect_any(bookmark_add, autojoin_str);
+    will_return(bookmark_add, TRUE);
+
+    expect_cons_show("Bookmark added for room1@conf.server.");
+
+    gboolean result = cmd_bookmark(&muc_win, CMD_BOOKMARK, args);
+    assert_true(result);
+
+    muc_close();
+}
+
 void cmd_bookmark_add_adds_bookmark_with_jid_nick(void **state)
 {
     char *jid = "room@conf.server";
@@ -265,3 +346,50 @@ void cmd_bookmark_remove_shows_message_when_no_bookmark(void **state)
     gboolean result = cmd_bookmark(&window, CMD_BOOKMARK, args);
     assert_true(result);
 }
+
+void cmd_bookmark_remove_uses_roomjid_in_room(void **state)
+{
+    muc_init();
+
+    gchar *args[] = { "remove", NULL };
+    ProfMucWin muc_win;
+    muc_win.window.type = WIN_MUC;
+    muc_win.memcheck = PROFMUCWIN_MEMCHECK;
+    muc_win.roomjid = "room@conf.server";
+
+    will_return(connection_get_status, JABBER_CONNECTED);
+
+    expect_string(bookmark_remove, jid, muc_win.roomjid);
+    will_return(bookmark_remove, TRUE);
+
+    expect_win_println("Bookmark removed for room@conf.server.");
+
+    gboolean result = cmd_bookmark(&muc_win, CMD_BOOKMARK, args);
+    assert_true(result);
+
+    muc_close();
+}
+
+void cmd_bookmark_remove_uses_supplied_jid_in_room(void **state)
+{
+    muc_init();
+
+    char *jid = "room1@conf.server";
+    gchar *args[] = { "remove", jid, NULL };
+    ProfMucWin muc_win;
+    muc_win.window.type = WIN_MUC;
+    muc_win.memcheck = PROFMUCWIN_MEMCHECK;
+    muc_win.roomjid = "room2@conf.server";
+
+    will_return(connection_get_status, JABBER_CONNECTED);
+
+    expect_string(bookmark_remove, jid, jid);
+    will_return(bookmark_remove, TRUE);
+
+    expect_cons_show("Bookmark removed for room1@conf.server.");
+
+    gboolean result = cmd_bookmark(&muc_win, CMD_BOOKMARK, args);
+    assert_true(result);
+
+    muc_close();
+}
diff --git a/tests/unittests/test_cmd_bookmark.h b/tests/unittests/test_cmd_bookmark.h
index abbdbe98..195882b5 100644
--- a/tests/unittests/test_cmd_bookmark.h
+++ b/tests/unittests/test_cmd_bookmark.h
@@ -6,6 +6,11 @@ void cmd_bookmark_shows_usage_when_no_args(void **state);
 void cmd_bookmark_list_shows_bookmarks(void **state);
 void cmd_bookmark_add_shows_message_when_invalid_jid(void **state);
 void cmd_bookmark_add_adds_bookmark_with_jid(void **state);
+void cmd_bookmark_uses_roomjid_in_room(void **state);
+void cmd_bookmark_add_uses_roomjid_in_room(void **state);
+void cmd_bookmark_add_uses_supplied_jid_in_room(void **state);
+void cmd_bookmark_remove_uses_roomjid_in_room(void **state);
+void cmd_bookmark_remove_uses_supplied_jid_in_room(void **state);
 void cmd_bookmark_add_adds_bookmark_with_jid_nick(void **state);
 void cmd_bookmark_add_adds_bookmark_with_jid_autojoin(void **state);
 void cmd_bookmark_add_adds_bookmark_with_jid_nick_autojoin(void **state);
diff --git a/tests/unittests/unittests.c b/tests/unittests/unittests.c
index c1d02fe5..4e3e149e 100644
--- a/tests/unittests/unittests.c
+++ b/tests/unittests/unittests.c
@@ -493,6 +493,11 @@ int main(int argc, char* argv[]) {
         unit_test(cmd_bookmark_list_shows_bookmarks),
         unit_test(cmd_bookmark_add_shows_message_when_invalid_jid),
         unit_test(cmd_bookmark_add_adds_bookmark_with_jid),
+        unit_test(cmd_bookmark_uses_roomjid_in_room),
+        unit_test(cmd_bookmark_add_uses_roomjid_in_room),
+        unit_test(cmd_bookmark_add_uses_supplied_jid_in_room),
+        unit_test(cmd_bookmark_remove_uses_roomjid_in_room),
+        unit_test(cmd_bookmark_remove_uses_supplied_jid_in_room),
         unit_test(cmd_bookmark_add_adds_bookmark_with_jid_nick),
         unit_test(cmd_bookmark_add_adds_bookmark_with_jid_autojoin),
         unit_test(cmd_bookmark_add_adds_bookmark_with_jid_nick_autojoin),
diff --git a/themes/boothj5 b/themes/boothj5
index fd38f419..b97a4499 100644
--- a/themes/boothj5
+++ b/themes/boothj5
@@ -102,13 +102,12 @@ statuses.muc=none
 roster=true
 roster.offline=false
 roster.empty=false
-roster.by=group
+roster.by=none
 roster.order=presence
 roster.unread=after
 roster.priority=false
 roster.size=25
 roster.wrap=true
-roster.header.char=@
 roster.contact.indent=1
 roster.resource=true
 roster.resource.char=/
@@ -124,6 +123,7 @@ roster.rooms.order=name
 roster.rooms.unread=after
 roster.rooms.pos=last
 roster.rooms.by=none
+roster.rooms.server=false
 roster.rooms.private.char=/
 roster.private=room
 roster.count=unread
diff --git a/themes/boothj5_slack b/themes/boothj5_slack
index 5dd435d1..792fdef2 100644
--- a/themes/boothj5_slack
+++ b/themes/boothj5_slack
@@ -106,9 +106,8 @@ roster.by=none
 roster.order=presence
 roster.unread=after
 roster.priority=false
-roster.size=25
+roster.size=15
 roster.wrap=true
-roster.header.char=@
 roster.contact.indent=1
 roster.resource=false
 roster.presence=false
@@ -119,7 +118,8 @@ roster.rooms=true
 roster.rooms.order=name
 roster.rooms.unread=after
 roster.rooms.pos=first
-roster.rooms.by=service
+roster.rooms.by=none
+roster.rooms.server=false
 roster.rooms.private.char=/
 roster.private=room
 roster.count=unread