Fix multiple issues getting identity info.
This commit is contained in:
parent
427ca3f265
commit
ca00c4fb5d
15
src/ssb.js.c
15
src/ssb.js.c
@ -399,10 +399,11 @@ static void _tf_ssb_getIdentityInfo_visit(const char* identity, void* data)
|
|||||||
identity_info_work_t* request = data;
|
identity_info_work_t* request = data;
|
||||||
request->identities = tf_resize_vec(request->identities, (request->count + 1) * sizeof(char*));
|
request->identities = tf_resize_vec(request->identities, (request->count + 1) * sizeof(char*));
|
||||||
request->names = tf_resize_vec(request->names, (request->count + 1) * sizeof(char*));
|
request->names = tf_resize_vec(request->names, (request->count + 1) * sizeof(char*));
|
||||||
request->identities[request->count] = tf_strdup(identity);
|
char buffer[k_id_base64_len];
|
||||||
|
snprintf(buffer, sizeof(buffer), "@%s", identity);
|
||||||
|
request->identities[request->count] = tf_strdup(buffer);
|
||||||
request->names[request->count] = NULL;
|
request->names[request->count] = NULL;
|
||||||
request->count++;
|
request->count++;
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _tf_ssb_getIdentityInfo_work(tf_ssb_t* ssb, void* user_data)
|
static void _tf_ssb_getIdentityInfo_work(tf_ssb_t* ssb, void* user_data)
|
||||||
@ -419,8 +420,8 @@ static void _tf_ssb_getIdentityInfo_work(tf_ssb_t* ssb, void* user_data)
|
|||||||
" RANK() OVER (PARTITION BY messages.author ORDER BY messages.sequence DESC) AS author_rank, "
|
" RANK() OVER (PARTITION BY messages.author ORDER BY messages.sequence DESC) AS author_rank, "
|
||||||
" messages.content ->> 'name' AS name "
|
" messages.content ->> 'name' AS name "
|
||||||
" FROM messages "
|
" FROM messages "
|
||||||
" JOIN identities ON messages.author = ids.value "
|
" JOIN identities ON messages.author = ('@' || identities.public_key) "
|
||||||
" WHERE WHERE identities.user = ? AND json_extract(messages.content, '$.type') = 'about' AND content ->> 'about' = messages.author AND name IS NOT NULL) "
|
" WHERE identities.user = ? AND json_extract(messages.content, '$.type') = 'about' AND content ->> 'about' = messages.author AND name IS NOT NULL) "
|
||||||
"WHERE author_rank = 1 ",
|
"WHERE author_rank = 1 ",
|
||||||
-1, &statement, NULL);
|
-1, &statement, NULL);
|
||||||
if (request->result == SQLITE_OK)
|
if (request->result == SQLITE_OK)
|
||||||
@ -428,7 +429,7 @@ static void _tf_ssb_getIdentityInfo_work(tf_ssb_t* ssb, void* user_data)
|
|||||||
if (sqlite3_bind_text(statement, 1, request->name, -1, NULL) == SQLITE_OK)
|
if (sqlite3_bind_text(statement, 1, request->name, -1, NULL) == SQLITE_OK)
|
||||||
{
|
{
|
||||||
int r = SQLITE_OK;
|
int r = SQLITE_OK;
|
||||||
while ((r = sqlite3_step(statement)) == SQLITE_OK)
|
while ((r = sqlite3_step(statement)) == SQLITE_ROW)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < request->count; i++)
|
for (int i = 0; i < request->count; i++)
|
||||||
{
|
{
|
||||||
@ -444,6 +445,10 @@ static void _tf_ssb_getIdentityInfo_work(tf_ssb_t* ssb, void* user_data)
|
|||||||
}
|
}
|
||||||
sqlite3_finalize(statement);
|
sqlite3_finalize(statement);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tf_printf("prepare failed: %s.\n", sqlite3_errmsg(db));
|
||||||
|
}
|
||||||
|
|
||||||
tf_ssb_db_identity_get_active(db, request->name, request->package_owner, request->package_name, request->active_identity, sizeof(request->active_identity));
|
tf_ssb_db_identity_get_active(db, request->name, request->package_owner, request->package_name, request->active_identity, sizeof(request->active_identity));
|
||||||
if (!*request->active_identity && request->count)
|
if (!*request->active_identity && request->count)
|
||||||
|
Loading…
Reference in New Issue
Block a user