Automatically fetch new messages.

This commit is contained in:
2018-12-17 20:24:24 +01:00
parent 41cd02dfec
commit 6e7645f17b
6 changed files with 75 additions and 5 deletions

View File

@ -1,5 +1,6 @@
#include <QMessageBox>
#include <algorithm>
#include <QTimer>
#include "conversationwidget.h"
#include "ui_conversationwidget.h"
@ -27,13 +28,16 @@ ConversationWidget::ConversationWidget(const Conversation &conversation, const U
connect(mConversationHelper, &ConversationHelper::sendMessageCallback, this, &ConversationWidget::sendMessageCallback);
connect(mConversationHelper, &ConversationHelper::getMessagesCallback, this, &ConversationWidget::getMessagesCallback);
//Get the latest message of the conversation
mConversationHelper->getMessages(conversation.iD());
//Initialize refresh timeout
mTimer = new QTimer(this);
connect(mTimer, &QTimer::timeout, this, &ConversationWidget::refreshTimeout);
emit refreshTimeout();
}
ConversationWidget::~ConversationWidget()
{
delete ui;
delete mTimer;
}
void ConversationWidget::sendMessage()
@ -63,8 +67,19 @@ void ConversationWidget::sendMessage()
mConversationHelper->sendMessage(newMessage);
}
void ConversationWidget::refreshTimeout()
{
mTimer->stop();
//Get the latest message of the conversation
mConversationHelper->getMessages(mConversation.iD(), mMessages.getLastMessageID());
}
void ConversationWidget::getMessagesCallback(bool success, QList<ConversationMessage> list)
{
//Restart counter
mTimer->start(CONVERSATION_MESSAGES_REFRESH_INTERVAL);
if(!success){
QMessageBox::warning(this, tr("Error while getting messages list"), tr("Could not refresh messages list!"));
return;

View File

@ -14,6 +14,7 @@
#include "../data/conversation.h"
#include "../data/userslist.h"
#include "../data/conversationmessage.h"
#include "../data/conversationmessageslist.h"
namespace Ui {
class ConversationWidget;
@ -40,6 +41,12 @@ public slots:
private slots:
/**
* This slot is called at regular interval in order to
* update regulary the list of messages
*/
void refreshTimeout();
/**
* Method called once we have got the list of messages
*
@ -72,10 +79,11 @@ private:
//Private fields
Ui::ConversationWidget *ui;
QTimer *mTimer;
ConversationHelper *mConversationHelper;
Conversation mConversation;
UsersList mUsersList;
QList<ConversationMessage> mMessages;
ConversationMessagesList mMessages;
};
#endif // CONVERSATIONWIDGET_H