const state = {
	list: [],
	unread_count: 0,
	top_unread_items: [],
	settings: {bg:""}
};

const mutations = {
	SET_LIST(state, list) {
		state.list = [...list];
	},
	SET_UNREAD_COUNT(state, count) {
		state.unread_count = count;
	},
	SET_TOP_UNREAD_ITEMS(state, data) {
		state.top_unread_items = [...data];
	},
	SET_SETTINGS(state, data) {
		state.settings = {...data};
	},
};

const actions = {
	async getFriendCircleList({	commit},params) {
		uni.$u.http.get('/friendcircle/list',params).then(res=>{
			commit("SET_LIST", res.data);
		}).catch(e=>{
			console.log(e);
			uni.$u.toast("获取信息失败");
		})
	},
	async getFriendCircleInfo({	commit,	state}) {
		uni.$u.http.get('/friendcircle/info').then(data=>{
			commit("SET_UNREAD_COUNT", data.unread_count);
			commit("SET_TOP_UNREAD_ITEMS", data.top_unread_items);
			commit("SET_SETTINGS", data.settings);
		}).catch(e=>{
			uni.$u.toast("获取信息失败");
		})
	},
	async comment({	commit,	state},params) {
		return new Promise((resolve,reject)=>{
			uni.$u.http.post('/friendcircle/comment',params).then(data=>{
				console.log("评论成功",data);
				const index = state.list.findIndex(i => i.id ==params.id);
				if(index>=0){
					state.list[index].comments.unshift(data);
					resolve(data);
				}else{
					reject(data);
				}
			}).catch(e=>{
				console.log("评论失败",e);
				uni.$u.toast("评论失败");
				reject(e);
			})
		})
	},
	async like({commit,	state},params) {
		return new Promise((resolve,reject)=>{
			uni.$u.http.post('/friendcircle/like',params).then(data=>{
				console.log("点赞成功",data);
				const index = state.list.findIndex(i => i.id ==params.id);
				
				//console.log("index",index);
				if(index>=0){
					if(data.is_liked){
						state.list[index].likes.push({
							user_id:params.user_id,
							nickname:params.nickname,
							avatar:params.avatar
						});
						state.list[index].is_liked = params.is_liked;
					}else{
						const likes = state.list[index].likes.filter((item)=>{
							item.user_id != params.user_id
						});
						state.list[index].likes = likes;
						state.list[index].is_liked = params.is_liked;
					}
					resolve(data);
				}else{
					reject(data);
				}
			}).catch(e=>{
				console.log("点赞失败",e);
				uni.$u.toast("点赞失败");
				reject(e);
			})
		})
	},
	async updateUnreadCount({commit,state},v) {
		commit("SET_UNREAD_COUNT", state.unread_count+v);
	},
	async deleteFriendCircleList({commit,state},params){
		uni.$u.http.post('/friendcircle/delete',params).then(res=>{
			var list = state.list.filter(item=>{
				return item.id!=params.id;
			})
			commit("SET_LIST", list);
		}).catch(e=>{
			console.log(e);
			uni.$u.toast(typeof e == Object ? e?.msg : e);
		})
	}
};

export default {
	namespaced: true,
	state,
	mutations,
	actions,
};