/**
 * Normalizes a WhatsApp ID by removing the domain part (@s.whatsapp.net, @g.us)
 * and any participant identifier (:12).
 * Handles potential variations like participant IDs in group messages.
 * 
 * Examples:
 * - '1234567890@s.whatsapp.net' -> '1234567890'
 * - '1234567890-1234567890@g.us' -> '1234567890-1234567890'
 * - '1234567890:12@s.whatsapp.net' -> '1234567890' (handles participant format)
 * - 'status_me@broadcast' -> 'status_me' (handles status broadcast)
 * 
 * @param id The raw WhatsApp ID string. Can be null or undefined.
 * @returns The normalized ID string, or null if the input is null/undefined or invalid after normalization.
 */
export function normalizeWhatsAppId(id: string | null | undefined): string | null {
  if (!id) {
    return null;
  }
  
  // Remove domain part (@s.whatsapp.net, @g.us, @broadcast etc.)
  let normalized = id.split('@')[0];
  
  // Handle potential participant format like '1234567890:12' by taking the part before ':'
  normalized = normalized.split(':')[0];
  
  // Basic validation: should contain alphanumeric characters, possibly hyphens for group IDs
  // Allows simple numbers, group IDs with hyphens, and potentially status_me
  if (!/^[a-zA-Z0-9_-]+$/.test(normalized)) {
    console.warn(`[normalizeWhatsAppId] Invalid characters found in WhatsApp ID after normalization: ${id} -> ${normalized}`);
    // Return null for clearly invalid IDs after normalization
    return null; 
  }

  // Prevent empty strings after normalization
  if (normalized.length === 0) {
    console.warn(`[normalizeWhatsAppId] Empty string resulted from normalization: ${id}`);
    return null;
  }
  
  return normalized;
}

/**
 * Checks if a given raw JID represents a group chat.
 * 
 * @param jid The raw JID string (e.g., '123-456@g.us').
 * @returns True if the JID ends with '@g.us', false otherwise.
 */
export function isGroupId(jid: string | null | undefined): boolean {
  return !!jid && jid.endsWith('@g.us');
}


