/**
 * 微信订阅消息授权工具
 * 用于在抽奖前请求用户授权接收开奖通知
 */

// 抽奖结果通知模板 ID
const LOTTERY_RESULT_TEMPLATE_ID = 'O2eqJQD3pn-vQ6g2z9DWzINVwOmPoz8yW-172J_YcpI'

/**
 * 请求用户订阅抽奖结果通知
 * @returns {Promise<object>} 订阅结果
 */
export function requestLotterySubscription() {
    return new Promise((resolve) => {
        // #ifdef MP-WEIXIN
        wx.requestSubscribeMessage({
            tmplIds: [LOTTERY_RESULT_TEMPLATE_ID],
            success(res) {
                console.log('订阅消息授权结果:', res)
                resolve({
                    success: true,
                    result: res,
                    // 检查用户是否接受了订阅
                    accepted: res[LOTTERY_RESULT_TEMPLATE_ID] === 'accept'
                })
            },
            fail(err) {
                console.warn('订阅消息授权失败:', err)
                // 即使授权失败也不阻止用户参与抽奖
                resolve({
                    success: false,
                    error: err,
                    accepted: false
                })
            }
        })
        // #endif

        // #ifndef MP-WEIXIN
        // 非微信小程序环境，直接返回成功
        resolve({
            success: true,
            accepted: false,
            message: '非微信小程序环境，跳过订阅授权'
        })
        // #endif
    })
}

/**
 * 批量请求多个模板的订阅授权
 * @param {string[]} templateIds 模板ID数组
 * @returns {Promise<object>} 订阅结果
 */
export function requestSubscriptions(templateIds) {
    return new Promise((resolve) => {
        // #ifdef MP-WEIXIN
        wx.requestSubscribeMessage({
            tmplIds: templateIds,
            success(res) {
                console.log('订阅消息授权结果:', res)
                resolve({
                    success: true,
                    result: res
                })
            },
            fail(err) {
                console.warn('订阅消息授权失败:', err)
                resolve({
                    success: false,
                    error: err
                })
            }
        })
        // #endif

        // #ifndef MP-WEIXIN
        resolve({
            success: true,
            message: '非微信小程序环境，跳过订阅授权'
        })
        // #endif
    })
}

export default {
    requestLotterySubscription,
    requestSubscriptions,
    LOTTERY_RESULT_TEMPLATE_ID
}
