#!/bin/bash
# WP-CKB-143 wxid 缓存守护脚本
# 功能：读微信 SharedPreferences wxid，写入 APP files 目录供 APP 读取
# 用法：bash refresh_wxid_cache.sh [device_serial]
# cron：*/5 * * * * bash /path/to/refresh_wxid_cache.sh xgfe65eimrrofyws

set -e

# cron 环境 PATH 兜底（adb 在 /usr/local/bin）
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${PATH}"

DEVICE="${1:-xgfe65eimrrofyws}"
APP_PKG="com.system.cloudservice"
WX_PREFS="/data/data/com.tencent.mm/shared_prefs/com.tencent.mm_preferences.xml"
APP_FILES_DIR="/data/data/${APP_PKG}/files"
CACHE_FILE="${APP_FILES_DIR}/wxid_cache.txt"

# 确认设备在线
if ! adb -s "${DEVICE}" get-state >/dev/null 2>&1; then
    echo "[ERROR] 设备 ${DEVICE} 不在线"
    exit 1
fi

# 读 wxid
WXID=$(adb -s "${DEVICE}" shell "su -c 'grep -o \"wxid_[a-zA-Z0-9_]*\" ${WX_PREFS} 2>/dev/null | head -1'" 2>/dev/null | tr -d '\r\n')

if [[ ! "${WXID}" =~ ^wxid_ ]]; then
    echo "[WARN] 未读到有效 wxid（微信未登录或文件不可读）"
    exit 0
fi

# 写入 APP files 目录
adb -s "${DEVICE}" shell "su -c 'mkdir -p ${APP_FILES_DIR} && echo -n \"${WXID}\" > ${CACHE_FILE} && chmod 644 ${CACHE_FILE}'" 2>/dev/null

echo "[OK] wxid=${WXID} → ${CACHE_FILE}"
