#!/bin/bash
# Актуализация локальной копии telegram-web-app.js
# Крон: 0 */6 * * * /var/www/kadrum.online/public/scripts/update_tg_webapp.sh

TARGET="/var/www/kadrum.online/public/apps/kadrum/landing/assets/telegram-web-app.js"
URL="https://telegram.org/js/telegram-web-app.js"
TMP="/var/www/kadrum.online/public/apps/kadrum/landing/assets/.telegram-web-app.js.tmp"
MIN_SIZE=100000  # Минимальный размер в байтах (сейчас файл ~115КБ)

# Скачиваем во временный файл, с ретраями
curl -sL --retry 3 --retry-delay 5 --max-time 60 --ipv4 "$URL" -o "$TMP" 2>/dev/null
CURL_EXIT=$?

if [ $CURL_EXIT -ne 0 ]; then
    echo "[$(date)] FAIL: curl завершился с кодом $CURL_EXIT"
    rm -f "$TMP"
    exit 1
fi

# Проверяем, что файл непустой
if [ ! -s "$TMP" ]; then
    echo "[$(date)] FAIL: скачанный файл пуст"
    rm -f "$TMP"
    exit 1
fi

# Проверяем минимальный размер (защита от обрезанной загрузки)
FILE_SIZE=$(wc -c < "$TMP")
if [ "$FILE_SIZE" -lt "$MIN_SIZE" ]; then
    echo "[$(date)] FAIL: файл слишком мал (${FILE_SIZE} байт, мин. ${MIN_SIZE}). Вероятно обрезан"
    rm -f "$TMP"
    exit 1
fi

# Проверяем, что это JavaScript, а не HTML-страница блокировки
if head -c 100 "$TMP" | grep -qi '<html'; then
    echo "[$(date)] FAIL: получена HTML-страница вместо JS (вероятно блокировка)"
    rm -f "$TMP"
    exit 1
fi

# Сравниваем с текущим файлом
if [ -f "$TARGET" ] && cmp -s "$TMP" "$TARGET"; then
    echo "[$(date)] OK: файл не изменился"
    rm -f "$TMP"
    exit 0
fi

# Атомарно заменяем: mv на одной ФС — мгновенная смена inode
mv "$TMP" "$TARGET"
chmod 644 "$TARGET"
echo "[$(date)] UPDATED: telegram-web-app.js обновлён (${FILE_SIZE} байт)"
