Skip to content

Commit

Permalink
fix fields connector when you need to hide service-now sir
Browse files Browse the repository at this point in the history
  • Loading branch information
XavierM committed Mar 1, 2021
1 parent 8909476 commit 77bad4e
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import React, { useMemo } from 'react';
import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiSuperSelect } from '@elastic/eui';
import styled from 'styled-components';

import { ConnectorTypes } from '../../../../../case/common/api';
import { ActionConnector } from '../../containers/configure/types';
import { connectorsConfiguration } from '../connectors';
import * as i18n from './translations';
Expand Down Expand Up @@ -67,7 +68,7 @@ const ConnectorsDropdownComponent: React.FC<Props> = ({
const connectorsAsOptions = useMemo(() => {
const connectorsFormatted = connectors.reduce(
(acc, connector) => {
if (hideConnectorServiceNowSir && connector.actionTypeId === '.servicenow-sir') {
if (hideConnectorServiceNowSir && connector.actionTypeId === ConnectorTypes.serviceNowSIR) {
return acc;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import React, { memo, useCallback } from 'react';
import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui';

import { ConnectorTypes } from '../../../../../case/common/api';
import { UseField, useFormData, FieldHook, useFormContext } from '../../../shared_imports';
import { useConnectors } from '../../containers/configure/use_connectors';
import { ConnectorSelector } from '../connector_selector/form';
Expand All @@ -25,13 +26,25 @@ interface ConnectorsFieldProps {
connectors: ActionConnector[];
field: FieldHook<FormProps['fields']>;
isEdit: boolean;
hideConnectorServiceNowSir?: boolean;
}

const ConnectorFields = ({ connectors, isEdit, field }: ConnectorsFieldProps) => {
const ConnectorFields = ({
connectors,
isEdit,
field,
hideConnectorServiceNowSir = false,
}: ConnectorsFieldProps) => {
const [{ connectorId }] = useFormData({ watch: ['connectorId'] });
const { setValue } = field;
const connector = getConnectorById(connectorId, connectors) ?? null;

let connector = getConnectorById(connectorId, connectors) ?? null;
if (
connector &&
hideConnectorServiceNowSir &&
connector.actionTypeId === ConnectorTypes.serviceNowSIR
) {
connector = null;
}
return (
<ConnectorFieldsForm
connector={connector}
Expand Down Expand Up @@ -76,6 +89,7 @@ const ConnectorComponent: React.FC<Props> = ({ hideConnectorServiceNowSir = fals
component={ConnectorFields}
componentProps={{
connectors,
hideConnectorServiceNowSir,
isEdit: true,
}}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { usePostPushToService } from '../../containers/use_post_push_to_service'
import { useConnectors } from '../../containers/configure/use_connectors';
import { useCaseConfigure } from '../../containers/configure/use_configure';
import { Case } from '../../containers/types';
import { CaseType } from '../../../../../case/common/api';
import { CaseType, ConnectorTypes } from '../../../../../case/common/api';

const initialCaseValue: FormProps = {
description: '',
Expand All @@ -31,29 +31,40 @@ const initialCaseValue: FormProps = {
};

interface Props {
afterCaseCreated?: (theCase: Case) => Promise<void>;
caseType?: CaseType;
hideConnectorServiceNowSir?: boolean;
onSuccess?: (theCase: Case) => Promise<void>;
afterCaseCreated?: (theCase: Case) => Promise<void>;
}

export const FormContext: React.FC<Props> = ({
afterCaseCreated,
caseType = CaseType.individual,
children,
hideConnectorServiceNowSir,
onSuccess,
afterCaseCreated,
}) => {
const { connectors } = useConnectors();
const { connector: configurationConnector } = useCaseConfigure();
const { postCase } = usePostCase();
const { pushCaseToExternalService } = usePostPushToService();

const connectorId = useMemo(
() =>
connectors.some((connector) => connector.id === configurationConnector.id)
? configurationConnector.id
: 'none',
[configurationConnector.id, connectors]
);
const connectorId = useMemo(() => {
if (
hideConnectorServiceNowSir &&
configurationConnector.type === ConnectorTypes.serviceNowSIR
) {
return 'none';
}
return connectors.some((connector) => connector.id === configurationConnector.id)
? configurationConnector.id
: 'none';
}, [
configurationConnector.id,
configurationConnector.type,
connectors,
hideConnectorServiceNowSir,
]);

const submitCase = useCallback(
async (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ const CreateModalComponent: React.FC<CreateCaseModalProps> = ({
<EuiModalHeaderTitle>{i18n.CREATE_TITLE}</EuiModalHeaderTitle>
</EuiModalHeader>
<EuiModalBody>
<FormContext caseType={caseType} onSuccess={onSuccess}>
<FormContext
hideConnectorServiceNowSir={hideConnectorServiceNowSir}
caseType={caseType}
onSuccess={onSuccess}
>
<CreateCaseForm
withSteps={false}
hideConnectorServiceNowSir={hideConnectorServiceNowSir}
Expand Down

0 comments on commit 77bad4e

Please sign in to comment.