#!/usr/bin/env bash
#
# Build signed Android release APK + AAB za **BiznisPortal Partner**.
# Forsira partner appId/appName + production URL (https://www.biznisportal.rs).
#
# Pre-uslovi (env var):
#   ANDROID_KEYSTORE_FILE     — apsolutna putanja do .keystore
#   ANDROID_KEYSTORE_PASSWORD — store password
#   ANDROID_KEY_ALIAS         — key alias
#   ANDROID_KEY_PASSWORD      — key password
#
# Pre prvog runa pokreni `bun run native:keystore` da generišeš keystore.
#
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/Android Studio.app/Contents/jbr/Contents/Home" \
    "/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 (ili Android Studio JBR)." >&2
  exit 1
fi
export JAVA_HOME="$JAVA_HOME_DETECTED"
export PATH="$JAVA_HOME/bin:$PATH"

# Production server URL — eksplicitno (ne uzimati dev override iz okruženja)
unset CAPACITOR_SERVER_URL
unset NEXT_PUBLIC_SITE_URL || true

# Partner identitet
export CAPACITOR_APP_ID="rs.biznisportal.partner"
export CAPACITOR_APP_NAME="BiznisPortal Partner"

ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-$HOME/Library/Android/sdk}}"
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
    echo "Postavi ANDROID_KEYSTORE_FILE / _PASSWORD / KEY_ALIAS / KEY_PASSWORD." >&2
    exit 1
  fi
done

if [[ ! -f "$ANDROID_KEYSTORE_FILE" ]]; then
  echo "Keystore fajl nije pronađen: $ANDROID_KEYSTORE_FILE" >&2
  echo "Generiši preko: bun run native:keystore" >&2
  exit 1
fi

# strings.xml — postavi partner app_name (Capacitor sync ne menja ovo)
cat > "$ANDROID_DIR/app/src/main/res/values/strings.xml" <<EOF
<?xml version='1.0' encoding='utf-8'?>
<resources>
    <string name="app_name">BiznisPortal Partner</string>
    <string name="title_activity_main">BiznisPortal Partner</string>
    <string name="package_name">rs.biznisportal.partner</string>
    <string name="custom_url_scheme">rs.biznisportal.partner</string>
</resources>
EOF

# Sync sa partner env (proizvodni URL je default)
cd "$ROOT_DIR"

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

echo "→ cap sync (partner, 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 (partner)"
cd "$ANDROID_DIR"
./gradlew clean assembleRelease bundleRelease

echo
echo "✓ BiznisPortal Partner 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."
