export const _toNum = (value) => {
    return 1 * value;
}

export const enforceSingleCashtag = (text) => {
    const matches = text.match(/\$[A-Z]+/g);
    if (!matches) return text;

    const first = matches[0];
    return text.replace(/\$[A-Z]+/g, (m, i) => (i === 0 ? m : ""));
}
export const normalizeTagsSingleCashtag = (text) => {
    let count = 0;

    return text.replace(/\$([A-Z]+)/g, (match, token) => {
        count++;
        if (count === 1) return `$${token}`; // giữ 1 cashtag
        return `#${token}`; // còn lại chuyển thành hashtag
    });
}

export const _JsonParseSafe = (jsonString: string, defaultReturn = {}, allowThrowEx = false) => {
    try {
        return JSON.parse(jsonString);
    } catch (error) {
        if (allowThrowEx) {
            throw error;
        }
        console.error('_JsonParseSafe_error:', error.message);
        return defaultReturn;
    }
}

export const _JsonToStr = (jsonObj) => {
    return JSON.stringify(jsonObj, null, 2);
}
export const _shuffle = (array) => {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]]; // Swap elements
    }
    return array;
}

export function rand(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}

export function pick(arr) {
    return arr[rand(0, arr.length)];
}

export const _sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

export const getLanguageByJSTTime = () => {
    const now = new Date();
    // Lấy giờ hiện tại theo chuẩn UTC (0-23)
    const utcHour = now.getUTCHours();

    // Nhật 6h sáng (6:00) -> UTC là 21:00 (hôm trước)
    // Nhật 6h tối (18:00) -> UTC là 09:00 (sáng nay)

    // Nếu giờ UTC từ 21h đêm đến trước 9h sáng hôm sau
    if (utcHour >= 21 || utcHour < 9) {
        return 'ja';
    }

    return 'en';
}