Add users in bulk to generate better join-messages in Finch
This commit is contained in:
parent
e665729ee2
commit
ff2df0861b
3 changed files with 32 additions and 10 deletions
23
tgp-2prpl.c
23
tgp-2prpl.c
|
@ -318,22 +318,20 @@ PurpleChat *p2tgl_chat_find (struct tgl_state *TLS, tgl_peer_id_t id) {
|
|||
return c;
|
||||
}
|
||||
|
||||
void p2tgl_conv_add_user (struct tgl_state *TLS, PurpleConversation *conv,
|
||||
int user, char *message, int flags, int new_arrival) {
|
||||
PurpleConvChat *cdata = purple_conversation_get_chat_data(conv);
|
||||
char *name = g_strdup_printf ("%d", user);
|
||||
purple_conv_chat_add_user (cdata, name, message, flags, new_arrival);
|
||||
|
||||
void p2tgl_conv_add_user_rename (tgl_peer_t *U, PurpleConversation *conv) {
|
||||
|
||||
// inject print_name into chat buddies to display a human-readable name
|
||||
// for buddies not in the buddy list instead of the user id
|
||||
tgl_peer_t *U = tgl_peer_get (TLS, TGL_MK_USER(user));
|
||||
if (U) {
|
||||
char *name = g_strdup_printf("%d", tgl_get_peer_id (U->id));
|
||||
|
||||
PurpleConvChatBuddy *cbuddy = purple_conv_chat_cb_find (PURPLE_CONV_CHAT(conv), name);
|
||||
PurpleConversationUiOps *uiops = purple_conversation_get_ui_ops (conv);
|
||||
if (cbuddy && cbuddy->alias) {
|
||||
g_free (cbuddy->alias);
|
||||
cbuddy->alias = g_strdup (U->print_name);
|
||||
}
|
||||
|
||||
if (uiops && uiops->chat_rename_user) {
|
||||
debug ("try rename user %s to %s\n", name, U->print_name);
|
||||
uiops->chat_rename_user (conv, name, name, U->print_name);
|
||||
|
@ -341,8 +339,19 @@ void p2tgl_conv_add_user (struct tgl_state *TLS, PurpleConversation *conv,
|
|||
debug ("try update user %s\n", name);
|
||||
uiops->chat_update_user (conv, name);
|
||||
}
|
||||
|
||||
g_free (name);
|
||||
}
|
||||
}
|
||||
|
||||
void p2tgl_conv_add_user (struct tgl_state *TLS, PurpleConversation *conv,
|
||||
int user, char *message, int flags, int new_arrival) {
|
||||
PurpleConvChat *cdata = purple_conversation_get_chat_data(conv);
|
||||
char *name = g_strdup_printf ("%d", user);
|
||||
purple_conv_chat_add_user (cdata, name, message, flags, new_arrival);
|
||||
|
||||
p2tgl_conv_add_user_rename (tgl_peer_get (TLS, TGL_MK_USER(user)), conv);
|
||||
|
||||
g_free(name);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ void p2tgl_prpl_got_set_status_offline (struct tgl_state *TLS, tgl_peer_id_t use
|
|||
|
||||
void p2tgl_connection_set_display_name(struct tgl_state *TLS, tgl_peer_t *user);
|
||||
void p2tgl_conv_del_user (struct tgl_state *TLS, PurpleConversation *conv, const char *message, int userid);
|
||||
void p2tgl_conv_add_user_rename (tgl_peer_t *U, PurpleConversation *conv);
|
||||
void p2tgl_conv_add_users (PurpleConversation *conv, struct tgl_chat_user *list);
|
||||
void p2tgl_conv_add_user (struct tgl_state *TLS, PurpleConversation *conv, int user, char *message, int flags, int new_arrival);
|
||||
PurpleConversation *p2tgl_find_conversation_with_account (struct tgl_state *TLS, tgl_peer_id_t peer);
|
||||
|
|
18
tgp-chat.c
18
tgp-chat.c
|
@ -53,13 +53,25 @@ static void tgp_chat_on_loaded_chat_full_joining (struct tgl_state *TLS, void *_
|
|||
}
|
||||
}
|
||||
|
||||
static void tgp_chat_add_all_users (struct tgl_state *TLS, PurpleConversation *pc, struct tgl_chat *C) {
|
||||
static void tgp_chat_add_all_users (struct tgl_state *TLS, PurpleConversation *conv, struct tgl_chat *C) {
|
||||
GList *users = NULL,
|
||||
*flags = NULL;
|
||||
|
||||
int i = 0;
|
||||
for (; i < C->user_list_size; i++) {
|
||||
struct tgl_chat_user *uid = (C->user_list + i);
|
||||
int flags = (C->admin_id == uid->user_id ? PURPLE_CBFLAGS_FOUNDER : PURPLE_CBFLAGS_NONE);
|
||||
p2tgl_conv_add_user (TLS, pc, uid->user_id, NULL, flags, FALSE);
|
||||
users = g_list_append (users, g_strdup_printf ("%d", uid->user_id));
|
||||
flags = g_list_append (flags, GINT_TO_POINTER(C->admin_id == uid->user_id ? PURPLE_CBFLAGS_FOUNDER : PURPLE_CBFLAGS_NONE));
|
||||
}
|
||||
|
||||
purple_conv_chat_add_users (PURPLE_CONV_CHAT(conv), users, NULL, flags, FALSE);
|
||||
while (users) {
|
||||
p2tgl_conv_add_user_rename (tgl_peer_get (TLS, TGL_MK_USER(atoi (users->data))), conv);
|
||||
users = g_list_next (users);
|
||||
}
|
||||
|
||||
g_list_free_full (users, g_free);
|
||||
g_list_free (flags);
|
||||
}
|
||||
|
||||
void tgp_chat_users_update (struct tgl_state *TLS, struct tgl_chat *C) {
|
||||
|
|
Loading…
Add table
Reference in a new issue