export const ECOMMERCE_SUPPORTED_IMAGE_TYPES = new Set(["image/jpeg", "image/png", "image/webp", "image/gif"]);
export const ECOMMERCE_MAX_IMAGE_BYTES = 10 * 1024 * 1024;

export interface EcommerceImageValidationResult {
  accepted: File[];
  rejected: Array<{ name: string; reason: string }>;
}

export function validateEcommerceImageFiles(files: File[]): EcommerceImageValidationResult {
  const accepted: File[] = [];
  const rejected: EcommerceImageValidationResult["rejected"] = [];

  files.forEach((file) => {
    if (!ECOMMERCE_SUPPORTED_IMAGE_TYPES.has(file.type)) {
      rejected.push({ name: file.name, reason: "不支持的图片格式" });
      return;
    }
    if (file.size > ECOMMERCE_MAX_IMAGE_BYTES) {
      rejected.push({ name: file.name, reason: "图片超过 10MB" });
      return;
    }
    accepted.push(file);
  });

  return { accepted, rejected };
}

export function summarizeRejectedImages(rejected: EcommerceImageValidationResult["rejected"]): string {
  if (!rejected.length) return "";
  const first = rejected[0];
  const suffix = rejected.length > 1 ? ` 等 ${rejected.length} 个文件` : "";
  return `${first.name}${suffix} 已跳过：${first.reason}`;
}

export function normalizeEcommerceImageMime(type: string): string {
  return ECOMMERCE_SUPPORTED_IMAGE_TYPES.has(type) ? type : "image/png";
}
