export default function ActionPerformerRows()

in hasher-matcher-actioner/webapp/src/components/settings/ActionPerformer/ActionPerformerRows.tsx [21:113]


export default function ActionPerformerRows({
  action,
  saveAction,
  deleteAction,
  canNotDeleteOrUpdateName,
}: ActionPerformerRowsProps): JSX.Element {
  const [editing, setEditing] = useState(false);
  const newAction = {...action};
  const [updatedAction, setUpdatedAction] = useState(newAction);

  const confirmations = useContext(ConfirmationsContext);
  const showDeleteActionConfirmation = () => {
    confirmations.confirm({
      message: `Please confirm you want to delete the action named "${action.name}"`,
      ctaText: 'Yes. Delete this Action.',
      ctaVariant: 'danger',
      onCancel: () => undefined,
      onConfirm: () => deleteAction(action),
    });
  };

  const showUpdateActionConfirmation = () => {
    confirmations.confirm({
      message: `Please confirm you want to update the action named ${action.name}`,
      ctaVariant: 'primary',
      ctaText: 'Yes. Update this Action.',
      onCancel: () => undefined,
      onConfirm: () => {
        setEditing(false);
        saveAction(updatedAction);
      },
    });
  };

  const resetForm = () => {
    setUpdatedAction(action);
  };

  return (
    <>
      <tr hidden={editing}>
        <td>
          <Button
            className="mb-2 table-action-button"
            onClick={() => setEditing(true)}>
            <IonIcon icon={pencil} size="large" />
          </Button>
          <br />
          <Button
            variant="secondary"
            className="table-action-button"
            disabled={canNotDeleteOrUpdateName}
            onClick={showDeleteActionConfirmation}>
            <IonIcon icon={trashBin} size="large" color="white" />
          </Button>
          <br />
        </td>
        <ActionPerformerColumns
          action={updatedAction}
          editing={false}
          updateAction={setUpdatedAction}
          canNotDeleteOrUpdateName={canNotDeleteOrUpdateName}
        />
      </tr>
      <tr hidden={!editing}>
        <td>
          <Button
            variant="outline-primary"
            className="mb-2 table-action-button"
            onClick={showUpdateActionConfirmation}>
            <IonIcon icon={checkmark} size="large" color="white" />
          </Button>
          <br />
          <Button
            variant="outline-secondary"
            className="table-action-button"
            onClick={() => {
              resetForm();
              setEditing(false);
            }}>
            <IonIcon icon={close} size="large" />
          </Button>
        </td>
        <ActionPerformerColumns
          action={updatedAction}
          editing
          updateAction={setUpdatedAction}
          canNotDeleteOrUpdateName={canNotDeleteOrUpdateName}
        />
      </tr>
    </>
  );
}