summaryrefslogtreecommitdiff
path: root/src/administration_reader.cpp
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@mailbox.org>2026-01-09 11:45:12 +0100
committerAldrik Ramaekers <aldrik@mailbox.org>2026-01-09 11:45:12 +0100
commita65e876f3277a7d7fca6e5129ac3e200dae2d0dc (patch)
tree3d777dca9e07bf1fbd4a8641e1a4719094ac7789 /src/administration_reader.cpp
parent8bdab613289e2626173de8bff31e7078dd03a16e (diff)
save all ai service configs
Diffstat (limited to 'src/administration_reader.cpp')
-rw-r--r--src/administration_reader.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/administration_reader.cpp b/src/administration_reader.cpp
index a5f2449..0b5c233 100644
--- a/src/administration_reader.cpp
+++ b/src/administration_reader.cpp
@@ -460,11 +460,34 @@ bool administration_reader::import_administration_info(char* buffer, size_t buff
administration::set_next_id(xml_get_s32(root, "NextId"));
administration::set_next_sequence_number(xml_get_s32(root, "NextSequenceNumber"));
- ai_service ai_service;
- ai_service.provider = (ai_provider)xml_get_s32_x(root, "AIService", "Provider", 0);
- xml_get_str_x(root, ai_service.api_key_public, MAX_LEN_API_KEY, "AIService", "PublicKey", 0);
- xml_get_str_x(root, ai_service.model_name, MAX_LEN_SHORT_DESC, "AIService", "Model", 0);
- administration::set_ai_service(ai_service);
+ { // Load AI services.
+ xml_node* ai_service_root = xml_easy_child(root, (uint8_t *)"AIServices", 0);
+
+ ai_service active_ai_service;
+ active_ai_service.provider = (ai_provider)xml_get_s32_x(ai_service_root, "Provider", 0);
+
+ size_t ai_service_count = xml_node_children(ai_service_root);
+ for (size_t x = 0; x < ai_service_count; x++)
+ {
+ xml_node* child = xml_node_child(ai_service_root, x);
+
+ char* child_name = (char*)xml_easy_name(child);
+ if (strops::equals(child_name, "AIService"))
+ {
+ ai_service service;
+ service.provider = (ai_provider)xml_get_s32_x(child, "Provider", 0);
+ xml_get_str_x(child, service.api_key_public, MAX_LEN_API_KEY, "PublicKey", 0);
+ xml_get_str_x(child, service.model_name, MAX_LEN_SHORT_DESC, "Model", 0);
+
+ administration::import_ai_service(service);
+ }
+
+ memops::unalloc(child_name);
+ }
+
+ active_ai_service = administration::get_ai_service(active_ai_service.provider);
+ administration::set_active_ai_service(active_ai_service);
+ }
email_service email_service;
email_service.provider = (email_provider)xml_get_s32_x(root, "EmailService", "Provider", 0);