import Vue from 'vue'
import Vuex from 'vuex'
import tim from '../commen/tim/tim'
Vue.use(Vuex)
const store=new Vuex.Store({
	state:{
		articleList:[],
		landParam:{
			page:'',
			per_page:15,
			province:'',
			city:'',
			cityTxt:'定位中',
			keyword:'',
			star:'',
			starName:'星级',
			longitude:'',
			latitude:''
		},
		noReadNum:0,
		attrVal:[],//detailAttr里的valindex [0,0]
		attrTxt:'请选择商品规格尺寸',
		refreshStory:false,
		isLogin:false,
		userinfo:uni.getStorageSync('userinfo')?JSON.parse(uni.getStorageSync('userinfo')):{},
		isSDKReady: false ,// TIM SDK 是否 ready
		conversationActive:{},	//聊天进行中的会话
		toUserId:'',			//聊天对象id
		conversationList:[],		//会话列表
		currentMessageList:[],			//消息列表
	},
	mutations:{
		setArticleList(state,data){
			state.articleList = data
		},
		setRefreshStory(state,data){
			state.refreshStory = data
		},
		defaultRefreshStory(state){
			state.refreshStory = false
		},
		setLandParam(state,data){
			state.landParam = data
		},
		defaultLandParam(){
			state.landParam = {
				province:'',
				city:'',
				keyword:'',
				star:'',
				longitude:'',
				latitude:''
			}
		},
		setNoReadNum(state,data){
			state.noReadNum=data.noReadNum
		},
		setAttr(state,data){
			state.attrVal=data.attrVal
			state.attrTxt=data.attrTxt
		},
		defaultAttr(state){
			state.attrVal=[]
			state.attrTxt='请选择商品规格尺寸'
		},
		login(state,data){
			state.userinfo=data;
			uni.setStorageSync('userinfo',JSON.stringify(data))
		},
		logout(state){
			state.userinfo=[
				
			];
			uni.setStorageSync('userinfo','')
			uni.setStorageSync('token','')
		},
		setHead(state,data){
			state.userinfo.image=data;
			uni.setStorageSync('userinfo',JSON.stringify(state))
		},
		setNickname(state,data){
			state.userinfo.nickname=data;
			uni.setStorageSync('userinfo',JSON.stringify(state))
		},
		//更新登录状态
		toggleIsLogin(state, isLogin) {
		  state.isLogin = typeof isLogin === 'undefined' ? !state.isLogin : isLogin
		},
		//更新TIMSDK状态
		toggleIsSDKReady(state, isSDKReady) {
		  state.isSDKReady = typeof isSDKReady === 'undefined' ? !state.isSDKReady : isSDKReady
		},
		//退出登录重置状态
		reset(state) {
			state.isLogin = false
			state.isSDKReady = false
		},
		//选择好友聊天--创建会话/拼接会话id
		createConversationActive(state,toUserId){
			state.conversationActive.conversationID = 'C2C'+toUserId
			state.toUserId = toUserId
			state.currentMessageList = []
		},
		//选择已有会话聊天--更新选中会话详情
		updateConversationActive(state,conversationItem){
			state.conversationActive = Object.assign({}, conversationItem.conversation);
			state.toUserId = conversationItem.user.userId
			state.currentMessageList = []
		},
		//更新会话列表
		updateConversationList(state,newConversationList){
			state.conversationList = newConversationList
		},
		/**
		 * 将消息插入当前会话列表
		 * 调用时机:收/发消息事件触发时
		 * @param {Object} state
		 * @param {Message[]|Message} data
		 * @returns
		 */
		pushCurrentMessageList(state, data) {
		  // 还没当前会话,则跳过
		  if (Array.isArray(data)) {
		    // 筛选出当前会话的消息
		    const result = data.filter(item => item.conversationID === state.conversationActive.conversationID)
		    state.currentMessageList = [...state.currentMessageList, ...result]
		  } else if (data.conversationID === state.conversationActive.conversationID) {
		    state.currentMessageList = [...state.currentMessageList, data]
		  }
		},
		/**
		 * 滑到顶部请求更多的历史消息
		 * */
		unshiftCurrentMessageList(state,data){
			if(data && state.currentMessageList.length > 1){
				state.currentMessageList = [...data,...state.currentMessageList]
			}
		}
	}
})
export default store;