/*
 * 会话列表
 */

import store from '../'

// 如果会话对象不是好友,需要更新好友名片
function updateSessionAccount (sessions) {
  let accountsNeedSearch = []
  sessions.forEach(item => {
    if (item.scene === 'p2p') {
      // 如果不存在缓存资料
      if (!store.state.userInfos[item.to]) {
        accountsNeedSearch.push(item.to)
      }
    }
  })
  if (accountsNeedSearch.length > 0) {
    store.dispatch('searchUsers', {
      accounts: accountsNeedSearch
    })
  }
}

// onSessions只在初始化完成后回调
export function onSessions (sessions) {
  updateSessionAccount(sessions)
  console.log("执行了...")
  store.commit('updateSessions', sessions)
}

export function onUpdateSession (session) {
  let sessions = [session]
  updateSessionAccount(sessions)
//console.log(session)
  store.commit('updateSessions', sessions)
}

export function deleteSession ({state, commit}, sessionId) {
  const nim = state.nim
  sessionId = sessionId || ''
  let scene = null
  let account = null
  if (/^p2p-/.test(sessionId)) {
    scene = 'p2p'
    account = sessionId.replace(/^p2p-/, '')
  } else if (/^team-/.test(sessionId)) {
    scene = 'team'
    account = sessionId.replace(/^team-/, '')
  }
  if (account && scene) {
    nim.deleteSession({
      scene,
      to: account,
      done: function deleteServerSessionDone (error, obj) {
        if (error) {
          alert(error)
          return
        }
        nim.deleteLocalSession({
          id: sessionId,
          done: function deleteLocalSessionDone (error, obj) {
            if (error) {
              alert(error)
              return
            }
            commit('deleteSessions', [sessionId])
          }
        })
      }
    })
  }
}

export function setCurrSession ({state, commit, dispatch}, sessionId) {
  const nim = state.nim
  if (sessionId) {
    commit('updateCurrSessionId', {
      type: 'init',
      sessionId
    })
    if (nim) {
      // 如果在聊天页面刷新,此时还没有nim实例,需要在onSessions里同步
      nim.setCurrSession(sessionId)
      commit('updateCurrSessionMsgs', {
        type: 'init',
        sessionId
      })
      // 发送已读回执
      dispatch('sendMsgReceipt')
    }
  }
}

export function resetCurrSession ({state, commit}) {
  const nim = state.nim
  console.log('重置了..................')
  nim.resetCurrSession()
  commit('updateCurrSessionMsgs', {
    type: 'destroy'
  })
}