diff options
| author | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 11:45:12 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@mailbox.org> | 2026-01-09 11:45:12 +0100 |
| commit | a65e876f3277a7d7fca6e5129ac3e200dae2d0dc (patch) | |
| tree | 3d777dca9e07bf1fbd4a8641e1a4719094ac7789 /src/administration_reader.cpp | |
| parent | 8bdab613289e2626173de8bff31e7078dd03a16e (diff) | |
save all ai service configs
Diffstat (limited to 'src/administration_reader.cpp')
| -rw-r--r-- | src/administration_reader.cpp | 33 |
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); |
