# /opt/trueconf_bot/utils/states.py
import time
import config.config as config

user_states = {}
tc_bot = None  # Общая переменная для экземпляра бота

# --- Константы состояний ---
PHOTO_MODE = "PHOTO_MODE"
SD_MODE = "SD_MODE"
TRANSCRIPTION_MODE = "TRANSCRIPTION_MODE"  
SEARCH_MODE = "SEARCH_MODE"

def set_state(user_id, state):
    """Фиксирует новое состояние пользователя и обновляет метку времени активности"""
    user_states[user_id] = {
        "state": state,
        "last_active": time.time()
    }

def get_state(user_id):
    """
    Возвращает текущее состояние пользователя.
    Если время неактивности превысило лимит из config.py, сессия сбрасывается.
    """
    if user_id in user_states:
        session = user_states[user_id]
        
        # Динамически забираем значение таймаута из конфига (дефолт — 1800 сек / 30 мин)
        session_timeout = getattr(config, 'SESSION_TIMEOUT', 1800)
        
        # Проверяем, сколько секунд прошло с момента последнего сообщения
        if time.time() - session["last_active"] > session_timeout:
            # Время вышло! Аппаратно сносим сессию навигации
            del user_states[user_id]
            return None
        
        # Если время не вышло, обновляем таймер (пользователь проявил активность)
        session["last_active"] = time.time()
        return session["state"]
        
    return None

def clear_state(user_id):
    """Принудительно очищает состояние пользователя (выход в корень)"""
    if user_id in user_states:
        del user_states[user_id]