import { Api } from './api.js';

export const ThemeManager = {
    init() {
        // 1. 우선순위: DB저장값(ServerData) > 로컬스토리지 > 시스템설정 > 기본값
        let theme = 'default';

        if (window.serverData && window.serverData.userTheme) {
            theme = window.serverData.userTheme; // 로그인 유저
        } else {
            const savedTheme = localStorage.getItem('user_theme');
            if (savedTheme) {
                theme = savedTheme;
            } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
                theme = 'dark'; // 시스템이 다크모드면 자동 적용
            }
        }

        this.applyTheme(theme);
    },

    applyTheme(themeName) {
        // HTML 태그에 data-theme 속성 부여
        document.documentElement.setAttribute('data-theme', themeName);
        localStorage.setItem('user_theme', themeName);
    },

    async setTheme(themeName) {
        this.applyTheme(themeName);

        // 로그인 상태라면 서버에도 저장
        if (window.currentUser && window.currentUser.isLoggedIn) {
            try {
                await Api.request('/api/user/theme', 'POST', { theme: themeName });
            } catch (e) {
                console.error("테마 서버 저장 실패", e);
            }
        }
    }
};