You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.5 KiB
89 lines
2.5 KiB
#include <QObject>
|
|
#include <QDir>
|
|
#include <QMessageBox>
|
|
#include <QJsonArray>
|
|
#include <QJsonObject>
|
|
#include <QCommandLineParser>
|
|
#include <QStandardPaths>
|
|
|
|
#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() {}
|