mirror of
https://gitlab.com/comunic/comunicmessages
synced 2024-10-23 07:03:23 +00:00
87 lines
2.6 KiB
C++
87 lines
2.6 KiB
C++
#include <QJsonObject>
|
|
#include <QJsonArray>
|
|
|
|
#include "apihelper.h"
|
|
#include "conversationhelper.h"
|
|
#include "../data/apirequest.h"
|
|
#include "../utils/filesutils.h"
|
|
|
|
ConversationHelper::ConversationHelper(QObject *parent) : QObject(parent)
|
|
{
|
|
mAPIHelper = new APIHelper(this);
|
|
}
|
|
|
|
void ConversationHelper::sendMessage(const NewConversationMessage &message)
|
|
{
|
|
APIRequest *request = new APIRequest;
|
|
request->setURI("conversations/sendMessage");
|
|
request->addInt("conversationID", message.iDConversation());
|
|
request->addString("message", message.message());
|
|
|
|
//Add image (if any)
|
|
if(message.hasImage()){
|
|
|
|
//Add image to request
|
|
request->addFileFromPath("image", message.imagePath(), FilesUtils::GetFileMimeType(message.imagePath()));
|
|
|
|
}
|
|
|
|
connect(request, &APIRequest::finished, this, &ConversationHelper::sendMessageFinished);
|
|
mAPIHelper->execute(request);
|
|
}
|
|
|
|
void ConversationHelper::getMessages(int conversationID, int last_message_id)
|
|
{
|
|
APIRequest *request = new APIRequest;
|
|
request->setURI("conversations/refresh_single");
|
|
request->addInt("conversationID", conversationID);
|
|
request->addInt("last_message_id", last_message_id > 0 ? last_message_id : 0);
|
|
|
|
connect(request, &APIRequest::finished, this, &ConversationHelper::getMessagesFinished);
|
|
mAPIHelper->execute(request);
|
|
}
|
|
|
|
void ConversationHelper::sendMessageFinished(int code)
|
|
{
|
|
//Delete sender
|
|
qobject_cast<APIRequest *>(sender())->deleteLater();
|
|
|
|
if(code != 200){
|
|
emit sendMessageCallback(false);
|
|
return;
|
|
}
|
|
|
|
//Success
|
|
emit sendMessageCallback(true);
|
|
}
|
|
|
|
void ConversationHelper::getMessagesFinished(int code, const QJsonDocument &document)
|
|
{
|
|
//Delete sender
|
|
qobject_cast<APIRequest *>(sender())->deleteLater();
|
|
|
|
//Check if the operation is not a success
|
|
if(code != 200){
|
|
emit getMessagesCallback(false, QList<ConversationMessage>());
|
|
return;
|
|
}
|
|
|
|
QJsonArray array = document.array();
|
|
QList<ConversationMessage> list;
|
|
for(QJsonValue entry : array)
|
|
list.append(QJsonObjectToConversationMessage(entry.toObject()));
|
|
|
|
emit getMessagesCallback(true, list);
|
|
}
|
|
|
|
ConversationMessage ConversationHelper::QJsonObjectToConversationMessage(const QJsonObject &object)
|
|
{
|
|
ConversationMessage message;
|
|
message.setID(object.value("ID").toInt());
|
|
message.setUserID(object.value("ID_user").toInt());
|
|
message.setTimeInsert(object.value("time_insert").toInt());
|
|
message.setMessage(object.value("message").toString());
|
|
message.setImagePath(object.value("image_path").toString());
|
|
return message;
|
|
}
|