summaryrefslogtreecommitdiff
path: root/src/administration_writer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/administration_writer.cpp')
-rw-r--r--src/administration_writer.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/administration_writer.cpp b/src/administration_writer.cpp
index da9ee77..c1637f4 100644
--- a/src/administration_writer.cpp
+++ b/src/administration_writer.cpp
@@ -921,10 +921,35 @@ bool administration_writer::save_administration_info_blocking()
strops::replace_int32(file_content, buf_length, "{{NEXT_SEQUENCE_NUMBER}}", administration::get_next_sequence_number());
strops::replace(file_content, buf_length, "{{PROGRAM_VERSION}}", config::PROGRAM_VERSION);
- ai_service ai_service = administration::get_ai_service();
- strops::replace_int32(file_content, buf_length, "{{AI_SERVICE_PROVIDER}}", (s32)ai_service.provider);
- strops::replace(file_content, buf_length, "{{AI_SERVICE_PUBLIC_KEY}}", ai_service.api_key_public);
- strops::replace(file_content, buf_length, "{{AI_SERVICE_MODEL}}", ai_service.model_name);
+ ai_service active_ai_service = administration::get_active_ai_service();
+ strops::replace_int32(file_content, buf_length, "{{ACTIVE_AI_SERVICE_PROVIDER}}", (s32)active_ai_service.provider);
+
+ {
+ u32 ai_service_list_buffer_size = (u32)(strops::length(file_template::ai_service_template) + 1000) * AI_PROVIDER_END; // @TODO
+ char* ai_service_list_buffer = (char*)memops::alloc(ai_service_list_buffer_size);
+ memops::zero(ai_service_list_buffer, ai_service_list_buffer_size);
+ u32 ai_service_list_buffer_cursor = 0;
+
+ for (u32 i = 0; i < AI_PROVIDER_END; i++)
+ {
+ int buf_length = 0;
+ char* file_content = copy_template(file_template::ai_service_template, &buf_length);
+
+ ai_service service = administration::get_ai_service((ai_provider)i);
+ strops::replace_int32(file_content, buf_length, "{{AI_SERVICE_PROVIDER}}", i);
+ strops::replace(file_content, buf_length, "{{AI_SERVICE_KEY}}", service.api_key_public);
+ strops::replace(file_content, buf_length, "{{AI_SERVICE_MODEL}}", service.model_name);
+
+ u32 content_len = (u32)strops::length(file_content);
+ memops::copy(ai_service_list_buffer+ai_service_list_buffer_cursor, file_content, content_len);
+
+ ai_service_list_buffer_cursor += content_len;
+ }
+
+ strops::replace(file_content, buf_length, "{{AI_SERVICE_LIST}}", ai_service_list_buffer);
+ memops::unalloc(ai_service_list_buffer);
+ }
+
email_service email_service = administration::get_email_service();
strops::replace_int32(file_content, buf_length, "{{EMAIL_SERVICE_PROVIDER}}", (s32)email_service.provider);