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

ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
ANDROID_DIR="$ROOT_DIR/android"

detect_java_home() {
  if [[ -n "${JAVA_HOME:-}" && -x "${JAVA_HOME}/bin/java" ]]; then
    printf '%s\n' "$JAVA_HOME"
    return 0
  fi

  local candidate
  for candidate in \
    "/Applications/SmartBox.app/Contents/runtime/Contents/Home" \
    "/Applications/Adobe Animate 2024/Adobe Animate 2024.app/Contents/jre/jdk-17.0.15.jdk/Contents/Home"
  do
    if [[ -x "$candidate/bin/java" ]]; then
      printf '%s\n' "$candidate"
      return 0
    fi
  done

  if /usr/libexec/java_home -v 21 >/dev/null 2>&1; then
    /usr/libexec/java_home -v 21
    return 0
  fi

  return 1
}

JAVA_HOME_DETECTED="$(detect_java_home || true)"
if [[ -z "$JAVA_HOME_DETECTED" ]]; then
  echo "Nije pronađen Java runtime. Potreban je JDK 21 za Android release build." >&2
  exit 1
fi

export JAVA_HOME="$JAVA_HOME_DETECTED"
export PATH="$JAVA_HOME/bin:$PATH"

ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-/opt/homebrew/share/android-commandlinetools}}"
export ANDROID_SDK_ROOT
export ANDROID_HOME="$ANDROID_SDK_ROOT"

for required_var in ANDROID_KEYSTORE_FILE ANDROID_KEYSTORE_PASSWORD ANDROID_KEY_ALIAS ANDROID_KEY_PASSWORD; do
  if [[ -z "${!required_var:-}" ]]; then
    echo "Nedostaje promenljiva okruženja: $required_var" >&2
    exit 1
  fi
done

if [[ ! -f "$ANDROID_KEYSTORE_FILE" ]]; then
  echo "Keystore fajl nije pronađen: $ANDROID_KEYSTORE_FILE" >&2
  exit 1
fi

# Production server URL — eksplicitno; ne uzimaj dev override iz okruženja
unset CAPACITOR_SERVER_URL
unset NEXT_PUBLIC_SITE_URL || true

# Consumer identitet (default iz capacitor.config.ts, ali eksplicitno
# postavljamo da bismo bili sigurni da se ne zalepi partner state ako se
# release-partner.sh pokrenuo pre toga)
export CAPACITOR_APP_ID="rs.biznisportal.app"
export CAPACITOR_APP_NAME="BiznisPortal"

# Prepiši strings.xml na consumer vrednosti — Capacitor sync ovo doduše
# regeneriše iz appName/appId, ali eksplicitan write garantuje pravu
# vrednost ako cap sync iz nekog razloga preskoči file.
mkdir -p "$ANDROID_DIR/app/src/main/res/values"
cat > "$ANDROID_DIR/app/src/main/res/values/strings.xml" <<EOF
<?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">BiznisPortal</string>
    <string name="title_activity_main">BiznisPortal</string>
    <string name="package_name">rs.biznisportal.app</string>
    <string name="custom_url_scheme">rs.biznisportal.app</string>
</resources>
EOF

cd "$ROOT_DIR"

echo "→ Primeni consumer launcher ikonu (orange na beloj)"
node scripts/native/apply-app-icons.mjs consumer

echo "→ cap sync (consumer, prod URL)"
bunx cap sync android

# local.properties za gradle
cat > "$ANDROID_DIR/local.properties" <<EOF
sdk.dir=$ANDROID_SDK_ROOT
EOF

echo "→ Gradle assembleRelease + bundleRelease (consumer)"
cd "$ANDROID_DIR"
./gradlew clean assembleRelease bundleRelease

echo
echo "✓ BiznisPortal release artefakti:"
echo "  APK: $ANDROID_DIR/app/build/outputs/apk/release/app-release.apk"
echo "  AAB: $ANDROID_DIR/app/build/outputs/bundle/release/app-release.aab"
echo
echo "Upload .aab na Play Console za Internal/Production testing."
