import dayjs from 'dayjs'
import {useConfigStore} from "@/store";
// 拨打电话
import {i18n} from "@/locale";


// 缩略图
export function thumbnailImg(url: string, width = 400, height = 400) {
    if (!url || !url.startsWith("http") || !url.startsWith("https")) {
        return;
    }

    return url + `?x-oss-process=image/resize,m_fill,w_${width},h_${height}`;
}

// 转换webp
export function formatImgWebp(url: string, width = 400, height = 400) {
    if (!url || !url.startsWith("http") || !url.startsWith("https")) {
        return;
    }

    return url + `?x-oss-process=image/interlace,1/format,webp`;
}


// 拨打电话
export function callPhone(mobile: string) {
    console.log('mobile', mobile)
    if (!mobile) {
        return uni.showToast({
            title: i18n.global.t('common.prompt.phone-number-empty'),
            icon: 'none',
        })
    }

    // #ifdef APP-PLUS
    const configStore = useConfigStore()
    if (configStore.isIos) {
        uni.makePhoneCall({
            phoneNumber: mobile.trim(),
            fail(error) {
                console.error(error)
            },
        })
    } else {
        // 获取宿主上下文
        var main = plus.android.runtimeMainActivity();
        var Uri = plus.android.importClass("android.net.Uri");
        // 通过反射获取Android的Intent对象
        var Intent = plus.android.importClass("android.content.Intent");
        // 创建Intent，设置Action为ACTION_DIAL
        var intent = new Intent("android.intent.action.DIAL");
        // 设置要拨打的电话号码
        intent.setData(Uri.parse("tel:" + mobile));
        // 启动Intent
        main.startActivity(intent);
    }
    // #endif

    // #ifndef APP-PLUS
    uni.makePhoneCall({
        phoneNumber: mobile.trim(),
        fail(error) {
            console.error(error)
        },
    })
    // #endif
}

// 复制到剪切板
export function setClipboardData(data: string, showToast = true) {
    uni.setClipboardData({
        data,
        showToast: showToast,
        success: function () {
            uni.showToast({
                title: i18n.global.t('common.prompt.replication-successful'),
                icon: 'none',
            })
        },
    })
}


// 地图导航 latLng 例如：'31.1443439,121.808273'
export function navGoogleMap(latLng: string) {
    console.log('latLng', latLng)
    // 应用地址
    let url = ''
    // android 包名
    let pname = ''
    // ios id
    let appid: number
    if (plus.os.name == 'Android') {
        plus.nativeUI.actionSheet({
            title: i18n.global.t('common.select-maps-app'),
            cancel: i18n.global.t('common.cancel'),
            buttons: [{
                title: i18n.global.t('common.google-map')
            }]
        }, function (e) {
            switch (e.index) {
                case 1:
                    url = 'google.navigation:q=' + latLng
                    pname = 'com.android.vending'
            }
            if (url) {
                plus.runtime.openURL(url, function () {
                    plus.nativeUI.actionSheet({
                        title: i18n.global.t('common.app-marketplace'),
                        cancel: i18n.global.t('common.cancel'),
                        buttons: [{
                            title: i18n.global.t('common.app-marketplace')
                        }]
                    }, function ({
                                     index
                                 }) {
                        switch (index) {
                            case 1:
                                plus.runtime.openURL('market://details?id=' + pname,
                                    function () {
                                        plus.nativeUI.alert(i18n.global.t('common.prompt.installed-specified-app'));
                                    })
                        }
                    })
                });
            }
        });
    } else {
        plus.nativeUI.actionSheet({
            title: i18n.global.t('common.select-maps-app'),
            cancel: i18n.global.t('common.cancel'),
            buttons: [{
                title: i18n.global.t('common.google-map')
            }]
        }, function (e) {
            switch (e.index) {
                case 1:
                    url = 'comgooglemaps://?saddr=&daddr=' + latLng
                    appid = 585027354
            }
            if (url) {
                plus.runtime.launchApplication({action: url}, function (err) {
                    plus.nativeUI.actionSheet({
                        title: i18n.global.t('common.app-marketplace'),
                        cancel: i18n.global.t('common.cancel'),
                        buttons: [{
                            title: i18n.global.t('common.app-marketplace')
                        }]
                    }, function ({
                                     index
                                 }) {
                        switch (index) {
                            case 1:
                                plus.runtime.openURL(
                                    `itms-apps://itunes.apple.com/cn/app/id${appid}?mt=8')`,
                                    function () {
                                        plus.nativeUI.alert(i18n.global.t('common.prompt.installed-specified-app'));
                                    })
                        }
                    })
                });
            }
        });
    }
}

/**
 * 将时间戳格式化为 "MMM.DD YYYY" 格式（例如：Mar.06 2025）
 * @param {number} timestamp - 毫秒级时间戳
 * @returns {string} 格式化后的日期字符串
 */
export function formatTimestamp(timestamp) {
    return dayjs(Number(timestamp))
        .format('MMM.DD YYYY') // 核心格式化指令
        .replace(/\b([a-z])/, match => match.toUpperCase()); // 确保月份首字母大写
}

/**
 * 将时间戳格式化为带月份名称的格式（如：June 3, 2025 12:25）
 * 根据当前语言环境显示中文或英文月份
 * @param {number} timestamp - 时间戳（毫秒）
 * @returns {string} 格式化后的时间字符串
 */
export function formatTimestampWithMonthName(timestamp: number): string {
    const locale = uni.getLocale()
    const date = dayjs(Number(timestamp))

    // 设置对应的语言环境
    if (locale === 'zh-Hans') {
        date.locale('zh-cn')
        // 中文格式：2025年6月3日 12:25
        return date.format('YYYY年M月D日 HH:mm')
    } else {
        date.locale('en')
        // 英文格式：June 3, 2025 12:25
        return date.format('MMMM D, YYYY HH:mm')
    }
}

/**
 * 格式化时间戳为日期时间范围字符串
 * @param startTimestamp 开始时间戳（毫秒，可以是字符串或数字）
 * @param endTimestamp 结束时间戳（毫秒，可以是字符串或数字）
 * @returns 格式化后的日期时间范围字符串，例如："2025.06.12 17:30-18:00 星期四"
 */
export function formatDateTimeRange(startTimestamp: string | number, endTimestamp: string | number): string {
    const {locale} = i18n.global

    // 确保时间戳为数字类型
    const startTime = typeof startTimestamp === 'string' ? parseInt(startTimestamp) : startTimestamp
    const endTime = typeof endTimestamp === 'string' ? parseInt(endTimestamp) : endTimestamp

    const startDateTime = dayjs(startTime)
    const endDateTime = dayjs(endTime)

    // 格式化日期部分：YYYY.MM.DD
    const dateStr = startDateTime.format('YYYY.MM.DD')

    // 格式化时间范围
    const startTimeStr = startDateTime.format('HH:mm')
    const endTimeStr = endDateTime.format('HH:mm')
    const timeStr = `${startTimeStr}-${endTimeStr}`

    // 格式化星期
    let weekdayStr: string
    if (locale.value === 'zh-Hans') {
        const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
        weekdayStr = weekdays[startDateTime.day()]
    } else {
        weekdayStr = startDateTime.format('dddd')
    }

    return `${dateStr} ${timeStr} ${weekdayStr}`
}


