group.js 2.72 KB
import tim from 'tim'
import Helper from '../../utils/helper'

const groupModules = {
    state: {
        groupList: [],
        currentMemberList: [],
        currentUnMemberList: [],
        currentUnMemberMeta: {page: 1, size: 20, total: 0},
        createGroupModelVisible: false
    },
    getters: {
        hasGroupList: state => state.groupList.length > 0
    },
    mutations: {
        updateGroupList(state, groupList) {
            state.groupList = groupList
        },
        updateCreateGroupModelVisible(state, visible) {
            state.createGroupModelVisible = visible
        },
        updateCurrentMemberList(state, memberList) {
            state.currentMemberList = [...state.currentMemberList, ...memberList]
        },
        updateCurrentUnMemberList(state, memberList) {
            state.currentUnMemberList = [...state.currentUnMemberList, ...memberList]
        },
        updateCurrentUnMemberMeta(state, meta) {
            state.currentUnMemberMeta = meta
        },
        deleteGroupMember(state, userID) {
            state.currentMemberList = state.currentMemberList.filter((member) => member.userID !== userID)
        },
        deleteGroupMemberList(state, userIDList) {
            state.currentMemberList = state.currentMemberList.filter((member) => !userIDList.includes(member.userID))
        },
        resetCurrentMemberList(state) {
            state.currentMemberList = []
            state.currentUnMemberList = []
            state.currentUnMemberMeta = {page: 1, size: 20, total: 0}
        },
        reset(state) {
            Object.assign(state, {
                groupList: [],
                currentMemberList: [],
                currentUnMemberList: [],
                currentUnMemberMeta: {page: 1, size: 20, total: 0},
                createGroupModelVisible: false
            })
        }
    },
    actions: {
        updateGroupList(context, groupList) {
            context.commit('updateGroupList', groupList)
        },
        getGroupMemberList(context, groupID) {
            return tim.getGroupMemberList({
                groupID: groupID,
                offset: context.state.currentMemberList.length,
                count: 30
            }).then((imResponse) => {
                context.commit('updateCurrentMemberList', imResponse.data.memberList)
                return imResponse
            })
        },
        getGroupUnMemberList(context, groupID) {
            const {page, size} = context.state.currentUnMemberMeta
            Helper.groupMemberList(groupID, {page, size}).then(res => {
                context.commit('updateCurrentUnMemberList', res.data)
                context.commit('updateCurrentUnMemberMeta', res.meta)
            })
        }
    }
}

export default groupModules