/**
 * @Description: 主题初始化
 * Aframe +  Cframe + CInframe
 *
 * 设置 初始化主题颜色 颜色
 *
 */
import store           from '../store';
import colors          from '@/assets/css/base/colors.scss';
import { getColorObj } from './common';

export function initThemeColor() {
    // 函数内部参数变量 用来存储当前项目数据变量
    let opt = getBaseThemeColor();

    // 判定 localstorage 主题颜色
    const colorConfig = {
        text:     'themeColor',
        attrText: 'data-theme',
    };
    /**
     * 读取本地配置 如果存在执行本地配置 否则执行默认配置
     */

    if (checkLocalKeyGetDataOrFalse(colorConfig.text)) {
        store.commit('SETTHEMECOLOROBJ', getColorObj(colors, checkLocalKeyGetDataOrFalse(colorConfig.text)));
        handleLocalstorgeData(colorConfig.text, colorConfig.attrText, checkLocalKeyGetDataOrFalse(colorConfig.text));
        return;
    }

    // 缓存中未找到用户级别配置时走默认项目配置
    store.commit('SETTHEMECOLOROBJ', getColorObj(colors, getBaseThemeColor().value));
    handleLocalstorgeData(colorConfig.text, colorConfig.attrText, opt.value);
}


/**
 *  获取全局变量值：当前项目和主题
 * @returns {string}
 */
export function getBaseThemeColor() {
    /**
     * ## 项目管理对象
     * @description code: 项目识别唯一标识来自全局变量， value：使用主题风格
     * @type {{bp1: {code: string, value: string}, bp2: {code: string, value: string}}}
     */
    const baseProject = {
        bp1: {
            code:  'default',
            value: 'blue',
        },
    };

    // 根据全局环境变量配置 主题风格切换
    return baseProject.bp1;
}


/**
 * 获取本地 初始化主题设置主题设置
 * @param text: configThemeObg 的 key值
 * @param attrText: 设置dom属性
 * @param value: 当有数据时 设置本地化，无数据时获取本地化值
 */
export function handleLocalstorgeData(text, attrText, value) {
    let localKey = getlocalKey();

    if (!value && checkLocalKeyGetDataOrFalse(text)) {
        // 无值 并且本地存储有数据时 读取数据
        let data = JSON.parse(window.localStorage.getItem(localKey));
        window.document.documentElement.setAttribute(attrText, data[`${text}`]);
        return data[`${text}`];
    } else {
        // 有值时 更新本地存储数据 并读取数据
        if (window.localStorage.getItem(localKey)) {
            let c = JSON.parse(window.localStorage.getItem(localKey));
            c[`${text}`] = value;
            window.localStorage.setItem(localKey, JSON.stringify(c));

        } else {
            const c = {};
            c[`${text}`] = value;
            window.localStorage.setItem(localKey, JSON.stringify(c));

        }
        window.document.documentElement.setAttribute(attrText, value);

        return value;
    }
}

export function checkLocalKeyGetDataOrFalse(objKey) {
    let localKey = getlocalKey();

    if (window.localStorage.getItem(localKey) && JSON.parse(window.localStorage.getItem(localKey)) !== null) {
        let c = JSON.parse(window.localStorage.getItem(localKey));
        if (!!c[`${objKey}`]) {

            return c[`${objKey}`];
        } else {
            return false;
        }
    } else {
        return false;
    }
}

function getlocalKey() {
    // mta-saas-config + mta-qinggu-config
    let localKey = null;
    localKey = 'mta-default-config';
    return localKey;
}
