Skip to content
This repository has been archived by the owner on Feb 12, 2023. It is now read-only.

Commit

Permalink
fix(group): Send all parts of long message
Browse files Browse the repository at this point in the history
Fix #4832
  • Loading branch information
Diadlo committed Nov 24, 2017
1 parent c0a7488 commit 7c76beb
Showing 1 changed file with 26 additions and 24 deletions.
50 changes: 26 additions & 24 deletions src/core/core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,30 @@ void Core::sendTyping(uint32_t friendId, bool typing)
}
}

bool parseConferenceSendMessageError(TOX_ERR_CONFERENCE_SEND_MESSAGE error)
{
switch (error) {
case TOX_ERR_CONFERENCE_SEND_MESSAGE_OK:
return true;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_CONFERENCE_NOT_FOUND:
qCritical() << "Conference not found";
return false;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_FAIL_SEND:
qCritical() << "Conference message failed to send";
return false;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_NO_CONNECTION:
qCritical() << "No connection";
return false;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_TOO_LONG:
qCritical() << "Message too long";
return false;
}
}

void Core::sendGroupMessageWithType(int groupId, const QString& message, TOX_MESSAGE_TYPE type)
{
QStringList cMessages = splitMessage(message, MAX_GROUP_MESSAGE_LEN);
Expand All @@ -652,33 +676,11 @@ void Core::sendGroupMessageWithType(int groupId, const QString& message, TOX_MES
ToxString cMsg(part);
TOX_ERR_CONFERENCE_SEND_MESSAGE error;
bool ok = tox_conference_send_message(tox, groupId, type, cMsg.data(), cMsg.size(), &error);
if (ok && error == TOX_ERR_CONFERENCE_SEND_MESSAGE_OK) {
return;
}

qCritical() << "Fail of tox_conference_send_message";
switch (error) {
case TOX_ERR_CONFERENCE_SEND_MESSAGE_CONFERENCE_NOT_FOUND:
qCritical() << "Conference not found";
return;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_FAIL_SEND:
qCritical() << "Conference message failed to send";
return;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_NO_CONNECTION:
qCritical() << "No connection";
if (!ok || !parseConferenceSendMessageError(error)) {
emit groupSentResult(groupId, message, -1);
return;

case TOX_ERR_CONFERENCE_SEND_MESSAGE_TOO_LONG:
qCritical() << "Meesage too long";
return;

default:
break;
}

emit groupSentResult(groupId, message, -1);
}
}

Expand Down

0 comments on commit 7c76beb

Please sign in to comment.