123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- import {createStore} from "vuex";
- import {setLocalStorage, getLocalStorage} from "../utils";
- import {Obj, StrNumObj} from "../interface";
- import router from "../router"
- import {logout} from "../api";
- interface State {
- userInfo: StrNumObj,
- chatUserInfo: Obj,
- isShowChat: boolean,
- isShowUserInfo: boolean,
- isShowGroupInfo: boolean,
- isShowRight: boolean,
- isSearching: boolean,
- userList: any[],
- }
- export default createStore({
- state: {
- userInfo: getLocalStorage('userInfo') || {}, //自己的信息
- chatUserInfo: {
- friendId: 0,
- friendName: '',
- id: 0,
- isGroup: 0,
- noReadNum: 0,
- userId: 0,
- username: '',
- nickname: '',
- email: '',
- }, //当前聊天用户的信息
- isShowChat: false,
- isShowUserInfo: false,
- isShowGroupInfo: false,
- isShowRight: true,
- isSearching: false,
- userList: [],
- } as State,
- mutations: {
- logout() {
- setLocalStorage('userInfo', {})
- router.push('/')
- },
- setUserInfo(state, data) {
- state.userInfo = data
- setLocalStorage('userInfo', data)
- },
- updateUserInfo(state, obj) {
- state.userInfo = {...state.userInfo, ...obj}
- setLocalStorage('userInfo', state.userInfo)
- },
- setUserList(state, data) {
- state.userList = data
- },
- setChatUserInfo(state, data) {
- state.chatUserInfo = data
- },
- setIsShowChat(state, status) {
- state.isShowChat = status
- },
- setIsShowUserInfo(state, status) {
- state.isShowUserInfo = status
- },
- setIsShowGroupInfo(state, status) {
- state.isShowGroupInfo = status
- },
- setIsSearching(state, status) {
- state.isSearching = status
- },
- setIsShowRight(state, status) {
- state.isShowRight = status
- },
- setNotReadMessage(state, id) {
- state.userList.forEach((item: Obj) => {
- if (id === item.friendId) {
- item.noReadNum++;
- }
- })
- },
- // 把有未读消息的好友移到上面
- hasNotReadMsgUserSort(state) {
- const userList: Obj[] = state.userList.filter(item => item.noReadNum > 0)
- state.userList = Array.from(new Set([...userList, ...state.userList]))
- },
- // 正在聊天的好友移到上面
- chatUserSort(state, obj: Obj) {
- const i = state.userList.findIndex(item => item === obj)
- state.userList.splice(i, 1)
- state.userList.unshift(obj)
- },
- },
- actions: {
- async logout({commit}) {
- await logout()
- commit('logout')
- }
- },
- modules: {}
- });
|