mirror of
				https://gitlab.com/comunic/comunicmessages
				synced 2025-11-04 12:14:05 +00:00 
			
		
		
		
	Can get a list of messages from the server.
This commit is contained in:
		@@ -28,7 +28,8 @@ SOURCES += \
 | 
				
			|||||||
    utils/timeutils.cpp \
 | 
					    utils/timeutils.cpp \
 | 
				
			||||||
    widgets/conversationwidget.cpp \
 | 
					    widgets/conversationwidget.cpp \
 | 
				
			||||||
    data/newconversationmessage.cpp \
 | 
					    data/newconversationmessage.cpp \
 | 
				
			||||||
    helpers/conversationhelper.cpp
 | 
					    helpers/conversationhelper.cpp \
 | 
				
			||||||
 | 
					    data/conversationmessage.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HEADERS += \
 | 
					HEADERS += \
 | 
				
			||||||
    helpers/accounthelper.h \
 | 
					    helpers/accounthelper.h \
 | 
				
			||||||
@@ -58,7 +59,8 @@ HEADERS += \
 | 
				
			|||||||
    utils/timeutils.h \
 | 
					    utils/timeutils.h \
 | 
				
			||||||
    widgets/conversationwidget.h \
 | 
					    widgets/conversationwidget.h \
 | 
				
			||||||
    data/newconversationmessage.h \
 | 
					    data/newconversationmessage.h \
 | 
				
			||||||
    helpers/conversationhelper.h
 | 
					    helpers/conversationhelper.h \
 | 
				
			||||||
 | 
					    data/conversationmessage.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FORMS += \
 | 
					FORMS += \
 | 
				
			||||||
    widgets/loginwidget.ui \
 | 
					    widgets/loginwidget.ui \
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										56
									
								
								data/conversationmessage.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								data/conversationmessage.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					#include "conversationmessage.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ConversationMessage::ConversationMessage()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int ConversationMessage::iD() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return mID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConversationMessage::setID(int iD)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mID = iD;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int ConversationMessage::userID() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return mUserID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConversationMessage::setUserID(int userID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mUserID = userID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int ConversationMessage::timeInsert() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return mTimeInsert;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConversationMessage::setTimeInsert(int timeInsert)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mTimeInsert = timeInsert;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString ConversationMessage::message() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return mMessage;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConversationMessage::setMessage(const QString &message)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mMessage = message;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString ConversationMessage::imagePath() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return mImagePath;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConversationMessage::setImagePath(const QString &imagePath)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    mImagePath = imagePath;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										40
									
								
								data/conversationmessage.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								data/conversationmessage.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Conversation message object
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Pierre HUBERT
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef CONVERSATIONMESSAGE_H
 | 
				
			||||||
 | 
					#define CONVERSATIONMESSAGE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <QString>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ConversationMessage
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    ConversationMessage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int iD() const;
 | 
				
			||||||
 | 
					    void setID(int iD);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int userID() const;
 | 
				
			||||||
 | 
					    void setUserID(int userID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int timeInsert() const;
 | 
				
			||||||
 | 
					    void setTimeInsert(int timeInsert);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QString message() const;
 | 
				
			||||||
 | 
					    void setMessage(const QString &message);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QString imagePath() const;
 | 
				
			||||||
 | 
					    void setImagePath(const QString &imagePath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    int mID;
 | 
				
			||||||
 | 
					    int mUserID;
 | 
				
			||||||
 | 
					    int mTimeInsert;
 | 
				
			||||||
 | 
					    QString mMessage;
 | 
				
			||||||
 | 
					    QString mImagePath;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // CONVERSATIONMESSAGE_H
 | 
				
			||||||
@@ -1,3 +1,6 @@
 | 
				
			|||||||
 | 
					#include <QJsonObject>
 | 
				
			||||||
 | 
					#include <QJsonArray>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "apihelper.h"
 | 
					#include "apihelper.h"
 | 
				
			||||||
#include "conversationhelper.h"
 | 
					#include "conversationhelper.h"
 | 
				
			||||||
#include "../data/apirequest.h"
 | 
					#include "../data/apirequest.h"
 | 
				
			||||||
@@ -18,6 +21,17 @@ void ConversationHelper::sendMessage(const NewConversationMessage &message)
 | 
				
			|||||||
    mAPIHelper->execute(request);
 | 
					    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)
 | 
					void ConversationHelper::sendMessageFinished(int code)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    //Delete sender
 | 
					    //Delete sender
 | 
				
			||||||
@@ -31,3 +45,33 @@ void ConversationHelper::sendMessageFinished(int code)
 | 
				
			|||||||
    //Success
 | 
					    //Success
 | 
				
			||||||
    emit sendMessageCallback(true);
 | 
					    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/newconversationmessage.h"
 | 
				
			||||||
#include "../data/apirequest.h"
 | 
					#include "../data/apirequest.h"
 | 
				
			||||||
 | 
					#include "../data/conversationmessage.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class QJsonObject;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class APIHelper;
 | 
					class APIHelper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -29,6 +32,14 @@ public:
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    void sendMessage(const NewConversationMessage &message);
 | 
					    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:
 | 
					signals:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -39,6 +50,14 @@ signals:
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    void sendMessageCallback(bool success);
 | 
					    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:
 | 
					public slots:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,8 +71,24 @@ private slots:
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    void sendMessageFinished(int code);
 | 
					    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:
 | 
					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
 | 
					    //Private fields
 | 
				
			||||||
    APIHelper *mAPIHelper;
 | 
					    APIHelper *mAPIHelper;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user