libpurple/protocols/qq/group_join.c

changeset 24020
fe90d74977b6
parent 24019
c0801ae3c886
child 24021
ac2108c5b5f4
child 24311
73d95441cd4c
equal deleted inserted replaced
24019:c0801ae3c886 24020:fe90d74977b6
63 63
64 qq_send_room_cmd_only(gc, QQ_ROOM_CMD_QUIT, group->id); 64 qq_send_room_cmd_only(gc, QQ_ROOM_CMD_QUIT, group->id);
65 } 65 }
66 66
67 /* send packet to join a group without auth */ 67 /* send packet to join a group without auth */
68 void qq_send_cmd_group_join_group(PurpleConnection *gc, qq_group *group) 68 void qq_request_room_join(PurpleConnection *gc, qq_group *group)
69 { 69 {
70 g_return_if_fail(group != NULL); 70 g_return_if_fail(group != NULL);
71 71
72 if (group->my_role == QQ_ROOM_ROLE_NO) { 72 if (group->my_role == QQ_ROOM_ROLE_NO) {
73 group->my_role = QQ_ROOM_ROLE_REQUESTING; 73 group->my_role = QQ_ROOM_ROLE_REQUESTING;
77 switch (group->auth_type) { 77 switch (group->auth_type) {
78 case QQ_ROOM_AUTH_TYPE_NO_AUTH: 78 case QQ_ROOM_AUTH_TYPE_NO_AUTH:
79 case QQ_ROOM_AUTH_TYPE_NEED_AUTH: 79 case QQ_ROOM_AUTH_TYPE_NEED_AUTH:
80 break; 80 break;
81 case QQ_ROOM_AUTH_TYPE_NO_ADD: 81 case QQ_ROOM_AUTH_TYPE_NO_ADD:
82 purple_notify_warning(gc, NULL, _("The Qun does not allow others to join"), NULL); 82 if (group->my_role == QQ_ROOM_ROLE_NO
83 return; 83 && group->my_role == QQ_ROOM_ROLE_REQUESTING) {
84 purple_notify_warning(gc, NULL, _("The Qun does not allow others to join"), NULL);
85 return;
86 }
87 break;
84 default: 88 default:
85 purple_debug_error("QQ", "Unknown room auth type: %d\n", group->auth_type); 89 purple_debug_error("QQ", "Unknown room auth type: %d\n", group->auth_type);
86 break; 90 break;
87 } 91 }
88 92
243 purple_debug_info("QQ", "Succeed joining group \"%s\"\n", group->title_utf8); 247 purple_debug_info("QQ", "Succeed joining group \"%s\"\n", group->title_utf8);
244 group->my_role = QQ_ROOM_ROLE_YES; 248 group->my_role = QQ_ROOM_ROLE_YES;
245 qq_group_refresh(gc, group); 249 qq_group_refresh(gc, group);
246 /* this must be shown before getting online members */ 250 /* this must be shown before getting online members */
247 qq_group_conv_show_window(gc, group); 251 qq_group_conv_show_window(gc, group);
248 qq_room_update(gc, 0, group->id); 252 /* qq_update_room(gc, 0, group->id); */
253 qq_send_room_cmd_only(gc, QQ_ROOM_CMD_GET_ONLINES, group->id);
249 break; 254 break;
250 case QQ_ROOM_JOIN_NEED_AUTH: 255 case QQ_ROOM_JOIN_NEED_AUTH:
251 purple_debug_info("QQ", 256 purple_debug_info("QQ",
252 "Fail joining group [%d] %s, needs authentication\n", 257 "Fail joining group [%d] %s, needs authentication\n",
253 group->ext_id, group->title_utf8); 258 group->ext_id, group->title_utf8);
283 return; 288 return;
284 } 289 }
285 290
286 group = qq_room_search_ext_id(gc, ext_id); 291 group = qq_room_search_ext_id(gc, ext_id);
287 if (group) { 292 if (group) {
288 qq_send_cmd_group_join_group(gc, group); 293 qq_request_room_join(gc, group);
289 } else { 294 } else {
290 qq_set_pending_id(&qd->joining_groups, ext_id, TRUE); 295 qq_set_pending_id(&qd->joining_groups, ext_id, TRUE);
291 qq_send_cmd_group_search_group(gc, ext_id); 296 qq_send_cmd_group_search_group(gc, ext_id);
292 } 297 }
293 } 298 }

mercurial