static void purge_inactive_friends(Tox *m) { size_t numfriends = tox_self_get_friend_list_size(m); if (numfriends == 0) return; uint32_t friend_list[numfriends]; tox_self_get_friend_list(m, friend_list); size_t i; for (i = 0; i < numfriends; ++i) { uint32_t friendnum = friend_list[i]; if (!tox_friend_exists(m, friendnum)) continue; TOX_ERR_FRIEND_GET_LAST_ONLINE err; uint64_t last_online = tox_friend_get_last_online(m, friendnum, &err); if (err != TOX_ERR_FRIEND_GET_LAST_ONLINE_OK) continue; if (((uint64_t) time(NULL)) - last_online > Tox_Bot.inactive_limit) tox_friend_delete(m, friendnum, NULL); } }
static void delete_friend(Tox *m, uint32_t f_num) { Tox_Err_Friend_Delete err; if (tox_friend_delete(m, f_num, &err) != true) { fprintf(stderr, "tox_friend_delete failed with error %d\n", err); return; } --Friends.num_friends; if (Friends.list[f_num].connection_status != TOX_CONNECTION_NONE) { --Friends.num_online; } /* close friend's chatwindow if it's currently open */ if (Friends.list[f_num].chatwin >= 0) { ToxWindow *toxwin = get_window_ptr(Friends.list[f_num].chatwin); if (toxwin != NULL) { kill_chat_window(toxwin, m); set_active_window_index(1); /* keep friendlist focused */ } } if (Friends.list[f_num].group_invite.key != NULL) { free(Friends.list[f_num].group_invite.key); } memset(&Friends.list[f_num], 0, sizeof(ToxicFriend)); int i; for (i = Friends.max_idx; i > 0; --i) { if (Friends.list[i - 1].active) { break; } } Friends.max_idx = i; realloc_friends(i); #ifdef AUDIO del_friend_AV(i); #endif /* make sure num_selected stays within Friends.num_friends range */ if (Friends.num_friends && Friends.num_selected == Friends.num_friends) { --Friends.num_selected; } store_data(m, DATA_FILE); }
void Core::removeFriend(uint32_t friendId, bool fake) { if (!isReady() || fake) return; if (!tox_friend_delete(tox, friendId, nullptr)) { emit failedToRemoveFriend(friendId); return; } profile.saveToxSave(); emit friendRemoved(friendId); }
void Core::removeFriend(uint32_t friendId, bool fake) { if (!isReady() || fake) return; if (tox_friend_delete(tox, friendId, nullptr) == false) { emit failedToRemoveFriend(friendId); } else { saveConfiguration(); emit friendRemoved(friendId); } }