From 324d2851450a69f50e45cfca6e8d219e91fa8338 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 27 Jul 2026 00:13:58 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20voice=20message=20display=20and=20playba?= =?UTF-8?q?ck=20=E2=80=94=20complete=20flow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - db_manager: getMessagesSince() now parses m.contentType from JSON (was missing) - messagelist: setVoiceMessageRoles uses data directly as payload, not re-parsed as JSON (data is already the 'd' field value extracted by db_manager) --- tools/chatgui/db/db_manager.cpp | 2 ++ tools/chatgui/src/messagelist.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/chatgui/db/db_manager.cpp b/tools/chatgui/db/db_manager.cpp index 6e764378..0bcde3a2 100644 --- a/tools/chatgui/db/db_manager.cpp +++ b/tools/chatgui/db/db_manager.cpp @@ -212,6 +212,8 @@ QList DbManager::getMessagesSince(const QString& chId, qint64 sinceI m.id = sqlite3_column_int64(stmt, 0); m.authorNodeId = (quint64)sqlite3_column_int64(stmt, 1); QByteArray jdata = colBlob(stmt, 2); + m.contentType = QString::fromUtf8(parseJsonField(jdata, "ct")); + if (m.contentType.isEmpty()) m.contentType = "text/plain"; m.data = parseJsonField(jdata, "d"); m.timestamp = sqlite3_column_int64(stmt, 3); m.datahash = 0; diff --git a/tools/chatgui/src/messagelist.cpp b/tools/chatgui/src/messagelist.cpp index 35f6d4df..8444b86e 100644 --- a/tools/chatgui/src/messagelist.cpp +++ b/tools/chatgui/src/messagelist.cpp @@ -94,7 +94,7 @@ static void setVoiceMessageRoles(QStandardItem* item, const QByteArray& data, item->setData(ct, MsgContentTypeRole); if (ct == "audio/opus") { - QString raw = parseJsonField(data, "d"); + QString raw = QString::fromUtf8(data); int pipe = raw.indexOf('|'); QString fname = pipe >= 0 ? raw.left(pipe) : raw; QString dur = pipe >= 0 ? raw.mid(pipe + 1) : QString();