/
Shymer123
/
Messenger
Обзор
Документация
Войти
/
Shymer123
/
Messenger
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
UI_Client/SourceFiles/Chats/fetchChats.cpp
117 строк
4 KB
Shymer123
the code has been refactored (now there are no incomprehensible 'UserRole + n') so far only in the list of chats and the list of messages
09 май 2025, 05:48
09 май 2025, 05:48
f0d1c4e
Код
Авторство
О чём код?
#include "fetchChats.h" #include "RequestResponseHandler/dependencyManager.h" #include "DataModels/user_data.h" #include "DataModels/chat_data.h" #include "SharedEnums/ChatTypes.h" #include <QJsonObject> #include <QJsonArray> FetchChats::FetchChats() { m_communicationHandler = DependencyManager::instance().communicationHandler(); m_userID = UserData::instance().getID(); } void FetchChats::getSingleChat(const int chatID, std::function<void(const QVariantList&)> callback) const { m_communicationHandler->getSingleChat(chatID); disconnect(m_communicationHandler, &CommunicationHandler::getSingleChatReceived, nullptr, nullptr); connect(m_communicationHandler, &CommunicationHandler::getSingleChatReceived, [callback](const QJsonObject& response) { MessageType lastMessageType = static_cast<MessageType>( response.value("lastMessageType").toInt()); QDateTime lastMessageDateTime = QDateTime::fromString(response.value("lastMessageTime").toString(), "yyyy-MM-dd HH:mm:ss"); QString lastMessage; if(lastMessageType == MessageType::Text) { lastMessage = response.value("lastMessage").toString(); } else if(lastMessageType == MessageType::File) { lastMessage = "files"; } QVariantList chatSummaryInfo; chatSummaryInfo.append(lastMessage); chatSummaryInfo.append(static_cast<int>(lastMessageType)); chatSummaryInfo.append(lastMessageDateTime); callback(chatSummaryInfo); }); } void FetchChats::getAllChatsList(std::function<void(const QList<ChatData>&)> callback) const { m_communicationHandler->getChats(m_userID); disconnect(m_communicationHandler, &CommunicationHandler::getChatsReceived, nullptr, nullptr); connect(m_communicationHandler, &CommunicationHandler::getChatsReceived, [callback](const QJsonObject& response) { QJsonArray chatArray = response.value("chats").toArray(); QList<ChatData> chatList; for(const QJsonValue& chatValue : std::as_const(chatArray)) { QJsonObject chatObject = chatValue.toObject(); ChatData data; ChatTypes chatType = static_cast<ChatTypes> (chatObject.value("chatType").toInt()); int id = chatObject.value("id").toInt(); MessageType lastMessageType = static_cast<MessageType> (chatObject.value("lastMessageType").toInt()); QDateTime lastMessageTime = QDateTime::fromString(chatObject.value("lastMessageTime").toString(), "yyyy-MM-dd HH:mm:ss"); QString lastMessage; if(lastMessageType == MessageType::Text) { lastMessage = chatObject.value("lastMessage").toString(); } else if(lastMessageType == MessageType::File) { lastMessage = "files"; } switch (chatType) { case ChatTypes::Dialog: { QString title = chatObject.value("title").toString(); int participantID = chatObject.value("participantID").toInt(); data.setTitle(title); data.setParticipantID(participantID); break; } case ChatTypes::Favourite: { QString title = tr("Saved Messages"); data.setTitle(title); break; } case ChatTypes::Group: { QString title = chatObject.value("title").toString(); MemberRole memberRole = static_cast<MemberRole> (chatObject.value("memberRole").toInt()); data.setTitle(title); data.setMemberRole(memberRole); break; } case ChatTypes::Unknown: break; } data.setChatType(chatType); data.setChatID(id); data.setAvatar(QPixmap()); data.setLastMessage(lastMessage); data.setLastMessageTime(lastMessageTime); chatList.append(data); } callback(chatList); }); }