Item {
id: root
+ Connections {
+ target: activityModel
+ function onMessageSent() {
+ replyMessageTextField.clear();
+ replyMessageSent.text = activityModel.talkReplyMessageSent(model.index);
+ }
+ }
+
function sendReplyMessage() {
if (replyMessageTextField.text === "") {
return;
}
- UserModel.currentUser.sendReplyMessage(model.conversationToken, replyMessageTextField.text, model.messageId);
- replyMessageSent.text = replyMessageTextField.text;
- replyMessageTextField.clear();
+ UserModel.currentUser.sendReplyMessage(model.index, model.conversationToken, replyMessageTextField.text, model.messageId);
}
Text {
struct TalkNotificationData {
QString conversationToken;
QString messageId;
+ QString messageSent;
};
Type _type;
roles[ThumbnailRole] = "thumbnail";
roles[TalkNotificationConversationTokenRole] = "conversationToken";
roles[TalkNotificationMessageIdRole] = "messageId";
+ roles[TalkNotificationMessageSentRole] = "messageSent";
return roles;
}
return a._talkNotificationData.conversationToken;
case TalkNotificationMessageIdRole:
return a._talkNotificationData.messageId;
+ case TalkNotificationMessageSentRole:
+ return a._talkNotificationData.messageSent;
default:
return QVariant();
}
_showMoreActivitiesAvailableEntry = false;
}
+void ActivityListModel::replyMessageSent(const int activityIndex, const QString &message)
+{
+ if (activityIndex < 0 || activityIndex >= _finalList.size()) {
+ qCWarning(lcActivity) << "Couldn't trigger action on activity at index" << activityIndex << "/ final list size:" << _finalList.size();
+ return;
+ }
+
+ _finalList[activityIndex]._talkNotificationData.messageSent = message;
+
+ emit messageSent();
+}
+
+QString ActivityListModel::talkReplyMessageSent(const int activityIndex) const
+{
+ if (activityIndex < 0 || activityIndex >= _finalList.size()) {
+ qCWarning(lcActivity) << "Couldn't trigger action on activity at index" << activityIndex << "/ final list size:" << _finalList.size();
+ return {};
+ }
+
+ return _finalList[activityIndex]._talkNotificationData.messageSent;
+}
+
+
}
Q_PROPERTY(quint32 maxActionButtons READ maxActionButtons CONSTANT)
Q_PROPERTY(AccountState *accountState READ accountState CONSTANT)
+
public:
enum DataRole {
DarkIconRole = Qt::UserRole + 1,
ThumbnailRole,
TalkNotificationConversationTokenRole,
TalkNotificationMessageIdRole,
+ TalkNotificationMessageSentRole,
};
Q_ENUM(DataRole)
void setCurrentItem(const int currentItem);
+ void replyMessageSent(const int activityIndex, const QString &message);
+ Q_INVOKABLE QString talkReplyMessageSent(const int activityIndex) const;
+
public slots:
void slotRefreshActivity();
void slotRemoveAccount();
signals:
void activityJobStatusCode(int statusCode);
void sendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
+ void messageSent();
+
protected:
void setup();
AccountManager::instance()->save();
}
-void User::slotSendReplyMessage(const QString &token, const QString &message, const QString &replyTo)
+void User::slotSendReplyMessage(const int activityIndex, const QString &token, const QString &message, const QString &replyTo)
{
QPointer<TalkReply> talkReply = new TalkReply(_account.data(), this);
talkReply->sendReplyMessage(token, message, replyTo);
+ connect(talkReply, &TalkReply::replyMessageSent, this, [&](const QString &message) {
+ _activityModel->replyMessageSent(activityIndex, message);
+ });
}
/*-------------------------------------------------------------------------------------*/
roles[IconUrlRole] = "appIconUrl";
return roles;
}
-
}
void headerColorChanged();
void headerTextColorChanged();
void accentColorChanged();
- void sendReplyMessage(const QString &token, const QString &message, const QString &replyTo);
+ void sendReplyMessage(const int activityIndex, const QString &conversationToken, const QString &message, const QString &replyTo);
public slots:
void slotItemCompleted(const QString &folder, const SyncFileItemPtr &item);
void slotRefreshImmediately();
void setNotificationRefreshInterval(std::chrono::milliseconds interval);
void slotRebuildNavigationAppList();
- void slotSendReplyMessage(const QString &conversationToken, const QString &message, const QString &replyTo);
+ void slotSendReplyMessage(const int activityIndex, const QString &conversationToken, const QString &message, const QString &replyTo);
private:
void slotPushNotificationsReady();
// number of currently running notification requests. If non zero,
// no query for notifications is started.
int _notificationRequestsRunning;
- QString textSentStr;
};
class UserModel : public QAbstractListModel
AccountAppList _apps;
};
-
}
#endif // USERMODEL_H