diff options
| author | frosty <gabriel@bwaaa.monster> | 2026-08-16 23:45:43 -0400 |
|---|---|---|
| committer | frosty <gabriel@bwaaa.monster> | 2026-08-16 23:45:43 -0400 |
| commit | e352971bc59c356886f57d97d01ce195c3b0d952 (patch) | |
| tree | ebadb7b28802a2c8396935fe8756931d0038127f /src/Routes/SettingsSave.c | |
| parent | 499bb9b1268cd422619efdc46889960425462aae (diff) | |
| parent | 12f046669e6a9ebd5e9d47ccf0ddd265fcdcdd18 (diff) | |
| download | omnisearch-e352971bc59c356886f57d97d01ce195c3b0d952.tar.gz | |
Merge branch 'indev'
Diffstat (limited to 'src/Routes/SettingsSave.c')
| -rw-r--r-- | src/Routes/SettingsSave.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Routes/SettingsSave.c b/src/Routes/SettingsSave.c index cacff50..3cbb1d6 100644 --- a/src/Routes/SettingsSave.c +++ b/src/Routes/SettingsSave.c @@ -10,6 +10,8 @@ int settings_save_handler(UrlParams *params) { const char *theme = ""; const char *locale = ""; const char *query = ""; + const char *default_engine = "all"; + int default_engine_present = 0; int engines_present = 0; char selected_ids[ENGINE_COUNT][32]; int selected_count = 0; @@ -22,6 +24,9 @@ int settings_save_handler(UrlParams *params) { locale = params->params[i].value; } else if (strcmp(params->params[i].key, "q") == 0) { query = params->params[i].value; + } else if (strcmp(params->params[i].key, "default_engine") == 0) { + default_engine = params->params[i].value; + default_engine_present = 1; } else if (strcmp(params->params[i].key, "engines_present") == 0) { engines_present = 1; } else if (strncmp(params->params[i].key, "engine_", 7) == 0 && @@ -58,6 +63,31 @@ int settings_save_handler(UrlParams *params) { false, false); } + if (default_engine_present) { + const char *validated_default = "all"; + + for (int i = 0; i < ENGINE_COUNT; i++) { + if (!ENGINE_REGISTRY[i].enabled || + strcmp(default_engine, ENGINE_REGISTRY[i].id) != 0) + continue; + + int selected = !engines_present; + for (int j = 0; j < selected_count; j++) { + if (strcmp(selected_ids[j], ENGINE_REGISTRY[i].id) == 0) { + selected = 1; + break; + } + } + + if (selected) + validated_default = ENGINE_REGISTRY[i].id; + break; + } + + set_cookie("default_engine", validated_default, + "Fri, 31 Dec 2038 23:59:59 GMT", "/", false, false); + } + char redirect_url[512]; snprintf(redirect_url, sizeof(redirect_url), "/settings?q=%s", query); send_redirect(redirect_url); |
