diff options
author | Jfreegman <jfreegman@gmail.com> | 2016-09-17 17:32:25 -0400 |
---|---|---|
committer | Jfreegman <jfreegman@gmail.com> | 2016-09-17 19:11:28 -0400 |
commit | 8e43ca834cc0a5b2f904ce2589154c2f17bd12ce (patch) | |
tree | e88701e5dfe6a623c7fe7f60ba2ddb304ffadc07 /toxcore/tox.c | |
parent | c0397a0a4614671679d409c428b47549a01fdf7f (diff) |
Complete old groupchat conversion to new API
Diffstat (limited to 'toxcore/tox.c')
-rw-r--r-- | toxcore/tox.c | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/toxcore/tox.c b/toxcore/tox.c index b9bab973..fa53f35e 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c | |||
@@ -1216,6 +1216,340 @@ void tox_callback_file_recv_chunk(Tox *tox, tox_file_recv_chunk_cb *callback) | |||
1216 | callback_file_data(m, callback); | 1216 | callback_file_data(m, callback); |
1217 | } | 1217 | } |
1218 | 1218 | ||
1219 | void tox_callback_conference_invite(Tox *tox, tox_conference_invite_cb *callback, void *user_data) | ||
1220 | { | ||
1221 | Messenger *m = tox; | ||
1222 | g_callback_group_invite(m->group_chat_object, (void (*)(Messenger * m, uint32_t, int, const uint8_t *, size_t, | ||
1223 | void *))callback, user_data); | ||
1224 | } | ||
1225 | |||
1226 | void tox_callback_conference_message(Tox *tox, tox_conference_message_cb *callback, void *user_data) | ||
1227 | { | ||
1228 | Messenger *m = tox; | ||
1229 | g_callback_group_message(m->group_chat_object, (void (*)(Messenger * m, uint32_t, uint32_t, int, const uint8_t *, | ||
1230 | size_t, void *))callback, user_data); | ||
1231 | } | ||
1232 | |||
1233 | void tox_callback_conference_title(Tox *tox, tox_conference_title_cb *callback, void *user_data) | ||
1234 | { | ||
1235 | Messenger *m = tox; | ||
1236 | g_callback_group_title(m->group_chat_object, callback, user_data); | ||
1237 | } | ||
1238 | |||
1239 | void tox_callback_conference_namelist_change(Tox *tox, tox_conference_namelist_change_cb *callback, void *user_data) | ||
1240 | { | ||
1241 | Messenger *m = tox; | ||
1242 | g_callback_group_namelistchange(m->group_chat_object, (void (*)(struct Messenger *, int, int, uint8_t, | ||
1243 | void *))callback, user_data); | ||
1244 | } | ||
1245 | |||
1246 | uint32_t tox_conference_new(Tox *tox, TOX_ERR_CONFERENCE_NEW *error) | ||
1247 | { | ||
1248 | Messenger *m = tox; | ||
1249 | int ret = add_groupchat(m->group_chat_object, GROUPCHAT_TYPE_TEXT); | ||
1250 | |||
1251 | if (ret == -1) { | ||
1252 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_NEW_INIT); | ||
1253 | return UINT32_MAX; | ||
1254 | } | ||
1255 | |||
1256 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_NEW_OK); | ||
1257 | return ret; | ||
1258 | } | ||
1259 | |||
1260 | bool tox_conference_delete(Tox *tox, uint32_t conference_number, TOX_ERR_CONFERENCE_DELETE *error) | ||
1261 | { | ||
1262 | Messenger *m = tox; | ||
1263 | int ret = del_groupchat(m->group_chat_object, conference_number); | ||
1264 | |||
1265 | if (ret == -1) { | ||
1266 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_DELETE_CONFERENCE_NOT_FOUND); | ||
1267 | return false; | ||
1268 | } | ||
1269 | |||
1270 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_DELETE_OK); | ||
1271 | return true; | ||
1272 | } | ||
1273 | |||
1274 | uint32_t tox_conference_peer_count(const Tox *tox, uint32_t conference_number, TOX_ERR_CONFERENCE_PEER_QUERY *error) | ||
1275 | { | ||
1276 | const Messenger *m = tox; | ||
1277 | int ret = group_number_peers(m->group_chat_object, conference_number); | ||
1278 | |||
1279 | if (ret == -1) { | ||
1280 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1281 | return UINT32_MAX; | ||
1282 | } | ||
1283 | |||
1284 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1285 | return ret; | ||
1286 | } | ||
1287 | |||
1288 | size_t tox_conference_peer_get_name_size(const Tox *tox, uint32_t conference_number, uint32_t peer_number, | ||
1289 | TOX_ERR_CONFERENCE_PEER_QUERY *error) | ||
1290 | { | ||
1291 | const Messenger *m = tox; | ||
1292 | int ret = group_peername_size(m->group_chat_object, conference_number, peer_number); | ||
1293 | |||
1294 | switch (ret) { | ||
1295 | case -1: | ||
1296 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1297 | return -1; | ||
1298 | |||
1299 | case -2: | ||
1300 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1301 | return -1; | ||
1302 | } | ||
1303 | |||
1304 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1305 | return ret; | ||
1306 | } | ||
1307 | |||
1308 | bool tox_conference_peer_get_name(const Tox *tox, uint32_t conference_number, uint32_t peer_number, uint8_t *name, | ||
1309 | TOX_ERR_CONFERENCE_PEER_QUERY *error) | ||
1310 | { | ||
1311 | const Messenger *m = tox; | ||
1312 | int ret = group_peername(m->group_chat_object, conference_number, peer_number, name); | ||
1313 | |||
1314 | switch (ret) { | ||
1315 | case -1: | ||
1316 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1317 | return false; | ||
1318 | |||
1319 | case -2: | ||
1320 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1321 | return false; | ||
1322 | } | ||
1323 | |||
1324 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1325 | return true; | ||
1326 | } | ||
1327 | |||
1328 | bool tox_conference_peer_get_public_key(const Tox *tox, uint32_t conference_number, uint32_t peer_number, | ||
1329 | uint8_t *public_key, TOX_ERR_CONFERENCE_PEER_QUERY *error) | ||
1330 | { | ||
1331 | const Messenger *m = tox; | ||
1332 | int ret = group_peer_pubkey(m->group_chat_object, conference_number, peer_number, public_key); | ||
1333 | |||
1334 | switch (ret) { | ||
1335 | case -1: | ||
1336 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1337 | return false; | ||
1338 | |||
1339 | case -2: | ||
1340 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1341 | return false; | ||
1342 | } | ||
1343 | |||
1344 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1345 | return true; | ||
1346 | } | ||
1347 | |||
1348 | bool tox_conference_peer_number_is_ours(const Tox *tox, uint32_t conference_number, uint32_t peer_number, | ||
1349 | TOX_ERR_CONFERENCE_PEER_QUERY *error) | ||
1350 | { | ||
1351 | const Messenger *m = tox; | ||
1352 | int ret = group_peernumber_is_ours(m->group_chat_object, conference_number, peer_number); | ||
1353 | |||
1354 | switch (ret) { | ||
1355 | case -1: | ||
1356 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1357 | return false; | ||
1358 | |||
1359 | case -2: | ||
1360 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1361 | return false; | ||
1362 | |||
1363 | case -3: | ||
1364 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_NO_CONNECTION); | ||
1365 | return false; | ||
1366 | } | ||
1367 | |||
1368 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1369 | return ret; | ||
1370 | } | ||
1371 | |||
1372 | bool tox_conference_invite(Tox *tox, uint32_t friend_number, uint32_t conference_number, | ||
1373 | TOX_ERR_CONFERENCE_INVITE *error) | ||
1374 | { | ||
1375 | Messenger *m = tox; | ||
1376 | int ret = invite_friend(m->group_chat_object, friend_number, conference_number); | ||
1377 | |||
1378 | switch (ret) { | ||
1379 | case -1: | ||
1380 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_INVITE_CONFERENCE_NOT_FOUND); | ||
1381 | return false; | ||
1382 | |||
1383 | case -2: | ||
1384 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_INVITE_FAIL_SEND); | ||
1385 | return false; | ||
1386 | } | ||
1387 | |||
1388 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_INVITE_OK); | ||
1389 | return true; | ||
1390 | } | ||
1391 | |||
1392 | uint32_t tox_conference_join(Tox *tox, uint32_t friend_number, const uint8_t *cookie, size_t length, | ||
1393 | TOX_ERR_CONFERENCE_JOIN *error) | ||
1394 | { | ||
1395 | Messenger *m = tox; | ||
1396 | int ret = join_groupchat(m->group_chat_object, friend_number, GROUPCHAT_TYPE_TEXT, cookie, length); | ||
1397 | |||
1398 | switch (ret) { | ||
1399 | case -1: | ||
1400 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_INVALID_LENGTH); | ||
1401 | return UINT32_MAX; | ||
1402 | |||
1403 | case -2: | ||
1404 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_WRONG_TYPE); | ||
1405 | return UINT32_MAX; | ||
1406 | |||
1407 | case -3: | ||
1408 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_FRIEND_NOT_FOUND); | ||
1409 | return UINT32_MAX; | ||
1410 | |||
1411 | case -4: | ||
1412 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_DUPLICATE); | ||
1413 | return UINT32_MAX; | ||
1414 | |||
1415 | case -5: | ||
1416 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_INIT_FAIL); | ||
1417 | return UINT32_MAX; | ||
1418 | |||
1419 | case -6: | ||
1420 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_FAIL_SEND); | ||
1421 | return UINT32_MAX; | ||
1422 | } | ||
1423 | |||
1424 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_JOIN_OK); | ||
1425 | return ret; | ||
1426 | } | ||
1427 | |||
1428 | bool tox_conference_send_message(Tox *tox, uint32_t conference_number, TOX_MESSAGE_TYPE type, const uint8_t *message, | ||
1429 | size_t length, TOX_ERR_CONFERENCE_SEND_MESSAGE *error) | ||
1430 | { | ||
1431 | Messenger *m = tox; | ||
1432 | int ret = 0; | ||
1433 | |||
1434 | if (type == TOX_MESSAGE_TYPE_NORMAL) { | ||
1435 | ret = group_message_send(m->group_chat_object, conference_number, message, length); | ||
1436 | } else { | ||
1437 | ret = group_action_send(m->group_chat_object, conference_number, message, length); | ||
1438 | } | ||
1439 | |||
1440 | switch (ret) { | ||
1441 | case -1: | ||
1442 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_SEND_MESSAGE_CONFERENCE_NOT_FOUND); | ||
1443 | return false; | ||
1444 | |||
1445 | case -2: | ||
1446 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_SEND_MESSAGE_TOO_LONG); | ||
1447 | return false; | ||
1448 | |||
1449 | case -3: | ||
1450 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_SEND_MESSAGE_NO_CONNECTION); | ||
1451 | return false; | ||
1452 | |||
1453 | case -4: | ||
1454 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_SEND_MESSAGE_FAIL_SEND); | ||
1455 | return false; | ||
1456 | } | ||
1457 | |||
1458 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_SEND_MESSAGE_OK); | ||
1459 | return true; | ||
1460 | } | ||
1461 | |||
1462 | size_t tox_conference_get_title_size(const Tox *tox, uint32_t conference_number, TOX_ERR_CONFERENCE_TITLE *error) | ||
1463 | { | ||
1464 | const Messenger *m = tox; | ||
1465 | int ret = group_title_get_size(m->group_chat_object, conference_number); | ||
1466 | |||
1467 | switch (ret) { | ||
1468 | case -1: | ||
1469 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_CONFERENCE_NOT_FOUND); | ||
1470 | return -1; | ||
1471 | |||
1472 | case -2: | ||
1473 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_INVALID_LENGTH); | ||
1474 | return -1; | ||
1475 | } | ||
1476 | |||
1477 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_OK); | ||
1478 | return ret; | ||
1479 | } | ||
1480 | |||
1481 | bool tox_conference_get_title(const Tox *tox, uint32_t conference_number, uint8_t *title, | ||
1482 | TOX_ERR_CONFERENCE_TITLE *error) | ||
1483 | { | ||
1484 | const Messenger *m = tox; | ||
1485 | int ret = group_title_get(m->group_chat_object, conference_number, title); | ||
1486 | |||
1487 | switch (ret) { | ||
1488 | case -1: | ||
1489 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_CONFERENCE_NOT_FOUND); | ||
1490 | return false; | ||
1491 | |||
1492 | case -2: | ||
1493 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_INVALID_LENGTH); | ||
1494 | return false; | ||
1495 | } | ||
1496 | |||
1497 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_OK); | ||
1498 | return true; | ||
1499 | } | ||
1500 | |||
1501 | bool tox_conference_set_title(Tox *tox, uint32_t conference_number, const uint8_t *title, size_t length, | ||
1502 | TOX_ERR_CONFERENCE_TITLE *error) | ||
1503 | { | ||
1504 | Messenger *m = tox; | ||
1505 | int ret = group_title_send(m->group_chat_object, conference_number, title, length); | ||
1506 | |||
1507 | switch (ret) { | ||
1508 | case -1: | ||
1509 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_CONFERENCE_NOT_FOUND); | ||
1510 | return false; | ||
1511 | |||
1512 | case -2: | ||
1513 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_INVALID_LENGTH); | ||
1514 | return false; | ||
1515 | |||
1516 | case -3: | ||
1517 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_FAIL_SEND); | ||
1518 | return false; | ||
1519 | } | ||
1520 | |||
1521 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_TITLE_OK); | ||
1522 | return true; | ||
1523 | } | ||
1524 | |||
1525 | size_t tox_conference_get_chatlist_size(const Tox *tox) | ||
1526 | { | ||
1527 | const Messenger *m = tox; | ||
1528 | return count_chatlist(m->group_chat_object); | ||
1529 | } | ||
1530 | |||
1531 | void tox_conference_get_chatlist(const Tox *tox, uint32_t *chatlist) | ||
1532 | { | ||
1533 | const Messenger *m = tox; | ||
1534 | size_t list_size = tox_conference_get_chatlist_size(tox); | ||
1535 | copy_chatlist(m->group_chat_object, chatlist, list_size); | ||
1536 | } | ||
1537 | |||
1538 | TOX_CONFERENCE_TYPE tox_conference_get_type(const Tox *tox, uint32_t conference_number, | ||
1539 | TOX_ERR_CONFERENCE_GET_TYPE *error) | ||
1540 | { | ||
1541 | const Messenger *m = tox; | ||
1542 | int ret = group_get_type(m->group_chat_object, conference_number); | ||
1543 | |||
1544 | if (ret == -1) { | ||
1545 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_GET_TYPE_CONFERENCE_NOT_FOUND); | ||
1546 | return -1; | ||
1547 | } | ||
1548 | |||
1549 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_GET_TYPE_OK); | ||
1550 | return ret; | ||
1551 | } | ||
1552 | |||
1219 | static void set_custom_packet_error(int ret, TOX_ERR_FRIEND_CUSTOM_PACKET *error) | 1553 | static void set_custom_packet_error(int ret, TOX_ERR_FRIEND_CUSTOM_PACKET *error) |
1220 | { | 1554 | { |
1221 | switch (ret) { | 1555 | switch (ret) { |