diff --git a/applications/system/js_app/modules/js_gui/icon.c b/applications/system/js_app/modules/js_gui/icon.c index 4b7926ba1..72db62f76 100644 --- a/applications/system/js_app/modules/js_gui/icon.c +++ b/applications/system/js_app/modules/js_gui/icon.c @@ -1,28 +1,16 @@ #include "../../js_modules.h" #include -typedef struct { - const char* name; - const Icon* data; -} IconDefinition; - -#define ICON_DEF(icon) \ - (IconDefinition) { \ - .name = #icon, .data = &I_##icon \ - } - -static const IconDefinition builtin_icons[] = { - ICON_DEF(DolphinWait_59x54), - ICON_DEF(js_script_10px), -}; - static void js_gui_icon_get_builtin(struct mjs* mjs) { const char* icon_name; JS_FETCH_ARGS_OR_RETURN(mjs, JS_EXACTLY, JS_ARG_STR(&icon_name)); - for(size_t i = 0; i < COUNT_OF(builtin_icons); i++) { - if(strcmp(icon_name, builtin_icons[i].name) == 0) { - mjs_return(mjs, mjs_mk_foreign(mjs, (void*)builtin_icons[i].data)); + for(size_t i = 0; i < ICON_PATHS_COUNT; i++) { + if(ICON_PATHS[i].path == NULL) continue; + const char* iter_name = strrchr(ICON_PATHS[i].path, '/'); + if(iter_name++ == NULL) continue; + if(strcmp(icon_name, iter_name) == 0) { + mjs_return(mjs, mjs_mk_foreign(mjs, (void*)ICON_PATHS[i].icon)); return; } } diff --git a/applications/system/js_app/packages/fz-sdk/gui/icon.d.ts b/applications/system/js_app/packages/fz-sdk/gui/icon.d.ts index 577e1e6a9..30f6dbc2f 100644 --- a/applications/system/js_app/packages/fz-sdk/gui/icon.d.ts +++ b/applications/system/js_app/packages/fz-sdk/gui/icon.d.ts @@ -1,4 +1,4 @@ -export type BuiltinIcon = "DolphinWait_59x54" | "js_script_10px"; +export type BuiltinIcon = string; export type IconData = symbol & { "__tag__": "icon" }; // introducing a nominal type in a hacky way; the `__tag__` property doesn't really exist.