Added queries to add/delete user to group
This commit is contained in:
parent
8d4dcf313c
commit
18bc09b201
14
interface.c
14
interface.c
@ -256,6 +256,8 @@ char *commands[] = {
|
|||||||
"create_secret_chat",
|
"create_secret_chat",
|
||||||
"suggested_contacts",
|
"suggested_contacts",
|
||||||
"global_search",
|
"global_search",
|
||||||
|
"chat_add_user",
|
||||||
|
"chat_del_user",
|
||||||
0 };
|
0 };
|
||||||
|
|
||||||
int commands_flags[] = {
|
int commands_flags[] = {
|
||||||
@ -287,6 +289,8 @@ int commands_flags[] = {
|
|||||||
071,
|
071,
|
||||||
07,
|
07,
|
||||||
07,
|
07,
|
||||||
|
0724,
|
||||||
|
0724,
|
||||||
};
|
};
|
||||||
|
|
||||||
int get_complete_mode (void) {
|
int get_complete_mode (void) {
|
||||||
@ -658,6 +662,16 @@ void interpreter (char *line UU) {
|
|||||||
GET_PEER;
|
GET_PEER;
|
||||||
int limit = next_token_int ();
|
int limit = next_token_int ();
|
||||||
do_get_history (id, limit > 0 ? limit : 40);
|
do_get_history (id, limit > 0 ? limit : 40);
|
||||||
|
} else if (IS_WORD ("chat_add_user")) {
|
||||||
|
GET_PEER_CHAT;
|
||||||
|
peer_id_t chat_id = id;
|
||||||
|
GET_PEER_USER;
|
||||||
|
do_add_user_to_chat (chat_id, id, 100);
|
||||||
|
} else if (IS_WORD ("chat_del_user")) {
|
||||||
|
GET_PEER_CHAT;
|
||||||
|
peer_id_t chat_id = id;
|
||||||
|
GET_PEER_USER;
|
||||||
|
do_del_user_from_chat (chat_id, id);
|
||||||
} else if (IS_WORD ("add_contact")) {
|
} else if (IS_WORD ("add_contact")) {
|
||||||
int phone_len, first_name_len, last_name_len;
|
int phone_len, first_name_len, last_name_len;
|
||||||
char *phone, *first_name, *last_name;
|
char *phone, *first_name, *last_name;
|
||||||
|
@ -56,6 +56,7 @@ void push_color (const char *color);
|
|||||||
void print_start (void);
|
void print_start (void);
|
||||||
void print_end (void);
|
void print_end (void);
|
||||||
void print_date_full (long t);
|
void print_date_full (long t);
|
||||||
|
void print_date (long t);
|
||||||
|
|
||||||
void update_prompt (void);
|
void update_prompt (void);
|
||||||
#endif
|
#endif
|
||||||
|
@ -728,7 +728,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
fetch_pts ();
|
fetch_pts ();
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("%d messages marked as read\n", n);
|
print_date (time (0));
|
||||||
|
printf (" %d messages marked as read\n", n);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
print_end ();
|
print_end ();
|
||||||
}
|
}
|
||||||
@ -739,7 +740,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *U = user_chat_get (id);
|
peer_t *U = user_chat_get (id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (id, U);
|
print_user_name (id, U);
|
||||||
printf (" is typing....\n");
|
printf (" is typing....\n");
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -754,7 +756,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *U = user_chat_get (id);
|
peer_t *U = user_chat_get (id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (id, U);
|
print_user_name (id, U);
|
||||||
printf (" is typing in chat ");
|
printf (" is typing in chat ");
|
||||||
print_chat_name (chat_id, C);
|
print_chat_name (chat_id, C);
|
||||||
@ -771,7 +774,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
fetch_user_status (&U->user.status);
|
fetch_user_status (&U->user.status);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (user_id, U);
|
print_user_name (user_id, U);
|
||||||
printf (" is now ");
|
printf (" is now ");
|
||||||
printf ("%s\n", (U->user.status.online > 0) ? "online" : "offline");
|
printf ("%s\n", (U->user.status.online > 0) ? "online" : "offline");
|
||||||
@ -791,7 +795,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
struct user *U = &UC->user;
|
struct user *U = &UC->user;
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (user_id, UC);
|
print_user_name (user_id, UC);
|
||||||
if (U->first_name) { free (U->first_name); }
|
if (U->first_name) { free (U->first_name); }
|
||||||
if (U->last_name) { free (U->last_name); }
|
if (U->last_name) { free (U->last_name); }
|
||||||
@ -835,7 +840,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
|
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (user_id, UC);
|
print_user_name (user_id, UC);
|
||||||
printf (" updated profile photo\n");
|
printf (" updated profile photo\n");
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -867,7 +873,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
int n = fetch_int ();
|
int n = fetch_int ();
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("Restored %d messages\n", n);
|
print_date (time (0));
|
||||||
|
printf (" Restored %d messages\n", n);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
print_end ();
|
print_end ();
|
||||||
fetch_skip (n);
|
fetch_skip (n);
|
||||||
@ -880,7 +887,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
int n = fetch_int ();
|
int n = fetch_int ();
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("Deleted %d messages\n", n);
|
print_date (time (0));
|
||||||
|
printf (" Deleted %d messages\n", n);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
print_end ();
|
print_end ();
|
||||||
fetch_skip (n);
|
fetch_skip (n);
|
||||||
@ -899,7 +907,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *C = user_chat_get (chat_id);
|
peer_t *C = user_chat_get (chat_id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("Chat ");
|
print_date (time (0));
|
||||||
|
printf (" Chat ");
|
||||||
print_chat_name (chat_id, C);
|
print_chat_name (chat_id, C);
|
||||||
printf (" changed list: now %d members\n", n);
|
printf (" changed list: now %d members\n", n);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -913,7 +922,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
fetch_int (); // date
|
fetch_int (); // date
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (user_id, U);
|
print_user_name (user_id, U);
|
||||||
printf (" registered\n");
|
printf (" registered\n");
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -926,7 +936,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *U = user_chat_get (user_id);
|
peer_t *U = user_chat_get (user_id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("Updated link with user ");
|
print_date (time (0));
|
||||||
|
printf (" Updated link with user ");
|
||||||
print_user_name (user_id, U);
|
print_user_name (user_id, U);
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -949,7 +960,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *U = user_chat_get (user_id);
|
peer_t *U = user_chat_get (user_id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("User ");
|
print_date (time (0));
|
||||||
|
printf (" User ");
|
||||||
print_user_name (user_id, U);
|
print_user_name (user_id, U);
|
||||||
printf (" activated\n");
|
printf (" activated\n");
|
||||||
pop_color ();
|
pop_color ();
|
||||||
@ -964,7 +976,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
char *location = fetch_str_dup ();
|
char *location = fetch_str_dup ();
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("New autorization: device='%s' location='%s'\n",
|
print_date (time (0));
|
||||||
|
printf (" New autorization: device='%s' location='%s'\n",
|
||||||
s, location);
|
s, location);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
print_end ();
|
print_end ();
|
||||||
@ -994,27 +1007,28 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
struct secret_chat *E = fetch_alloc_encrypted_chat ();
|
struct secret_chat *E = fetch_alloc_encrypted_chat ();
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
|
print_date (time (0));
|
||||||
switch (E->state) {
|
switch (E->state) {
|
||||||
case sc_none:
|
case sc_none:
|
||||||
assert (0);
|
assert (0);
|
||||||
break;
|
break;
|
||||||
case sc_waiting:
|
case sc_waiting:
|
||||||
printf ("Encrypted chat ");
|
printf (" Encrypted chat ");
|
||||||
print_encr_chat_name (E->id, (void *)E);
|
print_encr_chat_name (E->id, (void *)E);
|
||||||
printf (" is now in wait state\n");
|
printf (" is now in wait state\n");
|
||||||
break;
|
break;
|
||||||
case sc_request:
|
case sc_request:
|
||||||
printf ("Encrypted chat ");
|
printf (" Encrypted chat ");
|
||||||
print_encr_chat_name (E->id, (void *)E);
|
print_encr_chat_name (E->id, (void *)E);
|
||||||
printf (" is now in request state. Sending request ok\n");
|
printf (" is now in request state. Sending request ok\n");
|
||||||
break;
|
break;
|
||||||
case sc_ok:
|
case sc_ok:
|
||||||
printf ("Encrypted chat ");
|
printf (" Encrypted chat ");
|
||||||
print_encr_chat_name (E->id, (void *)E);
|
print_encr_chat_name (E->id, (void *)E);
|
||||||
printf (" is now in ok state\n");
|
printf (" is now in ok state\n");
|
||||||
break;
|
break;
|
||||||
case sc_deleted:
|
case sc_deleted:
|
||||||
printf ("Encrypted chat ");
|
printf (" Encrypted chat ");
|
||||||
print_encr_chat_name (E->id, (void *)E);
|
print_encr_chat_name (E->id, (void *)E);
|
||||||
printf (" is now in deleted state\n");
|
printf (" is now in deleted state\n");
|
||||||
break;
|
break;
|
||||||
@ -1033,15 +1047,16 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
peer_t *P = user_chat_get (id);
|
peer_t *P = user_chat_get (id);
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
|
print_date (time (0));
|
||||||
if (P) {
|
if (P) {
|
||||||
printf ("User ");
|
printf (" User ");
|
||||||
peer_id_t user_id = MK_USER (P->encr_chat.user_id);
|
peer_id_t user_id = MK_USER (P->encr_chat.user_id);
|
||||||
print_user_name (user_id, user_chat_get (user_id));
|
print_user_name (user_id, user_chat_get (user_id));
|
||||||
printf (" typing in secret chat ");
|
printf (" typing in secret chat ");
|
||||||
print_encr_chat_name (id, P);
|
print_encr_chat_name (id, P);
|
||||||
printf ("\n");
|
printf ("\n");
|
||||||
} else {
|
} else {
|
||||||
printf ("Some user is typing in unknown secret chat\n");
|
printf (" Some user is typing in unknown secret chat\n");
|
||||||
}
|
}
|
||||||
pop_color ();
|
pop_color ();
|
||||||
print_end ();
|
print_end ();
|
||||||
@ -1067,7 +1082,8 @@ void work_update (struct connection *c UU, long long msg_id UU) {
|
|||||||
}
|
}
|
||||||
print_start ();
|
print_start ();
|
||||||
push_color (COLOR_YELLOW);
|
push_color (COLOR_YELLOW);
|
||||||
printf ("Encrypted chat ");
|
print_date (time (0));
|
||||||
|
printf (" Encrypted chat ");
|
||||||
print_encr_chat_name_full (id, user_chat_get (id));
|
print_encr_chat_name_full (id, user_chat_get (id));
|
||||||
printf (": %d messages marked read \n", x);
|
printf (": %d messages marked read \n", x);
|
||||||
pop_color ();
|
pop_color ();
|
||||||
|
44
queries.c
44
queries.c
@ -2438,6 +2438,50 @@ void do_get_suggested (void) {
|
|||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
/* {{{ Add user to chat */
|
||||||
|
|
||||||
|
struct query_methods add_user_to_chat_methods = {
|
||||||
|
.on_answer = fwd_msg_on_answer
|
||||||
|
};
|
||||||
|
|
||||||
|
void do_add_user_to_chat (peer_id_t chat_id, peer_id_t id, int limit) {
|
||||||
|
clear_packet ();
|
||||||
|
out_int (CODE_messages_add_chat_user);
|
||||||
|
out_int (get_peer_id (chat_id));
|
||||||
|
|
||||||
|
assert (get_peer_type (id) == PEER_USER);
|
||||||
|
peer_t *U = user_chat_get (id);
|
||||||
|
if (U && U->user.access_hash) {
|
||||||
|
out_int (CODE_input_user_foreign);
|
||||||
|
out_int (get_peer_id (id));
|
||||||
|
out_long (U->user.access_hash);
|
||||||
|
} else {
|
||||||
|
out_int (CODE_input_user_contact);
|
||||||
|
out_int (get_peer_id (id));
|
||||||
|
}
|
||||||
|
out_int (limit);
|
||||||
|
send_query (DC_working, packet_ptr - packet_buffer, packet_buffer, &add_user_to_chat_methods, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void do_del_user_from_chat (peer_id_t chat_id, peer_id_t id) {
|
||||||
|
clear_packet ();
|
||||||
|
out_int (CODE_messages_delete_chat_user);
|
||||||
|
out_int (get_peer_id (chat_id));
|
||||||
|
|
||||||
|
assert (get_peer_type (id) == PEER_USER);
|
||||||
|
peer_t *U = user_chat_get (id);
|
||||||
|
if (U && U->user.access_hash) {
|
||||||
|
out_int (CODE_input_user_foreign);
|
||||||
|
out_int (get_peer_id (id));
|
||||||
|
out_long (U->user.access_hash);
|
||||||
|
} else {
|
||||||
|
out_int (CODE_input_user_contact);
|
||||||
|
out_int (get_peer_id (id));
|
||||||
|
}
|
||||||
|
send_query (DC_working, packet_ptr - packet_buffer, packet_buffer, &add_user_to_chat_methods, 0);
|
||||||
|
}
|
||||||
|
/* }}} */
|
||||||
|
|
||||||
/* {{{ Create secret chat */
|
/* {{{ Create secret chat */
|
||||||
char *create_print_name (peer_id_t id, const char *a1, const char *a2, const char *a3, const char *a4);
|
char *create_print_name (peer_id_t id, const char *a1, const char *a2, const char *a3, const char *a4);
|
||||||
|
|
||||||
|
@ -103,5 +103,7 @@ void do_get_difference (void);
|
|||||||
void do_mark_read (peer_id_t id);
|
void do_mark_read (peer_id_t id);
|
||||||
void do_visualize_key (peer_id_t id);
|
void do_visualize_key (peer_id_t id);
|
||||||
void do_create_keys_end (struct secret_chat *U);
|
void do_create_keys_end (struct secret_chat *U);
|
||||||
|
void do_add_user_to_chat (peer_id_t chat_id, peer_id_t id, int limit);
|
||||||
|
void do_del_user_from_chat (peer_id_t chat_id, peer_id_t id);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user