#include #include #include #include #include #include #include #include "conversations.h" #include "lib/utils.h" #include "lib/globals.h" Conversations::Conversations(QCommandLineParser *cmdargs) { this->cmdargs = cmdargs; // Paths pathGenericData = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); configRoot = QDir::homePath(); accountName = Utils::getUnixAccountName(); homeDir = QDir::homePath(); configDirectory = QString("%1/.config/%2/").arg(configRoot, QCoreApplication::applicationName()); // Create some directories createConfigDirectory(configDirectory); // flags, iso codes, etc countries = new Countries(); if(this->isDebug) { qDebug() << "configRoot: " << configRoot; qDebug() << "homeDir: " << homeDir; qDebug() << "configDirectory: " << configDirectory; } chatModel = new ChatModel(); // https://stackoverflow.com/q/53018492 this->ws = new WSClient(this, "135.125.235.26:7000"); this->ws->start(); connect(this->ws, &WSClient::WSMessage, this, &Conversations::onWSMessage); } void Conversations::onWSMessage(const QJsonObject &msg) { auto _chats = msg.value("data").toArray(); for (auto &&chat: _chats) { auto obj = chat.toObject(); auto nick = obj.value("nick").toString(); auto message = obj.value("message").toString(); auto date = obj.value("date").toInt(); auto date_t = QDateTime::fromTime_t(date); auto *chat_obj = new ChatMessage(nick, date_t, message); chatModel->appendMessage(chat_obj); //qDebug() << nick << " [" << date << "]: " << message; } } void Conversations::onSendMessage(const QString &message) { auto _msg = message.toUtf8(); auto date_t = QDateTime::currentDateTime(); auto *chat_obj = new ChatMessage("_self", date_t, _msg); chatModel->appendMessage(chat_obj); this->ws->sendMsg(_msg); } void Conversations::getMessages(const QString &contact_uid, int limit, int offset) { } void Conversations::setWindowTitle(const QString &title) { emit setTitle(title); } void Conversations::createConfigDirectory(const QString &dir) { QStringList createDirs({dir}); for(const auto &d: createDirs) { if(!Utils::dirExists(d)) { qDebug() << QString("Creating directory: %1").arg(d); if (!QDir().mkpath(d)) throw std::runtime_error("Could not create directory " + d.toStdString()); } } } Conversations::~Conversations() {}