/**
 * Generates a unique random hash string.
 *
 * Uses `window.crypto` if available, otherwise falls back to Math.random.
 *
 * @param {number} [length=16] - Desired length of the hash
 * @returns {string}
 *
 * @example
 * createUniqueRandomHash(8) // "3f4a1b9c"
 */
export function createUniqueRandomHash(length = 16) {
  if (window.crypto && window.crypto.getRandomValues) {
    const array = new Uint8Array(length)
    window.crypto.getRandomValues(array)
    return Array.from(array)
      .map(byte => (byte % 16).toString(16))
      .join('')
  }

  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let hash = ''
  for (let i = 0; i < length; i++) {
    hash += chars.charAt(Math.floor(Math.random() * chars.length))
  }
  return hash
}



/**
 * Generates a short unique key string.
 * Uses `Math.random()` and base36 conversion.
 *
 * @returns {string} - A random alphanumeric string (length ~9)
 *
 * @example
 * const key = generateUniqueKey() // e.g., "5gk8q2m1a"
 */
export function generateUniqueKey() {
  return Math.random().toString(36).substring(2, 11)
}
