import analytics from './index'
import { USER_EVENTS, CONTENT_EVENTS } from '../../constants/events'

/**
 * 用户行为追踪器
 */
class UserTracker {
  /**
   * 用户登录
   * @param {object} params - 登录参数
   */
  onLogin(params) {
    const {
      userId,
      method = 'wechat',
      success = true,
      errorCode = '',
      errorMessage = '',
      userInfo = {},
    } = params

    // 上报登录事件
    analytics.track(USER_EVENTS.USER_LOGIN, {
      login_method: method,
      login_success: success,
      login_error_code: errorCode,
      login_error_message: errorMessage,
    })

    // 如果登录成功，设置用户标识
    if (success && userId) {
      analytics.identify(userId, {
        nickname: userInfo.nickname,
        avatar_url: userInfo.avatarUrl,
        gender: userInfo.gender,
        city: userInfo.city,
        province: userInfo.province,
        country: userInfo.country,
      })

      // 设置仅首次生效的属性
      analytics.setUserPropertiesOnce({
        first_login_time: new Date().toISOString(),
        register_source: method,
      })
    }
  }

  /**
   * 用户登出
   */
  onLogout() {
    analytics.track(USER_EVENTS.USER_LOGOUT, {})
    analytics.reset()
  }

  /**
   * 微信授权
   * @param {object} params - 授权参数
   */
  onWechatAuth(params) {
    const {
      scope = 'userInfo',
      success = true,
      errorCode = '',
    } = params

    analytics.track(USER_EVENTS.WECHAT_AUTH, {
      auth_scope: scope,
      auth_success: success,
      auth_error_code: errorCode,
    })
  }

  /**
   * 内容收藏
   * @param {object} content - 内容信息
   */
  onFavorite(content) {
    analytics.track(CONTENT_EVENTS.CONTENT_FAVORITED, {
      content_id: content.id,
      content_type: content.type || 'news',
      content_title: content.title,
      content_category: content.category || '',
    })

    // 更新用户收藏计数
    analytics.setUserProperties({
      last_favorite_time: new Date().toISOString(),
    })
  }

  /**
   * 取消收藏
   * @param {object} content - 内容信息
   */
  onUnfavorite(content) {
    analytics.track(CONTENT_EVENTS.CONTENT_UNFAVORITED, {
      content_id: content.id,
      content_type: content.type || 'news',
      content_title: content.title,
    })
  }

  /**
   * 内容分享
   * @param {object} params - 分享参数
   */
  onShare(params) {
    const {
      content,
      channel = 'wechat_friend',
      success = true,
    } = params

    analytics.track(CONTENT_EVENTS.CONTENT_SHARED, {
      content_id: content.id,
      content_type: content.type || 'news',
      content_title: content.title,
      share_channel: channel,
      share_success: success,
    })
  }

  /**
   * 内容点赞
   * @param {object} content - 内容信息
   * @param {boolean} isLike - 是否点赞（false为取消）
   */
  onLike(content, isLike = true) {
    analytics.track(CONTENT_EVENTS.CONTENT_LIKED, {
      content_id: content.id,
      content_type: content.type || 'news',
      content_title: content.title,
      is_like: isLike,
    })
  }
}

// 导出单例
export default new UserTracker()