// utils/imAuth/jianquanxian.js
// 原：require('./laobanjianquan')
// 改：
const { laobanjianquan } = require('./laobanjianquan.js');
const { dashoujianquan } = require('./dashoujianquan.js');

/**
 * IM 长连接权限统一入口
 * 按顺序进行：
 * 1. 检查本地 token/uid 是否存在
 * 2. 若不存在，强制断开已有连接，弹窗提示未登录（强制阅读 2 秒）
 * 3. 若存在，根据当前角色调用具体的鉴权模块
 * 
 * @param {Object} app 全局 App 实例
 * @returns {Promise<{ allowed: boolean, reason?: string }>}
 */
async function jianquanxian(app) {
  // 1. 检测登录态（用 uid 或 token）
  const token = wx.getStorageSync('token') || wx.getStorageSync('uid');
  if (!token) {
    // 没登录：先强制断开（如果已连接）
    await app.disconnectGoEasy();
    // 弹窗提示，强制阅读 2 秒
    wx.showToast({
      title: '您当前处于未登录状态，消息功能暂不可用',
      icon: 'none',
      duration: 2000,
      mask: true
    });
    // 等待提示结束，确保用户看到
    await new Promise(resolve => setTimeout(resolve, 2100));
    return { allowed: false, reason: '未登录' };
  }

  // 2. 获取当前选中的角色
  const role = app.globalData.currentRole || 'normal';

  // 3. 根据角色分发到具体鉴权模块
  switch (role) {
    case 'normal':   // 点单老板
      return laobanjianquan(app);

    case 'dashou':   // 打手
      return dashoujianquan(app);

    // 其他角色暂未细分，统一放行（后续可新增对应文件）
    case 'shangjia':
    case 'guanshi':
    case 'zuzhang':
    case 'kaoheguan':    
      return { allowed: true };

    default:
      return { allowed: false, reason: '未知角色' };
  }
}

module.exports = { jianquanxian };