// 小程序配置文件 - 对应Fl`utter的app_config.dart

function mergeDeep(target = {}, source = {}) {
  const result = Array.isArray(target) ? target.slice() : Object.assign({}, target);
  if (!source || typeof source !== 'object') {
    return result;
  }

  Object.keys(source).forEach((key) => {
    const sourceValue = source[key];
    const targetValue = result[key];

    if (Array.isArray(sourceValue)) {
      result[key] = sourceValue.slice();
    } else if (
      sourceValue &&
      typeof sourceValue === 'object' &&
      !Array.isArray(sourceValue) &&
      targetValue &&
      typeof targetValue === 'object' &&
      !Array.isArray(targetValue)
    ) {
      result[key] = mergeDeep(targetValue, sourceValue);
    } else if (sourceValue !== undefined) {
      result[key] = sourceValue;
    }
  });

  return result;
}

let privateConfig = {};
try {
  // eslint-disable-next-line global-require, import/no-unresolved
  privateConfig = require('./config.private.js');
} catch (error) {
  const message = error && error.message ? String(error.message) : '';
  const isMissing = error?.code === 'MODULE_NOT_FOUND' || message.includes('not defined');
  if (!isMissing) {
    console.warn('加载私有配置失败:', error);
  } else if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') {
    console.info('未检测到 config.private.js，使用默认配置');
  }
}

const baseConfig = {
  // 应用信息
  appName: "FindMe",
  appVersion: "1.0.30", // 全局版本检查功能版本
 // API配置 - 使用正确的域名
  api: {
    baseUrl: "https://api.faxianwo.me",
    baseAmapUrl: "https://restapi.amap.com/v3",
    timeout: 15000
  },

  // scana配置
  scana: {
    textBusinessId: '2084889082944577806',
    imageBusinessId: '2084888991278039310',
    appId: '68ce8147f243650001486434',
    secretKey: 'd5b263da-99b8-11f0-97a4-fa163e917534'
  },

  // WebSocket配置 - 使用正确的WebSocket路径
  websocket: {
    baseUrl: "wss://api.faxianwo.me",
    url: "wss://api.faxianwo.me/api/v1/ws", // 🔥 恢复正确的WebSocket路径
    heartbeatInterval: 30000, // 30秒
    reconnectBaseDelay: 2000, // 重连基础延迟
    maxReconnectAttempts: 10 // 最大重连次数
  },

  // 高德地图配置
  // amapKey: '55e1d9a4c6c0f9fa4c75656fe3060641',
  // amapKey: '9212b693317725fca66ae697ec444fd5',
  amapKey: '9da0f2a1538b5857dba24ac9aa9f30cc',
  // amapKey: '97320669caa10f1f8168b0f1aecc2c08',

  // NIM配置
  nim: {
    appkey: '008ea0d044bd46e5b2281cb5fc3f627b',
    apiVersion: 'v2',
    enableV2CloudConversation: true
  },

  // 腾讯云COS配置 - 用于文件存储
  cos: {
    // 存储桶配置
    bucket: 'findme-1375214531',
    region: 'ap-guangzhou',
    // 临时密钥服务地址 (后端提供)
    stsUrl: '/api/v1/cos/sts',
    // 文件检查接口 (检查文件是否已存在)
    fileCheckUrl: '/api/v1/cos/file/check',
    // 文件记录保存接口
    fileRecordUrl: '/api/v1/cos/file/record',
    // 是否使用全球加速
    useAccelerate: false,
    // 分块上传配置
    sliceSize: 1024 * 1024 * 5, // 5MB 大于此大小使用分块上传
    chunkSize: 1024 * 1024 * 1, // 1MB 分块大小
    // 文件路径格式: user/{userId}/{fileType}/{timestamp}_{fileName}
    pathFormat: 'user/{userId}/{fileType}/{timestamp}_{fileName}'
  },

  // 网络超时设置 (保持向后兼容)
  networkTimeout: {
    request: 15000,
    upload: 60000,
    download: 60000
  },

  // 位置刷新间隔
  locationUpdateInterval: 30000, // 30秒

  // 文件大小限制 (小程序有自己的限制，这里作为前端验证)
  fileSizeLimit: {
    image: 10 * 1024 * 1024,    // 10MB
    video: 50 * 1024 * 1024,    // 50MB
    audio: 5 * 1024 * 1024,     // 5MB
    file: 50 * 1024 * 1024      // 50MB
  },

  // 支持的文件类型
  supportedFileTypes: {
    image: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp'],
    video: ['mp4', 'avi', 'wmv', 'mov', '3gp'],
    audio: ['mp3', 'wav', 'ogg', 'aac', 'm4a']
  },

  // 缓存设置
  cache: {
    maxAge: 7 * 24 * 60 * 60, // 7天
    resourceExpireTime: {
      image: 4 * 3600,     // 4小时
      video: 2 * 3600,     // 2小时
      audio: 2 * 3600,     // 2小时
      file: 1 * 3600,      // 1小时
      avatar: 24 * 3600    // 24小时
    },
    // 版本管理配置
    versionManagement: {
      enableAutoClear: true, // 版本更新时自动清理缓存
      periodicClearInterval: 7 * 24 * 60 * 60 * 1000, // 7天定期清理
      showUpdateNotification: true // 显示更新通知
    }
  },

  // API端点路径
  apiPaths: {
    // 身份验证相关（统一使用user路径）
    auth: {
      sendVerifyCode: '/api/v1/user/send-verify-code',
      login: '/api/v1/user/login',
      wechatLogin: '/api/v1/user/wechat-login',
      refresh: '/api/v1/auth/refresh',
      logout: '/api/v1/user/logout'
    },
    // 用户相关
    user: {
      profile: '/api/v1/user/profile',
      updateProfile: '/api/v1/user/profile',
      setting: '/api/v1/user/setting',
      bindPhone: '/api/v1/user/bind-phone',
      detectMerge: '/api/v1/user/detect-merge',
      mergeAccount: '/api/v1/user/merge-account'
    },

    // 位置相关
    location: {
      update: '/api/v1/location/update',
      getFriends: '/api/v1/location/friends',
      getStrangers: '/api/v1/location/strangers',
      privacy: '/api/v1/location/privacy'
    },

    // 聊天相关 - 根据接口文档修正API路径
    chat: {
      conversations: '/api/v1/chat/conversations',
      history: '/api/v1/chat/history', // 修正：使用正确的历史消息接口
      messages: '/api/v1/chat/history', // 保持向后兼容
      send: '/api/v1/chat/send',
      batchRead: '/api/v1/chat/batch-read', // 新增：批量已读
      markAllRead: '/api/v1/chat/mark-all-read', // 新增：全部已读
      unreadTotal: '/api/v1/chat/unread/total', // 新增：总未读数
      settings: '/api/v1/chat/settings', // 新增：聊天设置
      backup: '/api/v1/chat/backup', // 新增：备份
      restore: '/api/v1/chat/restore', // 新增：恢复
      danmaku: '/api/v1/chat/danmaku', // 新增：弹幕
      emoji: '/api/v1/chat/emoji/packages', // 新增：表情包
      syncPull: '/api/v1/chat/sync/pull', // 新增：同步拉取
      syncAck: '/api/v1/chat/sync/ack', // 新增：同步确认
      upload: '/api/v1/file/upload'
    },

    // 社交相关
    social: {
      friends: '/api/v1/social/friends',
      addFriend: '/api/v1/social/friend/add',
      acceptFriend: '/api/v1/social/friend/handle-request',
      deleteFriend: '/api/v1/social/friend',
      search: '/api/v1/social/search',
      friendRequests: '/api/v1/social/friend/requests',
      friendRequestsCount: '/api/v1/social/friend/requests/count',
      groups: '/api/v1/social/groups',
      groupsCount: '/api/v1/social/groups/count'
    },


  },

  // 小程序特有配置
  miniprogram: {
    // 页面路径
    pages: {
      splash: '/pages/splash/splash',
      login: '/pages/login/login',
      main: '/pages/main/main',
      map: '/pages/map/map',
      friends: '/pages/social/friends/friends',
      message: '/pages/message/message',
      profile: '/subpackages/profile/profile/profile'
    },

    // 主题配置
    theme: {
      primaryColor: '#3cc51f',
      backgroundColor: '#F5F5F5',
      textColor: '#333333',
      subTextColor: '#999999'
    },

    // 地图配置
    map: {
      defaultZoom: 16,
      minZoom: 3,
      maxZoom: 20,
      showLocation: true,
      showScale: true,
      showCompass: true
    }
  },

  // 调试配置
  debug: {
    enabled: true,
    showLog: true,
    mockData: false
  }
};

module.exports = mergeDeep(baseConfig, privateConfig);
