Read group avatar metadata separately from image bytes

This commit is contained in:
evgeny committed 2026-10-06 13:43:49 +02:00
1 parent 56897368b3
commit a816b842e5
3 files changed
+19 -4

No files matched your search

+13 -1
View File
@@ -113,7 +113,7 @@ QList<ChannelRow> DbManager::getChannels(ChannelSortMode sort) const {
char sql[512]; snprintf(sql, sizeof(sql),
"SELECT channel_id, name, owner_node_id,"
" x25519_pubkey, x25519_privkey, ed25519_pubkey, ed25519_privkey, signature,"
" last_read_msg_id, last_pos_msg_id, last_msg_at, created_at"
" last_read_msg_id, last_pos_msg_id, last_msg_at, created_at,avatar_version,avatar_hash"
" FROM channels%s", orderBy);
sqlite3_stmt* stmt = prepareOrNull(sql);
if (!stmt) return list;
@@ -131,6 +131,8 @@ QList<ChannelRow> DbManager::getChannels(ChannelSortMode sort) const {
r.lastPosMsgId = sqlite3_column_int64(stmt, 9);
r.lastMsgAt = sqlite3_column_int64(stmt, 10);
r.createdAt = sqlite3_column_int64(stmt, 11);
r.avatarVersion = (quint64)sqlite3_column_int64(stmt, 12);
r.avatarHash = colBlob(stmt, 13);
list.append(r);
}
sqlite3_finalize(stmt);
@@ -144,6 +146,16 @@ QList<ChannelRow> DbManager::getChannels(ChannelSortMode sort) const {
return list;
}
QByteArray DbManager::getChannelAvatar(const QString& channelId) const {
sqlite3_stmt* st = prepareOrNull("SELECT avatar_data FROM channels WHERE channel_id=?"); if (!st) return {};
const QByteArray id = channelId.toLatin1(); sqlite3_bind_text(st, 1, id.constData(), id.size(), SQLITE_TRANSIENT);
QByteArray bytes;
int rc = sqlite3_step(st);
if (rc == SQLITE_ROW) bytes = colBlob(st, 0);
else if (rc != SQLITE_DONE) GUI_ERROR("group avatar: database read failed channel=%s rc=%d", qPrintable(channelId), rc);
sqlite3_finalize(st); return bytes;
}
bool DbManager::isChannelMember(const QString& chId, quint64 nodeId) const {
const QByteArray sql = QStringLiteral("SELECT 1 FROM \"%1\" WHERE node_id=?").arg(peersTableName(chId)).toUtf8();
sqlite3_stmt* statement = prepareOrNull(sql.constData());