/** Matches CreateReplyRequest: max 10240 KB per file */
export const ATTACHMENT_MAX_BYTES = 10 * 1024 * 1024;

export const ATTACHMENT_MAX_FILES = 5;

export const ATTACHMENT_ALLOWED_EXTENSIONS = [
  'jpg',
  'jpeg',
  'png',
  'gif',
  'webp',
  'pdf',
  'doc',
  'docx',
  'xls',
  'xlsx',
  'txt',
  'zip',
] as const;

export function validateAttachmentFiles(files: File[]): string | null {
  if (files.length > ATTACHMENT_MAX_FILES) {
    return `Maximum ${ATTACHMENT_MAX_FILES} files allowed`;
  }

  for (const file of files) {
    if (file.size > ATTACHMENT_MAX_BYTES) {
      return `"${file.name}" exceeds 10 MB limit`;
    }

    const ext = file.name.split('.').pop()?.toLowerCase() ?? '';
    if (!ATTACHMENT_ALLOWED_EXTENSIONS.includes(ext as (typeof ATTACHMENT_ALLOWED_EXTENSIONS)[number])) {
      return `"${file.name}" has an unsupported file type`;
    }
  }

  return null;
}
