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