import React from 'react';

import { FirewallLabels, noop } from '@spinnaker/core';

import type { IAmazonServerGroupCommand } from '../../serverGroupConfiguration.service';

export interface IServerGroupSecurityGroupsRemovedProps {
  command?: IAmazonServerGroupCommand;
  removed?: string[];
  onClear?: () => void;
}

export class ServerGroupSecurityGroupsRemoved extends React.Component<IServerGroupSecurityGroupsRemovedProps> {
  public static defaultProps: Partial<IServerGroupSecurityGroupsRemovedProps> = {
    onClear: noop,
  };

  public render() {
    const { command, onClear, removed } = this.props;

    const dirtySecurityGroups = ((command && command.viewState.dirty.securityGroups) || []).concat(removed || []);

    if (dirtySecurityGroups.length === 0) {
      return null;
    }

    return (
      <div className="col-md-12">
        <div className="alert alert-warning">
          <p>
            <i className="fa fa-exclamation-triangle" />
            The following {FirewallLabels.get('firewalls')} could not be found in the selected account/region/VPC and
            were removed:
          </p>
          <ul>
            {dirtySecurityGroups.map((s) => (
              <li key={s}>{s}</li>
            ))}
          </ul>
          <p className="text-right">
            <a className="btn btn-sm btn-default dirty-flag-dismiss clickable" onClick={onClear}>
              Okay
            </a>
          </p>
        </div>
      </div>
    );
  }
}
