diff --git a/toxcore/group.c b/toxcore/group.c index b4aed658..eb84703d 100644 --- a/toxcore/group.c +++ b/toxcore/group.c @@ -744,6 +744,25 @@ int group_number_peers(const Group_Chats *g_c, int groupnumber) return g->numpeers; } +/* return 1 if the peernumber corresponds to ours. + * return 0 on failure. + */ +unsigned int group_peernumber_is_ours(const Group_Chats *g_c, int groupnumber, int peernumber) +{ + Group_c *g = get_group_c(g_c, groupnumber); + + if (!g) + return 0; + + if (g->status != GROUPCHAT_STATUS_CONNECTED) + return 0; + + if ((uint32_t)peernumber >= g->numpeers) + return 0; + + return g->peer_number == g->group[peernumber].peer_number; +} + /* Send a group packet to friendcon_id. * * return 1 on success diff --git a/toxcore/group.h b/toxcore/group.h index 8d255480..d4c77f49 100644 --- a/toxcore/group.h +++ b/toxcore/group.h @@ -190,6 +190,11 @@ int group_action_send(const Group_Chats *g_c, int groupnumber, const uint8_t *ac */ int group_number_peers(const Group_Chats *g_c, int groupnumber); +/* return 1 if the peernumber corresponds to ours. + * return 0 on failure. + */ +unsigned int group_peernumber_is_ours(const Group_Chats *g_c, int groupnumber, int peernumber); + /* List all the peers in the group chat. * * Copies the names of the peers to the name[length][MAX_NAME_LENGTH] array. diff --git a/toxcore/tox.c b/toxcore/tox.c index ee625907..ea8c68ba 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c @@ -564,7 +564,7 @@ void tox_callback_group_invite(Tox *tox, void (*function)(Messenger *tox, int32_ /* Set the callback for group messages. * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata) + * Function(Tox *tox, int groupnumber, int peernumber, uint8_t * message, uint16_t length, void *userdata) */ void tox_callback_group_message(Tox *tox, void (*function)(Messenger *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata) @@ -575,7 +575,7 @@ void tox_callback_group_message(Tox *tox, void (*function)(Messenger *tox, int, /* Set the callback for group actions. * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * action, uint16_t length, void *userdata) + * Function(Tox *tox, int groupnumber, int peernumber, uint8_t * action, uint16_t length, void *userdata) */ void tox_callback_group_action(Tox *tox, void (*function)(Messenger *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata) @@ -672,6 +672,17 @@ int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint return -1; } +/* Check if the current peernumber corresponds to ours. + * + * return 1 if the peernumber corresponds to ours. + * return 0 on failure. + */ +unsigned int tox_group_peernumber_is_ours(const Tox *tox, int groupnumber, int peernumber) +{ + const Messenger *m = tox; + return group_peernumber_is_ours(m->group_chat_object, groupnumber, peernumber); +} + /* Return the number of peers in the group chat on success. * return -1 on failure */ diff --git a/toxcore/tox.h b/toxcore/tox.h index 52069f86..db68fff2 100644 --- a/toxcore/tox.h +++ b/toxcore/tox.h @@ -428,14 +428,14 @@ void tox_callback_group_invite(Tox *tox, void (*function)(Tox *tox, int32_t, con /* Set the callback for group messages. * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * message, uint16_t length, void *userdata) + * Function(Tox *tox, int groupnumber, int peernumber, uint8_t * message, uint16_t length, void *userdata) */ void tox_callback_group_message(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata); /* Set the callback for group actions. * - * Function(Tox *tox, int groupnumber, int friendgroupnumber, uint8_t * action, uint16_t length, void *userdata) + * Function(Tox *tox, int groupnumber, int peernumber, uint8_t * action, uint16_t length, void *userdata) */ void tox_callback_group_action(Tox *tox, void (*function)(Tox *tox, int, int, const uint8_t *, uint16_t, void *), void *userdata); @@ -502,6 +502,13 @@ int tox_group_message_send(Tox *tox, int groupnumber, const uint8_t *message, ui */ int tox_group_action_send(Tox *tox, int groupnumber, const uint8_t *action, uint16_t length); +/* Check if the current peernumber corresponds to ours. + * + * return 1 if the peernumber corresponds to ours. + * return 0 on failure. + */ +unsigned int tox_group_peernumber_is_ours(const Tox *tox, int groupnumber, int peernumber); + /* Return the number of peers in the group chat on success. * return -1 on failure */