import { domainUtils } from './util.domain.js';

function groupByDomain(options: any[], inDomains: string[]) {
  const matched = [];
  const notMatched = [];
  for (const item of options) {
    if (domainUtils.match(item.domain, inDomains)) {
      matched.push(item);
    } else {
      notMatched.push(item);
    }
  }
  return {
    matched,
    notMatched,
  };
}

function buildGroupOptions(options: any[], inDomains: string[]) {
  const grouped = groupByDomain(options, inDomains);
  const groupOptions = [];
  groupOptions.push({ value: 'matched', disabled: true, label: '----已匹配----' });
  if (grouped.matched.length === 0) {
    options.push({ value: '', disabled: true, label: '没有可以匹配的域名' });
  } else {
    for (const matched of grouped.matched) {
      groupOptions.push(matched);
    }
  }
  if (grouped.notMatched.length > 0) {
    groupOptions.push({ value: 'unmatched', disabled: true, label: '----未匹配----' });
    for (const notMatched of grouped.notMatched) {
      groupOptions.push(notMatched);
    }
  }
  return groupOptions;
}

export const optionsUtils = {
  groupByDomain,
  buildGroupOptions,
};
