Display the list of conversations.

This commit is contained in:
Pierre HUBERT
2018-12-07 11:31:42 +01:00
parent 3d9748ad62
commit 1df359735d
24 changed files with 484 additions and 11 deletions

View File

@ -3,6 +3,7 @@
#include "conversationslisthelper.h"
#include "apihelper.h"
#include "accounthelper.h"
#include "../data/apirequest.h"
#include "../data/conversationslist.h"
@ -20,6 +21,31 @@ void ConversationsListHelper::getList()
mAPIHelper->execute(request);
}
QString ConversationsListHelper::getConversationDisplayName(const Conversation &conv, const UsersList &usersInfo)
{
//Check if the conversation has already a name
if(conv.name().length() > 0)
return conv.name();
QString name;
int i = 0;
for(int j = 0; j < conv.members().length() && i < 3; j++){
//We bypass the current user name
if(conv.members().at(j) == AccountHelper::getUserID())
continue;
if(name.length() > 0)
name += ", ";
name += usersInfo.get(conv.members().at(j)).displayName();
i++;
}
return name;
}
void ConversationsListHelper::getConvListCallback(int code, const QJsonDocument &document)
{
//Delete the request
@ -49,8 +75,8 @@ Conversation ConversationsListHelper::GetConversationFromJson(const QJsonObject
conv.setIDowner(obj.value("ID_owner").toInt());
conv.setLastActive(obj.value("last_active").toInt());
conv.setName(obj.value("name").toString());
conv.setFollowing(obj.value("following").toBool());
conv.setSawLastMessage(obj.value("saw_last_message").toBool());
conv.setFollowing(obj.value("following").toInt() == 1);
conv.setSawLastMessage(obj.value("saw_last_message").toInt() == 1);
//Process the list of members of the conversation
QJsonArray members_arr = obj.value("members").toArray();

View File

@ -12,6 +12,7 @@
#include <QObject>
#include "../data/conversation.h"
#include "../data/userslist.h"
class QJsonObject;
@ -29,6 +30,15 @@ public:
*/
void getList();
/**
* Get and return the display name of a conversation
*
* @param conv Information about the target conversation
* @param usersInfo Information about related users
* @return The name of the conversation
*/
static QString getConversationDisplayName(const Conversation &conv, const UsersList &usersInfo);
signals:
/**

View File

@ -31,12 +31,12 @@ void UsersHelper::getUsersInformationFinished(int code, const QJsonDocument &doc
//Check for error
if(code != 200){
emit onGotUsersInfo(false, QList<User>());
emit onGotUsersInfo(false, UsersList());
return;
}
//Parse the list of object
QList<User> list;
UsersList list;
QJsonObject obj = document.object();
for(QString id : obj.keys())
list.append(ParseJSONToUser(obj.value(id).toObject()));

View File

@ -12,6 +12,7 @@
#include <QObject>
#include "../data/user.h"
#include "../data/userslist.h"
class QJsonObject;
@ -38,7 +39,7 @@ signals:
* @param success TRUE for a success / FALSE else
* @param list Information about the users
*/
void onGotUsersInfo(bool success, const QList<User> &list);
void onGotUsersInfo(bool success, const UsersList &list);
public slots: