
/**
 * Convert File to Base64 (data URL)
 */
export const fileToBase64 = (file: File): Promise<string> => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()

    reader.onload = () => resolve(reader.result as string)
    reader.onerror = reject

    reader.readAsDataURL(file)
  })
}

/**
 * Remove data:image/...;base64, prefix
 */
export const stripBase64Prefix = (base64: string): string => {
  return base64.includes(",") ? base64.split(",")[1]  ?? base64 : base64
}

/**
 * Validate image before upload
 */
export const validateImage = (
  file: File,
  maxSizeMB = 2
): string | null => {
  const validTypes = ["image/jpeg", "image/png", "image/webp"]

  if (!validTypes.includes(file.type)) {
    return "Invalid image type"
  }

  if (file.size > maxSizeMB * 1024 * 1024) {
    return `Image must be smaller than ${maxSizeMB}MB`
  }

  return null
}
