core: Minor simplification around getting account name.
Some checks failed
Build Tilde Friends / Build-Docs (push) Successful in 2m33s
Build Tilde Friends / Build-All (push) Failing after 3m24s

This commit is contained in:
2025-12-09 20:30:09 -05:00
parent 33392e7c55
commit 8f9824e9b7

View File

@@ -97,40 +97,37 @@ static void _tf_api_core_apps_after_work(tf_ssb_t* ssb, int status, void* user_d
tf_free(work); tf_free(work);
} }
static const char* _tf_ssb_get_process_credentials_session_name(JSContext* context, JSValue process)
{
JSValue credentials = JS_IsObject(process) ? JS_GetPropertyStr(context, process, "credentials") : JS_UNDEFINED;
JSValue session = JS_IsObject(credentials) ? JS_GetPropertyStr(context, credentials, "session") : JS_UNDEFINED;
JSValue name_value = JS_IsObject(session) ? JS_GetPropertyStr(context, session, "name") : JS_UNDEFINED;
const char* result = JS_IsString(name_value) ? JS_ToCString(context, name_value) : NULL;
JS_FreeValue(context, name_value);
JS_FreeValue(context, session);
JS_FreeValue(context, credentials);
return result;
}
static JSValue _tf_api_core_apps(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv, int magic, JSValue* data) static JSValue _tf_api_core_apps(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv, int magic, JSValue* data)
{ {
JSValue result = JS_UNDEFINED; JSValue result = JS_UNDEFINED;
JSValue user = argv[0]; JSValue user = argv[0];
JSValue process = data[0]; JSValue process = data[0];
const char* user_string = JS_IsString(user) ? JS_ToCString(context, user) : NULL; const char* user_string = JS_IsString(user) ? JS_ToCString(context, user) : NULL;
const char* session_name_string = _tf_ssb_get_process_credentials_session_name(context, process);
if (JS_IsObject(process)) if (user_string && session_name_string && strcmp(user_string, session_name_string) && strcmp(user_string, "core"))
{ {
JSValue credentials = JS_GetPropertyStr(context, process, "credentials"); JS_FreeCString(context, user_string);
if (JS_IsObject(credentials)) user_string = NULL;
{
JSValue session = JS_GetPropertyStr(context, credentials, "session");
if (JS_IsObject(session))
{
JSValue session_name = JS_GetPropertyStr(context, session, "name");
const char* session_name_string = JS_IsString(session_name) ? JS_ToCString(context, session_name) : NULL;
if (user_string && session_name_string && strcmp(user_string, session_name_string) && strcmp(user_string, "core"))
{
JS_FreeCString(context, user_string);
user_string = NULL;
}
else if (!user_string)
{
user_string = session_name_string;
session_name_string = NULL;
}
JS_FreeCString(context, session_name_string);
JS_FreeValue(context, session_name);
}
JS_FreeValue(context, session);
}
JS_FreeValue(context, credentials);
} }
else if (!user_string)
{
user_string = session_name_string;
session_name_string = NULL;
}
JS_FreeCString(context, session_name_string);
if (user_string) if (user_string)
{ {
@@ -380,26 +377,12 @@ static void _tf_api_core_permissions_granted_after_work(tf_ssb_t* ssb, int statu
JS_FreeValue(context, result); JS_FreeValue(context, result);
JS_FreeValue(context, work->promise[0]); JS_FreeValue(context, work->promise[0]);
JS_FreeValue(context, work->promise[1]); JS_FreeValue(context, work->promise[1]);
tf_free((void*)work->user); JS_FreeCString(context, work->user);
tf_free((void*)work->package_owner); tf_free((void*)work->package_owner);
tf_free((void*)work->package_name); tf_free((void*)work->package_name);
tf_free(work); tf_free(work);
} }
static const char* _tf_ssb_get_process_credentials_session_name(JSContext* context, JSValue process)
{
JSValue credentials = JS_IsObject(process) ? JS_GetPropertyStr(context, process, "credentials") : JS_UNDEFINED;
JSValue session = JS_IsObject(credentials) ? JS_GetPropertyStr(context, credentials, "session") : JS_UNDEFINED;
JSValue name_value = JS_IsObject(session) ? JS_GetPropertyStr(context, session, "name") : JS_UNDEFINED;
const char* name = JS_IsString(name_value) ? JS_ToCString(context, name_value) : NULL;
const char* result = tf_strdup(name);
JS_FreeCString(context, name);
JS_FreeValue(context, name_value);
JS_FreeValue(context, session);
JS_FreeValue(context, credentials);
return result;
}
static JSValue _tf_api_core_permissionsGranted(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv, int magic, JSValue* data) static JSValue _tf_api_core_permissionsGranted(JSContext* context, JSValueConst this_val, int argc, JSValueConst* argv, int magic, JSValue* data)
{ {
tf_task_t* task = tf_task_get(context); tf_task_t* task = tf_task_get(context);
@@ -508,7 +491,7 @@ static JSValue _tf_ssb_getActiveIdentity(JSContext* context, JSValueConst this_v
.package_name = tf_strdup(package_name), .package_name = tf_strdup(package_name),
}; };
JSValue result = JS_NewPromiseCapability(context, work->promise); JSValue result = JS_NewPromiseCapability(context, work->promise);
tf_free((void*)name); JS_FreeCString(context, name);
JS_FreeCString(context, package_owner); JS_FreeCString(context, package_owner);
JS_FreeCString(context, package_name); JS_FreeCString(context, package_name);
@@ -611,7 +594,7 @@ static JSValue _tf_ssb_getIdentities(JSContext* context, JSValueConst this_val,
.context = context, .context = context,
}; };
memcpy(work->user, user, user_length + 1); memcpy(work->user, user, user_length + 1);
tf_free((void*)user); JS_FreeCString(context, user);
result = JS_NewPromiseCapability(context, work->promise); result = JS_NewPromiseCapability(context, work->promise);
tf_ssb_run_work(ssb, _tf_ssb_get_identities_work, _tf_ssb_get_identities_after_work, work); tf_ssb_run_work(ssb, _tf_ssb_get_identities_work, _tf_ssb_get_identities_after_work, work);
@@ -838,7 +821,7 @@ static void _tf_ssb_modify_block_after_work(tf_ssb_t* ssb, int status, void* use
JS_FreeValue(context, request->promise[0]); JS_FreeValue(context, request->promise[0]);
JS_FreeValue(context, request->promise[1]); JS_FreeValue(context, request->promise[1]);
JS_FreeValue(context, request->result); JS_FreeValue(context, request->result);
tf_free((void*)request->user); JS_FreeCString(context, request->user);
tf_free(request); tf_free(request);
} }
@@ -1225,7 +1208,7 @@ static JSValue _tf_ssb_swap_with_server_identity(JSContext* context, JSValueCons
snprintf(description, sizeof(description), "Swap identity %s with %s.", work->user_id, work->server_id); snprintf(description, sizeof(description), "Swap identity %s with %s.", work->user_id, work->server_id);
_tf_ssb_permission_test(context, data[0], "delete_user", description, _tf_ssb_swap_with_server_identity_permission_callback, work); _tf_ssb_permission_test(context, data[0], "delete_user", description, _tf_ssb_swap_with_server_identity_permission_callback, work);
JS_FreeCString(context, id); JS_FreeCString(context, id);
tf_free((void*)user); JS_FreeCString(context, user);
return result; return result;
} }