// @ts-nocheck
import { debugLog, traceLog } from './methods/common';

export const watchers = {
    inputMessage() {
        this.autoResizeInput();
    },
    messages: {
        deep: true,
        handler() {
            this.refreshBlankHeroState();
        }
    },
    currentConversationTitle(newVal, oldVal) {
        const target = (newVal && newVal.trim()) || '';
        if (this.suppressTitleTyping) {
            this.titleTypingText = target;
            this.titleTypingTarget = target;
            return;
        }
        const previous = (oldVal && oldVal.trim()) || (this.titleTypingText && this.titleTypingText.trim()) || '';
        const placeholderPrev = !previous || previous === '新对话';
        const placeholderTarget = !target || target === '新对话';
        const animate = placeholderPrev && !placeholderTarget; // 仅从空/占位切换到真实标题时动画
        this.startTitleTyping(target, { animate });
    },
    currentConversationId: {
        immediate: false,
        handler(newValue, oldValue) {
            debugLog('currentConversationId 变化', { oldValue, newValue, skipConversationHistoryReload: this.skipConversationHistoryReload });
            traceLog('watch:currentConversationId', {
                oldValue,
                newValue,
                skipConversationHistoryReload: this.skipConversationHistoryReload,
                historyLoading: this.historyLoading,
                historyLoadingFor: this.historyLoadingFor,
                historyLoadSeq: this.historyLoadSeq
            });
            this.refreshBlankHeroState();
            this.logMessageState('watch:currentConversationId', { oldValue, newValue, skipConversationHistoryReload: this.skipConversationHistoryReload });
            if (!newValue || typeof newValue !== 'string' || newValue.startsWith('temp_')) {
                return;
            }
            if (this.skipConversationHistoryReload) {
                this.skipConversationHistoryReload = false;
                return;
            }
            if (oldValue && newValue === oldValue) {
                return;
            }
            this.fetchAndDisplayHistory();
            this.fetchConversationTokenStatistics();
            this.updateCurrentContextTokens();
        }
    },
    fileTree: {
        immediate: true,
        handler(newValue) {
            this.monitorSyncDesktop(newValue);
        }
    }
};
