aboutsummaryrefslogtreecommitdiff
path: root/src/Routes/Settings.c
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-08-12 20:21:12 -0400
committerfrosty <gabriel@bwaaa.monster>2026-08-12 20:21:12 -0400
commita20a9e8878ab6708bd3e3ecb4b1cee8728436dd0 (patch)
treec007b81d99b2dc3be92ae625e34881b0f7cf6943 /src/Routes/Settings.c
parent10d44e7ff547a806e4bf109e7aadd48488ddc9f0 (diff)
downloadomnisearch-a20a9e8878ab6708bd3e3ecb4b1cee8728436dd0.tar.gz
feat: add default search engine option
Diffstat (limited to 'src/Routes/Settings.c')
-rw-r--r--src/Routes/Settings.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Routes/Settings.c b/src/Routes/Settings.c
index eb3072b..05325e8 100644
--- a/src/Routes/Settings.c
+++ b/src/Routes/Settings.c
@@ -34,6 +34,14 @@ int settings_handler(UrlParams *params) {
int user_engine_count = 0;
int has_user_pref =
(get_user_engines(&user_engines, &user_engine_count) == 0);
+ char *default_engine = get_default_search_engine();
+
+ if (strcmp(default_engine, "all") != 0 && has_user_pref &&
+ !user_engines_contains(default_engine, user_engines,
+ user_engine_count)) {
+ free(default_engine);
+ default_engine = strdup("all");
+ }
int enabled_count = 0;
for (int i = 0; i < ENGINE_COUNT; i++) {
@@ -63,11 +71,13 @@ int settings_handler(UrlParams *params) {
}
}
- engine_data[idx] = malloc(sizeof(char *) * 3);
+ engine_data[idx] = malloc(sizeof(char *) * 4);
engine_data[idx][0] = (char *)ENGINE_REGISTRY[i].id;
engine_data[idx][1] = (char *)ENGINE_REGISTRY[i].name;
engine_data[idx][2] = is_selected ? "checked" : "";
- engine_inner[idx] = 3;
+ engine_data[idx][3] =
+ strcmp(default_engine, ENGINE_REGISTRY[i].id) == 0 ? "selected" : "";
+ engine_inner[idx] = 4;
idx++;
}
@@ -78,6 +88,7 @@ int settings_handler(UrlParams *params) {
context_set(&ctx, "query", query);
context_set(&ctx, "theme", theme);
context_set(&ctx, "locale", locale);
+ context_set(&ctx, "default_engine", default_engine);
context_set_array_of_arrays(&ctx, "locales", locale_data, locale_count,
inner_counts);
@@ -132,6 +143,7 @@ int settings_handler(UrlParams *params) {
send_response(rendered_html);
free(rendered_html);
+ free(default_engine);
free(theme);
free(locale);
free_context(&ctx);