Filter Android member views and update desktop file fixtures for versioned rows

This commit is contained in:
evgeny committed 2026-11-04 00:57:49 +01:00
1 parent eb9aca7fe8
commit 235bef7f7e
3 files changed
+22 -14

No files matched your search

@@ -369,7 +369,7 @@ static void bridge_get_node_name(sqlite3* db, uint64_t node_id, const char* chan
if (!channel_id || !channel_id[0]) return;
char peers_tbl[80], sql[256];
peers_table_name(channel_id, peers_tbl, sizeof(peers_tbl));
snprintf(sql, sizeof(sql), "SELECT userinfo FROM \"%s\" WHERE node_id=?", peers_tbl);
snprintf(sql, sizeof(sql), "SELECT userinfo FROM \"%s\" WHERE node_id=? AND record_state=0", peers_tbl);
if (sqlite3_prepare_v2(db, sql, -1, &st, NULL) != SQLITE_OK) return;
sqlite3_bind_int64(st, 1, (sqlite3_int64)node_id);
if (sqlite3_step(st) == SQLITE_ROW) {
@@ -466,7 +466,7 @@ char* utun_bridge_get_channels_json(void) {
snprintf(preview, sizeof(preview), "%s: %s", author_name, body);
} else if (last_rc != SQLITE_DONE) goto failed;
sqlite3_finalize(last); last = NULL;
snprintf(sql, sizeof(sql), "SELECT node_id FROM \"%s\" WHERE admitted=1", peers_table);
snprintf(sql, sizeof(sql), "SELECT node_id FROM \"%s\" WHERE record_state=0 AND admitted=1", peers_table);
if (sqlite3_prepare_v2(db, sql, -1, &peers, NULL) != SQLITE_OK) goto failed;
int online = 0, peer_rc;
while ((peer_rc = sqlite3_step(peers)) == SQLITE_ROW) {
@@ -766,7 +766,7 @@ char* utun_bridge_get_channel_members_json(const char* channel_id) {
"COALESCE(p.node_type,0),COALESCE(p.node_RTT,0),COALESCE(p.storage,0),COALESCE(p.userinfo,''),"
"p.source,length(p.adm_tags_sig),COALESCE(p.deleted,0),p.radio_muted"
" FROM \"%s\" p LEFT JOIN nodes n ON p.node_id=n.node_id"
" WHERE p.admitted=1 OR p.source!=0 OR p.deleted!=0 ORDER BY p.node_id ASC", peers_tbl);
" WHERE p.record_state=0 AND (p.admitted=1 OR p.source!=0 OR p.deleted!=0) ORDER BY p.node_id ASC", peers_tbl);
struct strbuf out = strbuf_new();
sqlite3_stmt* st = NULL;
int rc = sqlite3_prepare_v2(db, sql, -1, &st, NULL);
@@ -868,8 +868,8 @@ char* utun_bridge_get_member_detail_json(const char* channel_id, uint64_t node_i
char sql[512];
snprintf(sql, sizeof(sql),
"SELECT p.signed_by, length(p.signature), p.source, COALESCE(NULLIF(i.local_nick,''),n.name,'')"
" FROM \"%s\" p LEFT JOIN \"%s\" i ON i.node_id=p.signed_by"
" LEFT JOIN nodes n ON n.node_id=p.signed_by WHERE p.node_id=?", peers_tbl, peers_tbl);
" FROM \"%s\" p LEFT JOIN \"%s\" i ON i.node_id=p.signed_by AND i.record_state=0"
" LEFT JOIN nodes n ON n.node_id=p.signed_by WHERE p.node_id=? AND p.record_state=0", peers_tbl, peers_tbl);
int rc = sqlite3_prepare_v2(db, sql, -1, &st, NULL);
if (rc == SQLITE_OK) rc = sqlite3_bind_int64(st, 1, (sqlite3_int64)node_id);
if (rc == SQLITE_OK) rc = sqlite3_step(st);
@@ -966,7 +966,7 @@ void utun_bridge_set_member_nick(const char* channel_id, uint64_t node_id, const
char peers_tbl[80]; peers_table_name(channel_id, peers_tbl, sizeof(peers_tbl));
char sql[256];
snprintf(sql, sizeof(sql), "UPDATE \"%s\" SET local_nick=? WHERE node_id=?", peers_tbl);
snprintf(sql, sizeof(sql), "UPDATE \"%s\" SET local_nick=? WHERE node_id=? AND record_state=0", peers_tbl);
sqlite3_stmt* st = NULL;
int rc = sqlite3_prepare_v2(db, sql, -1, &st, NULL);
@@ -132,7 +132,8 @@ private slots:
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);"
"INSERT INTO accounts VALUES(22,'Me'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);",
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;",
nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22);
{
@@ -370,7 +371,8 @@ private slots:
"INSERT INTO accounts VALUES(11,'Other'),(22,'Me'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(11,'{}',NULL,0,0),(22,'{}',NULL,0,0),"
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);", nullptr, nullptr, nullptr), SQLITE_OK);
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;", nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22);
{
MemberFileBrowser browser(&db); browser.setChannel("42", 22); browser.show(); browser.activateWindow();
@@ -451,7 +453,8 @@ private slots:
"INSERT INTO accounts VALUES(11,'Other'),(22,'Me'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(11,'{}',NULL,0,0),(22,'{}',NULL,0,0),"
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);", nullptr, nullptr, nullptr), SQLITE_OK);
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;", nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22); QString exported;
{
MemberFileBrowser browser(&db); browser.setChannel("42", 11); browser.show();
@@ -536,7 +539,8 @@ private slots:
"INSERT INTO accounts VALUES(11,'Other'),(22,'Me'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(11,'{}',NULL,0,0),(22,'{}',NULL,0,0),"
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);", nullptr, nullptr, nullptr), SQLITE_OK);
"(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;", nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22);
QTemporaryDir dir; QVERIFY(dir.isValid()); QString path = dir.filePath("dropped.txt");
{ QFile file(path); QVERIFY(file.open(QIODevice::WriteOnly)); QCOMPARE(file.write("test"), 4LL); }
@@ -623,7 +627,8 @@ private slots:
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);"
"INSERT INTO accounts VALUES(22,'Me'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);",
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;",
nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22);
QTemporaryDir dir; QVERIFY(dir.isValid()); QStringList paths;
@@ -684,7 +689,8 @@ private slots:
"INSERT INTO accounts VALUES(11,'Author'),(22,'Reader'),(33,'Server');"
"CREATE TABLE peers_42(node_id INTEGER,storage INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(11,0,'{}',NULL,0,0),(22,0,'{}',NULL,0,0),"
"(33,0,'{\"storage\":\"yes\"}',zeroblob(64),0,0);", nullptr, nullptr, nullptr), SQLITE_OK);
"(33,0,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;", nullptr, nullptr, nullptr), SQLITE_OK);
DbManager db; db.setDb(sql); db.setMyNodeId(22);
{
MemberFileBrowser browser(&db); browser.setChannel("42", 11);
@@ -243,7 +243,8 @@ private slots:
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);"
"INSERT INTO accounts VALUES(22,'Me'),(33,'Storage');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);",
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;",
nullptr, nullptr, nullptr), SQLITE_OK);
db.setDb(sql); db.setMyNodeId(22);
MemberFileBrowser browser(&db); activeBrowser = &browser;
@@ -292,7 +293,8 @@ private slots:
QCOMPARE(sqlite3_exec(sql, "CREATE TABLE accounts(node_id INTEGER,display_name TEXT);"
"INSERT INTO accounts VALUES(22,'Me'),(33,'Storage');"
"CREATE TABLE peers_42(node_id INTEGER,adm_tags TEXT,adm_tags_sig BLOB,deleted INTEGER,source INTEGER);"
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);",
"INSERT INTO peers_42 VALUES(22,'{}',NULL,0,0),(33,'{\"storage\":\"yes\"}',zeroblob(64),0,0);"
"ALTER TABLE peers_42 ADD COLUMN record_state INTEGER NOT NULL DEFAULT 0;",
nullptr, nullptr, nullptr), SQLITE_OK);
db.setDb(sql); db.setMyNodeId(22);
MemberFileBrowser browser(&db); activeBrowser = &browser; browser.setChannel("42", 22);