import { extractSmartLinkUrl } from '@atlaskit/link-extractors';
import { fg } from '@atlaskit/platform-feature-flags';
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
import { ActionName } from '../../../constants';
import { getDefinitionId, getExtensionKey, getResourceType } from '../../../state/helpers';
import { canShowAction } from '../../../utils/actions/can-show-action';
import { getIsRovoChatEnabled } from '../../../utils/rovo';
import { CardAction } from '../../../view/Card/types';
var extractRovoChatAction = function extractRovoChatAction(_ref) {
  var _response$meta, _actionOptions$rovoCh;
  var actionOptions = _ref.actionOptions,
    appearance = _ref.appearance,
    id = _ref.id,
    product = _ref.product,
    response = _ref.response,
    rovoConfig = _ref.rovoConfig;
  if (!canShowAction(CardAction.RovoChatAction, actionOptions)) {
    return;
  }
  var isRovoChatEnabled = getIsRovoChatEnabled(rovoConfig);
  if (!isRovoChatEnabled) {
    return;
  }
  var supportsRovoActions = response === null || response === void 0 || (_response$meta = response.meta) === null || _response$meta === void 0 || (_response$meta = _response$meta.supportedFeature) === null || _response$meta === void 0 ? void 0 : _response$meta.includes('RovoActions');
  var isGoogleProvider = getExtensionKey(response) === 'google-object-provider';
  var is3PAuthRovoActionEnabled = isGoogleProvider && fg('platform_sl_3p_auth_rovo_action_kill_switch');
  var is3PInlinePostAuthActionsEnabled = supportsRovoActions && !isGoogleProvider && fg('rovogrowth-640-inline-action-nudge-fg') && expValEqualsNoExposure('rovogrowth-640-inline-action-nudge-exp', 'isEnabled', true);
  var is3PBlockPostAuthActionsEnabled = supportsRovoActions && fg('platform_sl_3p_auth_rovo_block_card_kill_switch');
  var isSupportedFeature = is3PInlinePostAuthActionsEnabled || is3PAuthRovoActionEnabled || is3PBlockPostAuthActionsEnabled;
  var isOptIn = (actionOptions === null || actionOptions === void 0 || (_actionOptions$rovoCh = actionOptions.rovoChatAction) === null || _actionOptions$rovoCh === void 0 ? void 0 : _actionOptions$rovoCh.optIn) === true;
  var url = extractSmartLinkUrl(response);
  return isSupportedFeature && isOptIn ? {
    invokeAction: {
      actionSubjectId: 'rovoChatPrompt',
      actionType: ActionName.RovoChatAction,
      definitionId: getDefinitionId(response),
      display: appearance,
      extensionKey: getExtensionKey(response),
      id: id,
      resourceType: getResourceType(response)
    },
    product: product,
    url: url
  } : undefined;
};
export default extractRovoChatAction;