import AsyncStorage from '@react-native-async-storage/async-storage';

export type AiCoachChatMessage = {
  id: string;
  role: 'user' | 'assistant';
  content: string;
};

export type AiCoachSessionCache = {
  conversationId?: string;
  messages: AiCoachChatMessage[];
  updatedAt: number;
};

const STORAGE_KEY = '@ai_coach_session_v1';

export async function loadAiCoachSessionCache(): Promise<AiCoachSessionCache | null> {
  try {
    const s = await AsyncStorage.getItem(STORAGE_KEY);
    if (!s) return null;
    const obj = JSON.parse(s) as AiCoachSessionCache;
    if (!obj || !Array.isArray(obj.messages)) return null;
    return obj;
  } catch {
    return null;
  }
}

export async function saveAiCoachSessionCache(cache: AiCoachSessionCache): Promise<void> {
  try {
    const payload: AiCoachSessionCache = {
      conversationId: cache.conversationId,
      messages: cache.messages?.slice?.(-200) ?? [], // 限制最多缓存 200 条，避免无限增长
      updatedAt: Date.now(),
    };
    await AsyncStorage.setItem(STORAGE_KEY, JSON.stringify(payload));
  } catch { }
}

export async function clearAiCoachSessionCache(): Promise<void> {
  try {
    await AsyncStorage.removeItem(STORAGE_KEY);
  } catch { }
}


