mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor(toxid): improve code clarity and documentation
This commit is contained in:
parent
152c134a4b
commit
3d0938a3c6
|
@ -446,7 +446,7 @@ void Core::bootstrapDht()
|
|||
void Core::onFriendRequest(Tox*/* tox*/, const uint8_t* cFriendPk,
|
||||
const uint8_t* cMessage, size_t cMessageSize, void* core)
|
||||
{
|
||||
QString friendPk = ToxId(QByteArray(reinterpret_cast<const char*> (cFriendPk), TOX_PUBLIC_KEY_SIZE)).getPublicKeyString();
|
||||
QString friendPk = ToxId(cFriendPk, TOX_PUBLIC_KEY_SIZE).getPublicKeyString();
|
||||
emit static_cast<Core*>(core)->friendRequestReceived(friendPk, CString::toString(cMessage, cMessageSize));
|
||||
}
|
||||
|
||||
|
@ -558,7 +558,7 @@ void Core::onReadReceiptCallback(Tox*, uint32_t friendId, uint32_t receipt, void
|
|||
|
||||
void Core::acceptFriendRequest(const QString& userId)
|
||||
{
|
||||
uint32_t friendId = tox_friend_add_norequest(tox, reinterpret_cast<const uint8_t*> (ToxId(userId).getPublicKeyBytes()), nullptr);
|
||||
uint32_t friendId = tox_friend_add_norequest(tox, ToxId(userId).getPublicKeyBytes(), nullptr);
|
||||
if (friendId == std::numeric_limits<uint32_t>::max())
|
||||
{
|
||||
emit failedToAddFriend(userId);
|
||||
|
@ -858,8 +858,8 @@ void Core::setAvatar(const QByteArray& data)
|
|||
*/
|
||||
ToxId Core::getSelfId() const
|
||||
{
|
||||
QByteArray friendAddress(TOX_ADDRESS_SIZE, 0x00);
|
||||
tox_self_get_address(tox, reinterpret_cast<uint8_t*>(friendAddress.data()));
|
||||
uint8_t friendAddress[TOX_ADDRESS_SIZE] = {0x00};
|
||||
tox_self_get_address(tox, friendAddress.data());
|
||||
return ToxId(friendAddress);
|
||||
}
|
||||
|
||||
|
@ -875,8 +875,8 @@ QPair<QByteArray, QByteArray> Core::getKeypair() const
|
|||
QByteArray pk(TOX_PUBLIC_KEY_SIZE, 0x00);
|
||||
QByteArray sk(TOX_SECRET_KEY_SIZE, 0x00);
|
||||
|
||||
tox_self_get_public_key(tox, (uint8_t*) pk.data());
|
||||
tox_self_get_secret_key(tox, (uint8_t*) sk.data());
|
||||
tox_self_get_public_key(tox, reinterpret_cast<uint8_t*>(pk.data()));
|
||||
tox_self_get_secret_key(tox, reinterpret_cast<uint8_t*>(sk.data()));
|
||||
|
||||
keypair.first = pk;
|
||||
keypair.second = sk;
|
||||
|
@ -986,17 +986,17 @@ void Core::loadFriends()
|
|||
// assuming there are not that many friends to fill up the whole stack
|
||||
uint32_t *ids = new uint32_t[friendCount];
|
||||
tox_self_get_friend_list(tox, ids);
|
||||
QByteArray friendPk(TOX_PUBLIC_KEY_SIZE, 0x00);
|
||||
uint8_t friendPk[TOX_PUBLIC_KEY_SIZE] = {0x00};
|
||||
for (int32_t i = 0; i < static_cast<int32_t>(friendCount); ++i)
|
||||
{
|
||||
if (tox_friend_get_public_key(tox, ids[i], reinterpret_cast<uint8_t*>(friendPk.data()), nullptr))
|
||||
if (tox_friend_get_public_key(tox, ids[i], friendPk, nullptr))
|
||||
{
|
||||
emit friendAdded(ids[i], ToxId(friendPk).getPublicKeyString());
|
||||
emit friendAdded(ids[i], ToxId(friendPk, TOX_PUBLIC_KEY_SIZE).getPublicKeyString());
|
||||
|
||||
const size_t nameSize = tox_friend_get_name_size(tox, ids[i], nullptr);
|
||||
if (nameSize && nameSize != SIZE_MAX)
|
||||
{
|
||||
uint8_t *name = new uint8_t[nameSize];
|
||||
uint8_t* name = new uint8_t[nameSize];
|
||||
if (tox_friend_get_name(tox, ids[i], name, nullptr))
|
||||
emit friendUsernameChanged(ids[i], CString::toString(name, nameSize));
|
||||
delete[] name;
|
||||
|
@ -1005,7 +1005,7 @@ void Core::loadFriends()
|
|||
const size_t statusMessageSize = tox_friend_get_status_message_size(tox, ids[i], nullptr);
|
||||
if (statusMessageSize != SIZE_MAX)
|
||||
{
|
||||
uint8_t *statusMessage = new uint8_t[statusMessageSize];
|
||||
uint8_t* statusMessage = new uint8_t[statusMessageSize];
|
||||
if (tox_friend_get_status_message(tox, ids[i], statusMessage, nullptr))
|
||||
{
|
||||
emit friendStatusMessageChanged(ids[i], CString::toString(statusMessage, statusMessageSize));
|
||||
|
@ -1104,17 +1104,16 @@ QString Core::getGroupPeerName(int groupId, int peerId) const
|
|||
*/
|
||||
ToxId Core::getGroupPeerToxId(int groupId, int peerId) const
|
||||
{
|
||||
QByteArray friendPk(TOX_PUBLIC_KEY_SIZE, 0x00);
|
||||
uint8_t friendPk[TOX_PUBLIC_KEY_SIZE] = {0x00};
|
||||
TOX_ERR_CONFERENCE_PEER_QUERY error;
|
||||
bool success = tox_conference_peer_get_public_key(tox, groupId, peerId,
|
||||
reinterpret_cast<uint8_t*> (friendPk.data()), &error);
|
||||
bool success = tox_conference_peer_get_public_key(tox, groupId, peerId, friendPk, &error);
|
||||
if (!parsePeerQueryError(error) || !success)
|
||||
{
|
||||
qWarning() << "getGroupPeerToxId: Unknown error";
|
||||
return ToxId();
|
||||
}
|
||||
|
||||
return ToxId(friendPk);
|
||||
return ToxId(friendPk, TOX_PUBLIC_KEY_SIZE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -19,11 +19,12 @@
|
|||
|
||||
|
||||
#include "toxid.h"
|
||||
|
||||
#include "core.h"
|
||||
|
||||
#include <tox/tox.h>
|
||||
#include <qregularexpression.h>
|
||||
|
||||
#include <QRegularExpression>
|
||||
#include <cstdint>
|
||||
|
||||
// Tox doesn't publicly define these
|
||||
#define NOSPAM_BYTES 4
|
||||
|
@ -69,8 +70,9 @@ ToxId::ToxId(const ToxId& other)
|
|||
/**
|
||||
* @brief Create a Tox ID from a QString.
|
||||
*
|
||||
* If the given id is not a valid Tox ID, then:
|
||||
* publicKey == id and noSpam == "" == checkSum.
|
||||
* If the given rawId is not a valid Tox ID, but can be a Public Key then:
|
||||
* publicKey == rawId and noSpam == 0 == checkSum.
|
||||
* If the given rawId isn't a valid Public Key or Tox ID a ToxId with all zero bytes is created.
|
||||
*
|
||||
* @param id Tox ID string to convert to ToxId object
|
||||
*/
|
||||
|
@ -93,10 +95,11 @@ ToxId::ToxId(const QString& id)
|
|||
/**
|
||||
* @brief Create a Tox ID from a QByteArray.
|
||||
*
|
||||
* If the given id is not a valid Tox ID, then:
|
||||
* publicKey == id and noSpam == "" == checkSum.
|
||||
* If the given rawId is not a valid Tox ID, but can be a Public Key then:
|
||||
* publicKey == rawId and noSpam == 0 == checkSum.
|
||||
* If the given rawId isn't a valid Public Key or Tox ID a ToxId with all zero bytes is created.
|
||||
*
|
||||
* @param id Tox ID string to convert to ToxId object
|
||||
* @param rawId Tox ID bytes to convert to ToxId object
|
||||
*/
|
||||
ToxId::ToxId(const QByteArray& rawId)
|
||||
{
|
||||
|
@ -104,12 +107,15 @@ ToxId::ToxId(const QByteArray& rawId)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Create a Tox ID from a uint8_t* and length.
|
||||
* @brief Create a Tox ID from uint8_t bytes and lenght, convenience function for toxcore interface.
|
||||
*
|
||||
* If the given id is not a valid Tox ID, then:
|
||||
* publicKey == id and noSpam == "" == checkSum.
|
||||
* If the given rawId is not a valid Tox ID, but can be a Public Key then:
|
||||
* publicKey == rawId and noSpam == 0 == checkSum.
|
||||
* If the given rawId isn't a valid Public Key or Tox ID a ToxId with all zero bytes is created.
|
||||
*
|
||||
* @param id Tox ID string to convert to ToxId object
|
||||
* @param rawId Pointer to bytes to convert to ToxId object
|
||||
* @param len Number of bytes to read. Must be TOX_SECRET_KEY_SIZE for a Public Key or
|
||||
* TOX_ADDRESS_SIZE for a Tox ID.
|
||||
*/
|
||||
ToxId::ToxId(const uint8_t& rawId, int len)
|
||||
{
|
||||
|
@ -126,7 +132,6 @@ void ToxId::checkToxId(const QByteArray& rawId)
|
|||
}
|
||||
else if (rawId.length() == TOX_ADDRESS_SIZE
|
||||
&& isToxId(rawId.toHex().toUpper()))
|
||||
|
||||
{
|
||||
toxId = QByteArray(rawId); // construct from full toxid
|
||||
}
|
||||
|
@ -137,9 +142,9 @@ void ToxId::checkToxId(const QByteArray& rawId)
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Compares, that public key equals.
|
||||
* @brief Compares the equality of the Public Key.
|
||||
* @param other Tox ID to compare.
|
||||
* @return True if both Tox ID have same public keys, false otherwise.
|
||||
* @return True if both Tox IDs have the same public keys, false otherwise.
|
||||
*/
|
||||
bool ToxId::operator==(const ToxId& other) const
|
||||
{
|
||||
|
@ -147,9 +152,9 @@ bool ToxId::operator==(const ToxId& other) const
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Compares, that only public key not equals.
|
||||
* @brief Compares the inequality of the Public Key.
|
||||
* @param other Tox ID to compare.
|
||||
* @return True if both Tox ID have different public keys, false otherwise.
|
||||
* @return True if both Tox IDs have different public keys, false otherwise.
|
||||
*/
|
||||
bool ToxId::operator!=(const ToxId& other) const
|
||||
{
|
||||
|
@ -157,7 +162,8 @@ bool ToxId::operator!=(const ToxId& other) const
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Returns Tox ID converted to QString.
|
||||
* @brief Returns the Tox ID converted to QString.
|
||||
* Is equal to getPublicKey() if the Tox ID was constructed from only a Public Key.
|
||||
* @return The Tox ID as QString.
|
||||
*/
|
||||
QString ToxId::toString() const
|
||||
|
@ -187,11 +193,11 @@ bool ToxId::isValidToxId(const QString& id)
|
|||
|
||||
/**
|
||||
* @brief Gets the ToxID as bytes, convenience function for toxcore interface.
|
||||
* @return The ToxID
|
||||
* @return The ToxID as uint8_t*
|
||||
*/
|
||||
const uint8_t* ToxId::getBytes() const
|
||||
{
|
||||
return reinterpret_cast<const uint8_t*> (toxId.constData());
|
||||
return reinterpret_cast<const uint8_t*>(toxId.constData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -204,12 +210,12 @@ QByteArray ToxId::getPublicKey() const
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Gets the Public Key part of the ToxID, convenience fuction for toxcore interface.
|
||||
* @return Public Key of the ToxID
|
||||
* @brief Gets the Public Key part of the ToxID, convenience function for toxcore interface.
|
||||
* @return Public Key of the ToxID as uint8_t*
|
||||
*/
|
||||
const uint8_t* ToxId::getPublicKeyBytes() const
|
||||
{
|
||||
return reinterpret_cast<const uint8_t*> (toxId.mid(0, TOX_PUBLIC_KEY_SIZE).constData());
|
||||
return reinterpret_cast<const uint8_t*>(toxId.mid(0, TOX_PUBLIC_KEY_SIZE).constData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user