mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
fix(history): select broken messages from History, track in ChatLogMessage
This commit is contained in:
parent
cd75618e38
commit
f6a15366ef
|
@ -29,6 +29,7 @@
|
|||
struct ChatLogMessage
|
||||
{
|
||||
bool isComplete;
|
||||
bool isBroken;
|
||||
Message message;
|
||||
};
|
||||
|
||||
|
|
|
@ -641,12 +641,13 @@ QList<History::HistMessage> History::getMessagesForFriend(const ToxPk& friendPk,
|
|||
"message, file_transfers.file_restart_id, "
|
||||
"file_transfers.file_path, file_transfers.file_name, "
|
||||
"file_transfers.file_size, file_transfers.direction, "
|
||||
"file_transfers.file_state FROM history "
|
||||
"file_transfers.file_state, broken_messages.id FROM history "
|
||||
"LEFT JOIN faux_offline_pending ON history.id = faux_offline_pending.id "
|
||||
"JOIN peers chat ON history.chat_id = chat.id "
|
||||
"JOIN aliases ON sender_alias = aliases.id "
|
||||
"JOIN peers sender ON aliases.owner = sender.id "
|
||||
"LEFT JOIN file_transfers ON history.file_id = file_transfers.id "
|
||||
"LEFT JOIN broken_messages ON history.id = broken_messages.id "
|
||||
"WHERE chat.public_key='%1' "
|
||||
"LIMIT %2 OFFSET %3;")
|
||||
.arg(friendPk.toString())
|
||||
|
@ -662,8 +663,9 @@ QList<History::HistMessage> History::getMessagesForFriend(const ToxPk& friendPk,
|
|||
auto friend_key = row[3].toString();
|
||||
auto display_name = QString::fromUtf8(row[4].toByteArray().replace('\0', ""));
|
||||
auto sender_key = row[5].toString();
|
||||
auto isBroken = !row[13].isNull();
|
||||
if (row[7].isNull()) {
|
||||
messages += {id, isPending, timestamp, friend_key,
|
||||
messages += {id, isPending, isBroken, timestamp, friend_key,
|
||||
display_name, sender_key, row[6].toString()};
|
||||
} else {
|
||||
ToxFile file;
|
||||
|
@ -675,7 +677,7 @@ QList<History::HistMessage> History::getMessagesForFriend(const ToxPk& friendPk,
|
|||
file.direction = static_cast<ToxFile::FileDirection>(row[11].toLongLong());
|
||||
file.status = static_cast<ToxFile::FileStatus>(row[12].toInt());
|
||||
messages +=
|
||||
{id, isPending, timestamp, friend_key, display_name, sender_key, file};
|
||||
{id, isPending, isBroken, timestamp, friend_key, display_name, sender_key, file};
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -688,12 +690,13 @@ QList<History::HistMessage> History::getUndeliveredMessagesForFriend(const ToxPk
|
|||
{
|
||||
auto queryText =
|
||||
QString("SELECT history.id, faux_offline_pending.id, timestamp, chat.public_key, "
|
||||
"aliases.display_name, sender.public_key, message "
|
||||
"aliases.display_name, sender.public_key, message, broken_messages.id "
|
||||
"FROM history "
|
||||
"JOIN faux_offline_pending ON history.id = faux_offline_pending.id "
|
||||
"JOIN peers chat on history.chat_id = chat.id "
|
||||
"JOIN aliases on sender_alias = aliases.id "
|
||||
"JOIN peers sender on aliases.owner = sender.id "
|
||||
"LEFT JOIN broken_messages ON history.id = broken_messages.id "
|
||||
"WHERE chat.public_key='%1';")
|
||||
.arg(friendPk.toString());
|
||||
|
||||
|
@ -707,7 +710,8 @@ QList<History::HistMessage> History::getUndeliveredMessagesForFriend(const ToxPk
|
|||
auto friend_key = row[3].toString();
|
||||
auto display_name = QString::fromUtf8(row[4].toByteArray().replace('\0', ""));
|
||||
auto sender_key = row[5].toString();
|
||||
ret += {id, isPending, timestamp, friend_key,
|
||||
auto isBroken = !row[7].isNull();
|
||||
ret += {id, isPending, isBroken, timestamp, friend_key,
|
||||
display_name, sender_key, row[6].toString()};
|
||||
};
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ class History : public QObject, public std::enable_shared_from_this<History>
|
|||
public:
|
||||
struct HistMessage
|
||||
{
|
||||
HistMessage(RowId id, bool isPending, QDateTime timestamp, QString chat, QString dispName,
|
||||
HistMessage(RowId id, bool isPending, bool isBroken, QDateTime timestamp, QString chat, QString dispName,
|
||||
QString sender, QString message)
|
||||
: chat{chat}
|
||||
, sender{sender}
|
||||
|
@ -119,10 +119,11 @@ public:
|
|||
, timestamp{timestamp}
|
||||
, id{id}
|
||||
, isPending{isPending}
|
||||
, isBroken{isBroken}
|
||||
, content(std::move(message))
|
||||
{}
|
||||
|
||||
HistMessage(RowId id, bool isPending, QDateTime timestamp, QString chat, QString dispName,
|
||||
HistMessage(RowId id, bool isPending, bool isBroken, QDateTime timestamp, QString chat, QString dispName,
|
||||
QString sender, ToxFile file)
|
||||
: chat{chat}
|
||||
, sender{sender}
|
||||
|
@ -130,6 +131,7 @@ public:
|
|||
, timestamp{timestamp}
|
||||
, id{id}
|
||||
, isPending{isPending}
|
||||
, isBroken{isBroken}
|
||||
, content(std::move(file))
|
||||
{}
|
||||
|
||||
|
@ -140,6 +142,7 @@ public:
|
|||
QDateTime timestamp;
|
||||
RowId id;
|
||||
bool isPending;
|
||||
bool isBroken;
|
||||
HistMessageContent content;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user