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

Allow /role list and /affiliation list with no args

This commit is contained in:
James Booth 2014-10-12 01:10:46 +01:00
parent 8b1d0bdc3f
commit 77684cda00
4 changed files with 23 additions and 8 deletions

View File

@ -1,5 +1,3 @@
Reorganise/simplify room commands
Add /room affiliation|role list with no arg to show all
Fix room commands help Fix room commands help
Show role/affiliation on join Show role/affiliation on join
Show role/affiliation on update Show role/affiliation on update

View File

@ -354,7 +354,7 @@ static struct cmd_t command_defs[] =
{ "/affiliation set|list [affiliation] [jid]", { "/affiliation set|list [affiliation] [jid]",
"-----------------------------------------", "-----------------------------------------",
"set affiliation jid - Set the affiliation of user with jid.", "set affiliation jid - Set the affiliation of user with jid.",
"list affiliation - List all users with the specified affiliation.", "list [affiliation] - List all users with the specified affiliation, or all if none specified.",
"The affiliation may be one of owner, admin, member, outcast or none.", "The affiliation may be one of owner, admin, member, outcast or none.",
NULL } } }, NULL } } },
@ -364,7 +364,7 @@ static struct cmd_t command_defs[] =
{ "/role set|list [role] [nick]", { "/role set|list [role] [nick]",
"----------------------------", "----------------------------",
"set role nick - Set the role of occupant with nick.", "set role nick - Set the role of occupant with nick.",
"list role - List all occupants with the specified role.", "list [role] - List all occupants with the specified role, or all if none specified.",
"The role may be one of moderator, participant, visitor or none.", "The role may be one of moderator, participant, visitor or none.",
NULL } } }, NULL } } },

View File

@ -2244,7 +2244,17 @@ cmd_affiliation(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
char *room = ui_current_recipient();
char *affiliation = args[1]; char *affiliation = args[1];
if (!affiliation) {
iq_room_affiliation_list(room, "owner");
iq_room_affiliation_list(room, "admin");
iq_room_affiliation_list(room, "member");
iq_room_affiliation_list(room, "outcast");
return TRUE;
}
if ((g_strcmp0(affiliation, "owner") != 0) && if ((g_strcmp0(affiliation, "owner") != 0) &&
(g_strcmp0(affiliation, "admin") != 0) && (g_strcmp0(affiliation, "admin") != 0) &&
(g_strcmp0(affiliation, "member") != 0) && (g_strcmp0(affiliation, "member") != 0) &&
@ -2254,7 +2264,6 @@ cmd_affiliation(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
char *room = ui_current_recipient();
ProfWin *window = wins_get_by_recipient(room); ProfWin *window = wins_get_by_recipient(room);
if (g_strcmp0(cmd, "list") == 0) { if (g_strcmp0(cmd, "list") == 0) {
@ -2303,7 +2312,16 @@ cmd_role(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
char *room = ui_current_recipient();
char *role = args[1]; char *role = args[1];
if (!role) {
iq_room_role_list(room, "moderator");
iq_room_role_list(room, "participant");
iq_room_role_list(room, "visitor");
return TRUE;
}
if ((g_strcmp0(role, "visitor") != 0) && if ((g_strcmp0(role, "visitor") != 0) &&
(g_strcmp0(role, "participant") != 0) && (g_strcmp0(role, "participant") != 0) &&
(g_strcmp0(role, "moderator") != 0) && (g_strcmp0(role, "moderator") != 0) &&
@ -2312,14 +2330,11 @@ cmd_role(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
char *room = ui_current_recipient();
ProfWin *window = wins_get_by_recipient(room); ProfWin *window = wins_get_by_recipient(room);
if (g_strcmp0(cmd, "list") == 0) { if (g_strcmp0(cmd, "list") == 0) {
if (g_strcmp0(role, "none") == 0) { if (g_strcmp0(role, "none") == 0) {
win_save_print(window, '!', NULL, 0, 0, "", "Cannot list users with no role."); win_save_print(window, '!', NULL, 0, 0, "", "Cannot list users with no role.");
} else if (g_strcmp0(role, "visitor") == 0) {
win_save_print(window, '!', NULL, 0, 0, "", "Cannot list users with visitor role.");
} else { } else {
iq_room_role_list(room, role); iq_room_role_list(room, role);
} }

View File

@ -1936,6 +1936,7 @@ _ui_handle_room_affiliation_list(const char * const room, const char * const aff
win_save_print(window, '!', NULL, 0, 0, "", ""); win_save_print(window, '!', NULL, 0, 0, "", "");
} else { } else {
win_save_vprint(window, '!', NULL, 0, 0, "", "No users found with affiliation: %s", affiliation); win_save_vprint(window, '!', NULL, 0, 0, "", "No users found with affiliation: %s", affiliation);
win_save_print(window, '!', NULL, 0, 0, "", "");
} }
} }
} }
@ -1974,6 +1975,7 @@ _ui_handle_room_role_list(const char * const room, const char * const role, GSLi
win_save_print(window, '!', NULL, 0, 0, "", ""); win_save_print(window, '!', NULL, 0, 0, "", "");
} else { } else {
win_save_vprint(window, '!', NULL, 0, 0, "", "No occupants found with role: %s", role); win_save_vprint(window, '!', NULL, 0, 0, "", "No occupants found with role: %s", role);
win_save_print(window, '!', NULL, 0, 0, "", "");
} }
} }
} }