mirror of
https://gitlab.com/comunic/comunicmessages
synced 2025-06-20 00:45:17 +00:00
Can get a list of messages from the server.
This commit is contained in:
@ -1,3 +1,6 @@
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
|
||||
#include "apihelper.h"
|
||||
#include "conversationhelper.h"
|
||||
#include "../data/apirequest.h"
|
||||
@ -18,6 +21,17 @@ void ConversationHelper::sendMessage(const NewConversationMessage &message)
|
||||
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
|
||||
@ -31,3 +45,33 @@ void ConversationHelper::sendMessageFinished(int code)
|
||||
//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;
|
||||
}
|
||||
|
@ -13,6 +13,9 @@
|
||||
|
||||
#include "../data/newconversationmessage.h"
|
||||
#include "../data/apirequest.h"
|
||||
#include "../data/conversationmessage.h"
|
||||
|
||||
class QJsonObject;
|
||||
|
||||
class APIHelper;
|
||||
|
||||
@ -29,6 +32,14 @@ public:
|
||||
*/
|
||||
void sendMessage(const NewConversationMessage &message);
|
||||
|
||||
/**
|
||||
* Get some messages of a conversation
|
||||
*
|
||||
* @param conversationID The ID of the target conversation
|
||||
* @param last_message_id The ID of the last known message (-1 for none)
|
||||
*/
|
||||
void getMessages(int conversationID, int last_message_id = -1);
|
||||
|
||||
signals:
|
||||
|
||||
/**
|
||||
@ -39,6 +50,14 @@ signals:
|
||||
*/
|
||||
void sendMessageCallback(bool success);
|
||||
|
||||
/**
|
||||
* Get the list of messages callback
|
||||
*
|
||||
* @param success TRUE for a success / FALSE else
|
||||
* @param list The list of messages
|
||||
*/
|
||||
void getMessagesCallback(bool success, QList<ConversationMessage> list);
|
||||
|
||||
public slots:
|
||||
|
||||
|
||||
@ -52,8 +71,24 @@ private slots:
|
||||
*/
|
||||
void sendMessageFinished(int code);
|
||||
|
||||
/**
|
||||
* Finished to retrieve the list of messages of the user
|
||||
*
|
||||
* @param code HTTP response code
|
||||
* @param document Server response
|
||||
*/
|
||||
void getMessagesFinished(int code, const QJsonDocument &document);
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* Turn a json object into a conversation object
|
||||
*
|
||||
* @param object The object to convert
|
||||
* @return Generated object
|
||||
*/
|
||||
static ConversationMessage QJsonObjectToConversationMessage(const QJsonObject &object);
|
||||
|
||||
//Private fields
|
||||
APIHelper *mAPIHelper;
|
||||
};
|
||||
|
Reference in New Issue
Block a user