#!/usr/bin/env bash
set -euo pipefail

ROOT="${1:-/home/itahukamedia/public_html/studio.itahukamedia.com/public}"
JS="$ROOT/assets/js/modules/coproducer.inline-main.js"

if [ ! -f "$JS" ]; then
  echo "File not found: $JS" >&2
  exit 1
fi

TS="$(date +%Y%m%d_%H%M%S)"
BAK="$JS.bak.$TS"
cp -a "$JS" "$BAK"
echo "Backup created: $BAK"

TMP="$(mktemp)"

awk '
BEGIN{
  inVideo=0
  inAudio=0
  replacedVideo=0
  replacedAudio=0
}

{
  line=$0

  # Detect video media block
  if (line ~ /^[[:space:]]*if[[:space:]]*\(item\.kind === "video"\)[[:space:]]*\{[[:space:]]*$/) {
    inVideo=1
  }

  # Detect audio media block
  if (line ~ /^[[:space:]]*if[[:space:]]*\(item\.kind === "audio"\)[[:space:]]*\{[[:space:]]*$/) {
    inAudio=1
  }

  # Force routing decision: preview silent, program audible
  if ((inVideo || inAudio) && line ~ /const hear = /) {
    sub(/const hear = .*/, "      const hear = !isPreview;")
  }

  # Replace video attach block
  if (inVideo && line ~ /^[[:space:]]*if[[:space:]]*\(hear\)[[:space:]]*\{[[:space:]]*$/ && replacedVideo==0) {
    print "      if (!isPreview){"
    print "        attachMediaAudio(v, item);"
    print "      }"
    replacedVideo=1

    # Skip old block body until matching closing brace
    depth=1
    while ((getline nextline) > 0) {
      opens=gsub(/\{/,"{",nextline)
      closes=gsub(/\}/,"}",nextline)
      depth += opens
      depth -= closes
      if (depth<=0) break
    }
    next
  }

  # Replace audio attach block
  if (inAudio && line ~ /^[[:space:]]*if[[:space:]]*\(hear\)[[:space:]]*\{[[:space:]]*$/ && replacedAudio==0) {
    print "      if (!isPreview){"
    print "        attachMediaAudio(a, item);"
    print "      }"
    replacedAudio=1

    # Skip old block body until matching closing brace
    depth=1
    while ((getline nextline) > 0) {
      opens=gsub(/\{/,"{",nextline)
      closes=gsub(/\}/,"}",nextline)
      depth += opens
      depth -= closes
      if (depth<=0) break
    }
    next
  }

  print line

  # End block detection
  if (inVideo && line ~ /^[[:space:]]*return;[[:space:]]*$/) {
    inVideo=0
  }
  if (inAudio && line ~ /^[[:space:]]*return;[[:space:]]*$/) {
    inAudio=0
  }
}
' "$JS" > "$TMP"

mv "$TMP" "$JS"
chmod 0644 "$JS"

echo
echo "Patch complete: $JS"
echo
echo "Verify these lines:"
grep -n 'const hear = !isPreview;' "$JS" || true
grep -n 'attachMediaAudio(v, item);' "$JS" || true
grep -n 'attachMediaAudio(a, item);' "$JS" || true
echo
echo "Syntax-ish check:"
php -l "$ROOT/coproducer.php" || true