From a65e876f3277a7d7fca6e5129ac3e200dae2d0dc Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Fri, 9 Jan 2026 11:45:12 +0100 Subject: save all ai service configs --- src/administration_reader.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/administration_reader.cpp') 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); -- cgit v1.2.3-70-g09d2