Skip to content

Commit

Permalink
Fix message insertion bug
Browse files Browse the repository at this point in the history
There was still an, now unused, variable/pointer in the MessageController class. It
wasn't set so it was a nullptr, when the MessageModel was trying to add it to the db.
  • Loading branch information
LNJ committed Jun 19, 2017
1 parent b514030 commit 0a6e43b
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 18 deletions.
2 changes: 1 addition & 1 deletion src/Kaidan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ void Kaidan::setChatPartner(QString chatPartner)

void Kaidan::sendMessage(QString jid, QString message)
{
messageController->sendMessage(&jid, &message);
messageController->sendMessage(&(this->jid), &jid, &message);
rosterController->handleNewMessageSent(&jid, &message);
}

Expand Down
11 changes: 6 additions & 5 deletions src/MessageController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ void MessageController::handleMessageReceived(Swift::Message::ref message_)

// author is only the 'bare' JID: e.g. 'albert@einstein.ch'
const QString author = QString::fromStdString(message_->getFrom().toBare().toString());
const QString author_resource = QString(message_->getFrom().getResource().c_str());
const QString author_resource = QString::fromStdString(message_->getFrom().getResource());
const QString recipient = QString::fromStdString(message_->getTo().toBare().toString());
const QString recipient_resource = QString::fromStdString(client->getJID().getResource());
QString timestamp = QDateTime::currentDateTime().toString(Qt::ISODate); // fallback timestamp
const QString message = QString::fromStdString(*bodyOpt);
Expand All @@ -92,8 +93,8 @@ void MessageController::handleMessageReceived(Swift::Message::ref message_)
);
}

messageModel->addMessage(&author, &author_resource, ownJid,
&recipient_resource, &timestamp, &message, &msgId, false);
messageModel->addMessage(&author, &author_resource, &recipient,
&recipient_resource, &timestamp, &message, &msgId, false);

// send a new notification | TODO: Resolve nickname from JID
Notifications::sendMessageNotification(
Expand Down Expand Up @@ -133,7 +134,7 @@ void MessageController::handleMessageReceived(Swift::Message::ref message_)
}
}

void MessageController::sendMessage(QString *recipient_, QString *message_)
void MessageController::sendMessage(QString *fromJid, QString *recipient_, QString *message_)
{
// generate a new message id
Swift::IDGenerator idGenerator;
Expand All @@ -148,7 +149,7 @@ void MessageController::sendMessage(QString *recipient_, QString *message_)
const QString recipient_resource = QString("");
const QString qmsgId = QString::fromStdString(msgId);

messageModel->addMessage(ownJid, &author_resource, recipient_,
messageModel->addMessage(fromJid, &author_resource, recipient_,
&recipient_resource, &timestamp, message_, &qmsgId, true);

//
Expand Down
3 changes: 1 addition & 2 deletions src/MessageController.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class MessageController : public QObject
MessageModel* getMessageModel();

void setChatPartner(QString *recipient, QString* ownJid);
void sendMessage(QString *recipient_, QString *message_);
void sendMessage(QString *fromJid, QString *recipient_, QString *message_);

signals:
void messageModelChanged();
Expand All @@ -54,7 +54,6 @@ class MessageController : public QObject

Swift::Client *client;
MessageModel *messageModel;
QString *ownJid;
};

#endif // MESSAGECONTROLLER_H
8 changes: 3 additions & 5 deletions src/MessageModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ void MessageModel::setMessageAsDelivered(const QString msgId)
submitAll();
}

void MessageModel::addMessage(const QString* author, const QString* author_resource,
const QString* recipient, const QString* recipient_resource,
const QString* timestamp, const QString* message, const QString* msgId,
void MessageModel::addMessage(const QString *author, const QString *author_resource,
const QString *recipient, const QString *recipient_resource,
const QString *timestamp, const QString *message, const QString *msgId,
bool sentByMe)
{
//
Expand All @@ -102,8 +102,6 @@ void MessageModel::addMessage(const QString* author, const QString* author_resou
record.setValue("id", *msgId);
record.setValue("isSent", sentByMe ? false : true);
record.setValue("isDelivered", sentByMe ? false : true);
record.setValue("isRead", sentByMe ? false : true);
record.setValue("isReadByMe", sentByMe ? true : false);

if (!insertRecord(rowCount(), record)) {
qWarning() << "Failed to add message to DB:" << lastError().text();
Expand Down
8 changes: 4 additions & 4 deletions src/MessageModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ class MessageModel : public QSqlTableModel
QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE;

void applyRecipientFilter(QString *recipient_, QString *author_);
void addMessage(const QString* author, const QString* author_resource,
const QString* recipient, const QString* recipient_resource,
const QString* timestamp, const QString* message,
const QString* msgId, bool sentByMe);
void addMessage(const QString *author, const QString *author_resource,
const QString *recipient, const QString *recipient_resource,
const QString *timestamp, const QString *message,
const QString *msgId, bool sentByMe);
void setMessageAsSent(const QString msgId);
void setMessageAsDelivered(const QString msgId);

Expand Down
2 changes: 1 addition & 1 deletion src/RosterModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ void RosterModel::setUnreadMessageCountOfJid(const QString* jid_, const int coun
void RosterModel::setLastMessageForJid(QString *jid, QString *message)
{
QSqlQuery query(*database);
query.prepare(QString("UPDATE Roster SET lastMessage = %1 WHERE jid = '%2'")
query.prepare(QString("UPDATE Roster SET lastMessage = '%1' WHERE jid = '%2'")
.arg(*message, *jid));

if (!query.exec()) {
Expand Down

0 comments on commit 0a6e43b

Please sign in to comment.