From dd1073ff33c08d81ff75a39ee6b045ab00d188a5 Mon Sep 17 00:00:00 2001
From: Scott Euser <37198-scotteuser@users.noreply.drupalcode.org>
Date: Mon, 30 Sep 2024 13:13:36 +0000
Subject: [PATCH] Issue #3477767 by scott_euser: Fix issue with embedding
 strategy configuration

---
 .../backend/SearchApiAiSearchBackend.php        | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/modules/ai_search/src/Plugin/search_api/backend/SearchApiAiSearchBackend.php b/modules/ai_search/src/Plugin/search_api/backend/SearchApiAiSearchBackend.php
index 21510376e..e4bfa0adb 100644
--- a/modules/ai_search/src/Plugin/search_api/backend/SearchApiAiSearchBackend.php
+++ b/modules/ai_search/src/Plugin/search_api/backend/SearchApiAiSearchBackend.php
@@ -127,8 +127,8 @@ class SearchApiAiSearchBackend extends AiSearchBackendPluginBase implements Plug
     if (!isset($config['database_settings'])) {
       $config['database_settings'] = [];
     }
-    if (!isset($config['embeddings_strategy'])) {
-      $config['embeddings_strategy'] = NULL;
+    if (!isset($config['embedding_strategy'])) {
+      $config['embedding_strategy'] = NULL;
     }
     return $config;
   }
@@ -248,6 +248,18 @@ class SearchApiAiSearchBackend extends AiSearchBackendPluginBase implements Plug
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function setConfiguration(array $configuration) {
+    $this->configuration = $configuration + $this->defaultConfiguration();
+    if ($this->configuration['embedding_strategy_container']) {
+      $this->configuration = array_merge($this->configuration, $this->configuration['embedding_strategy_container']);
+      unset($this->configuration['embedding_strategy_container']);
+    }
+    parent::setConfiguration($this->configuration);
+  }
+
   /**
    * {@inheritdoc}
    */
@@ -278,6 +290,7 @@ class SearchApiAiSearchBackend extends AiSearchBackendPluginBase implements Plug
    * @throws \Drupal\Component\Plugin\Exception\PluginException
    */
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state): void {
+    $this->setConfiguration($form_state->getValues());
     $vdb_client = $this->vdbProviderManager->createInstance($this->configuration['database']);
     $vdb_client->submitSettingsForm($form, $form_state);
   }
-- 
GitLab