Sha256: f70f1faee569f829e9a61c3c7867843b373ccec8224360af8d9c5c24259bf093

Contents?: true

Size: 1.73 KB

Versions: 9

Compression:

Stored size: 1.73 KB

Contents

import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { get } from 'foremanReact/redux/API';
import { HOST_IDS, REX_FEATURE } from './JobWizardConstants';
import './JobWizard.scss';

export const useAutoFill = ({
  fills,
  setFills,
  setSelectedTargets,
  setHostsSearchQuery,
  setJobTemplateID,
  setTemplateValues,
}) => {
  const dispatch = useDispatch();

  useEffect(() => {
    if (Object.keys(fills).length) {
      const { 'host_ids[]': hostIds, search, feature, ...rest } = { ...fills };
      setFills({});
      if (hostIds) {
        dispatch(
          get({
            key: HOST_IDS,
            url: '/api/hosts',
            params: { search: `id = ${hostIds.join(' or id = ')}` },
            handleSuccess: ({ data }) => {
              setSelectedTargets(currentTargets => ({
                ...currentTargets,
                hosts: (data.results || []).map(({ name }) => ({
                  id: name,
                  name,
                })),
              }));
            },
          })
        );
      }
      if (search) {
        setHostsSearchQuery(search);
      }
      if (feature) {
        dispatch(
          get({
            key: REX_FEATURE,
            url: `/api/remote_execution_features/${feature}`,
            handleSuccess: ({ data }) => {
              setJobTemplateID(data.job_template_id);
            },
          })
        );
        Object.keys(rest).forEach(key => {
          const re = /inputs\[(?<input>.*)\]/g;
          const input = re.exec(key)?.groups?.input;
          if (input) {
            setTemplateValues(prev => ({ ...prev, [input]: rest[key] }));
          }
        });
      }
    }
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);
};

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
foreman_remote_execution-7.2.2 webpack/JobWizard/autofill.js
foreman_remote_execution-7.2.1 webpack/JobWizard/autofill.js
foreman_remote_execution-7.2.0 webpack/JobWizard/autofill.js
foreman_remote_execution-7.1.1 webpack/JobWizard/autofill.js
foreman_remote_execution-7.1.0 webpack/JobWizard/autofill.js
foreman_remote_execution-7.0.0 webpack/JobWizard/autofill.js
foreman_remote_execution-6.2.0 webpack/JobWizard/autofill.js
foreman_remote_execution-6.1.0 webpack/JobWizard/autofill.js
foreman_remote_execution-6.0.0 webpack/JobWizard/autofill.js