1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

feat(core): Add error parsing for Tox_Err_File_Get

This commit is contained in:
Anthony Bilinski 2022-03-17 21:40:53 -07:00
parent aff5663351
commit 040beae56a
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
3 changed files with 48 additions and 6 deletions

View File

@ -122,8 +122,12 @@ void CoreFile::sendAvatarFile(uint32_t friendId, const QByteArray& data)
file.fileKind = TOX_FILE_KIND_AVATAR;
file.avatarData = data;
file.resumeFileId.resize(TOX_FILE_ID_LENGTH);
Tox_Err_File_Get fileGetErr;
tox_file_get_file_id(tox, friendId, fileNum, reinterpret_cast<uint8_t*>(file.resumeFileId.data()),
nullptr);
&fileGetErr);
if (!PARSE_ERR(fileGetErr)) {
return;
}
addFile(friendId, fileNum, file);
}
@ -145,8 +149,12 @@ void CoreFile::sendFile(uint32_t friendId, QString filename, QString filePath,
ToxFile file{fileNum, friendId, fileName.getQString(), filePath, static_cast<uint64_t>(filesize), ToxFile::SENDING};
file.resumeFileId.resize(TOX_FILE_ID_LENGTH);
Tox_Err_File_Get fileGetErr;
tox_file_get_file_id(tox, friendId, fileNum, reinterpret_cast<uint8_t*>(file.resumeFileId.data()),
nullptr);
&fileGetErr);
if (!PARSE_ERR(fileGetErr)) {
return;
}
if (!file.open(false)) {
qWarning() << QString("sendFile: Can't open file, error: %1").arg(file.file->errorString());
}
@ -327,7 +335,11 @@ void CoreFile::onFileReceiveCallback(Tox* tox, uint32_t friendId, uint32_t fileI
static_assert(TOX_HASH_LENGTH <= TOX_FILE_ID_LENGTH,
"TOX_HASH_LENGTH > TOX_FILE_ID_LENGTH!");
uint8_t avatarHash[TOX_FILE_ID_LENGTH];
tox_file_get_file_id(tox, friendId, fileId, avatarHash, nullptr);
Tox_Err_File_Get fileGetErr;
tox_file_get_file_id(tox, friendId, fileId, avatarHash, &fileGetErr);
if (!PARSE_ERR(fileGetErr)) {
return;
}
QByteArray avatarBytes{static_cast<const char*>(static_cast<const void*>(avatarHash)),
TOX_HASH_LENGTH};
emit core->fileAvatarOfferReceived(friendId, fileId, avatarBytes, filesize);
@ -348,8 +360,12 @@ void CoreFile::onFileReceiveCallback(Tox* tox, uint32_t friendId, uint32_t fileI
ToxFile file{fileId, friendId, filename.getBytes(), "", filesize, ToxFile::RECEIVING};
file.fileKind = kind;
file.resumeFileId.resize(TOX_FILE_ID_LENGTH);
Tox_Err_File_Get fileGetErr;
tox_file_get_file_id(tox, friendId, fileId, reinterpret_cast<uint8_t*>(file.resumeFileId.data()),
nullptr);
&fileGetErr);
if (!PARSE_ERR(fileGetErr)) {
return;
}
coreFile->addFile(friendId, fileId, file);
if (kind != TOX_FILE_KIND_AVATAR) {
emit coreFile->fileReceiveRequested(file);
@ -377,8 +393,12 @@ void CoreFile::handleAvatarOffer(uint32_t friendId, uint32_t fileId, bool accept
ToxFile file{fileId, friendId, "<avatar>", "", filesize, ToxFile::RECEIVING};
file.fileKind = TOX_FILE_KIND_AVATAR;
file.resumeFileId.resize(TOX_FILE_ID_LENGTH);
Tox_Err_File_Get getErr;
tox_file_get_file_id(tox, friendId, fileId, reinterpret_cast<uint8_t*>(file.resumeFileId.data()),
nullptr);
&getErr);
if (!PARSE_ERR(getErr)) {
return;
}
addFile(friendId, fileId, file);
}

View File

@ -50,6 +50,6 @@ namespace ToxcoreErrorParser {
bool parseErr(Tox_Err_Set_Typing error, int line);
bool parseErr(Tox_Err_Conference_Delete error, int line);
bool parseErr(Tox_Err_Get_Port error, int line);
bool parseErr(Tox_Err_File_Get error, int line);
bool parseErr(Tox_Err_File_Send error, int line);
} // namespace ToxcoreErrorParser

View File

@ -413,6 +413,28 @@ bool ToxcoreErrorParser::parseErr(Tox_Err_Get_Port error, int line)
return false;
}
bool ToxcoreErrorParser::parseErr(Tox_Err_File_Get error, int line)
{
switch (error) {
case TOX_ERR_FILE_GET_OK:
return true;
case TOX_ERR_FILE_GET_NULL:
qCritical() << line << ": One of the arguments to the function was NULL when it was not expected.";
return false;
case TOX_ERR_FILE_GET_FRIEND_NOT_FOUND:
qCritical() << line << ": The friend_number passed did not designate a valid friend.";
return false;
case TOX_ERR_FILE_GET_NOT_FOUND:
qCritical() << line << ": The friend_number passed did not designate a valid friend.";
return false;
}
qCritical() << line << ": Unknown Tox_Err_Conference_Title error code:" << error;
return false;
}
bool ToxcoreErrorParser::parseErr(Tox_Err_File_Send error, int line)
{
switch (error) {