Commit 6b641fd7 authored by Eleo Basili's avatar Eleo Basili Committed by Eleo Basili
Browse files

Issue #3281814 by eleonel: Add confirmation block when update or rebuild the model

parent 00b0acd7
Loading
Loading
Loading
Loading
+69 −46
Original line number Diff line number Diff line
@@ -118,6 +118,19 @@ class OperationForm extends FormBase {
    $preview = array_filter(explode('\n', $preview));
    $preview = $this->generateHtmlList($preview);

    if ($confirm_action = $form_state->get('confirm')) {
      $form[$model_id]['confirm'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Are you sure you want to %action this model?', [
          '%action' => $confirm_action,
        ]),
        '#required' => TRUE,
        '#description' => $this->t('Check this box to confirm that you want to %action this model.', [
          '%action' => $confirm_action,
        ]),
      ];
    }

    $form[$model_id]['update'] = [
      '#type' => 'submit',
      '#value' => $this->t('Update model'),
@@ -196,18 +209,20 @@ class OperationForm extends FormBase {
  public function rebuildCallback(array &$form, FormStateInterface $form_state) {
    $trigger = $form_state->getTriggeringElement();
    $indexToRebuild = intval(strtok($trigger['#name'], '_rebuild'));
    $values = $form_state->getValues();

    if (array_key_exists('confirm', $form[$indexToRebuild])) {
      if ($form[$indexToRebuild]['confirm']['#value']) {
        $config = $this->configFactory->get('quickchat_sync.settings');
        $sync = $config->get('sync');

        $scenario_id = $form[$indexToRebuild]['scenario_id']['#value'];
        $token = $form[$indexToRebuild]['token']['#value'];

        $response = $this->executeOperation('retrain', $scenario_id, $token);

        if ($response) {
          if ($response->getStatusCode() == 200) {
        $this->messenger()->addMessage($this->t('The knowledge base has been rebuilt on Quickchat AI.'));
            $this->messenger()->addMessage(
              $this->t('The knowledge base has been rebuilt on Quickchat AI.')
            );
          }
          else {
            $this->messenger()->addError($this->t('@error', [
@@ -215,6 +230,12 @@ class OperationForm extends FormBase {
            ]));
          }
        }
        $form_state->set('confirm', FALSE);
      }
    }
    else {
      $form_state->set('confirm', 'rebuild');
    }

    $form_state->setRebuild();
  }
@@ -227,17 +248,15 @@ class OperationForm extends FormBase {
  public function updateCallback(array &$form, FormStateInterface $form_state) {
    $trigger = $form_state->getTriggeringElement();
    $indexToRebuild = intval(strtok($trigger['#name'], '_rebuild'));
    $values = $form_state->getValues();
    if (array_key_exists('confirm', $form[$indexToRebuild])) {
      if ($form[$indexToRebuild]['confirm']['#value']) {
        $config = $this->configFactory->get('quickchat_sync.settings');
        $sync = $config->get('sync');

        $scenario_id = $form[$indexToRebuild]['scenario_id']['#value'];
        $token = $form[$indexToRebuild]['token']['#value'];

        $view_name = $form[$indexToRebuild]['view_name']['#value'];
        $view_display = $form[$indexToRebuild]['view_display']['#value'];
        $view_arguments = [];

        $args = str_replace(' ', '', $form[$indexToRebuild]['view_arguments']['#value']);

        if ($args) {
@@ -245,7 +264,6 @@ class OperationForm extends FormBase {
        }

        $html = $this->getViewHtml($view_name, $view_display, $view_arguments);

        $response = $this->executeOperation('update_knowledge_base', $scenario_id, $token, $html);

        if ($response) {
@@ -259,6 +277,11 @@ class OperationForm extends FormBase {
            ]));
          }
        }
      }
    }
    else {
      $form_state->set('confirm', 'update');
    }

    $form_state->setRebuild();
  }